前言
在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接) ,然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击也就完成了。所以CSRF攻击也被称为为"one click"攻击。
利用burp生成POC验证CSRF,这里我们用到pikachu漏洞平台来演示。
CSRF(GET)
我们先登录进去,然后修改个人信息抓包。
修改成功!
CSRF(POST)
同样我们先登录进去,然后修改个人信息抓包。
网上很多利用这种方式来自动提交,但是不知为什么我设置了也没什么用,还是需要自己去手动提交。
找到一个解决办法就是将:
<script>
document.forms[0].submit();
</script>
替换为:
<script>
window.onload = function() {
document.getElementById("postsubmit").click();
}
</script>
然后就可以自动提交啦! 可以在POC页面去修改。我们更改了之后,先点击regenerate在点击test in browser,然后复制其中的URL,然后去我们的浏览器中去访问。
默认Referer头存在导致CSRF攻击
我们用到另一个靶场来演示:https://portswigger.net/web-security/csrf/lab-referer-validation-depends-on-header-being-presentReferer是HTTP请求header的一部分,当浏览器(或者模拟浏览器行为)向web 服务器发送请求的时候,头信息里有包含 Referer 。 比如我在www.google.com里有一个www.baidu.com链接,那么点击这个www.baidu.com,它的header 信息里就有:Referer=http://www.google.com它就是表示一个来源。Referer的作用:防盗链、防止恶意请求。 由于它会显示当前文档的来源文档的URL,所以程序可以通过判断该值是否为所要求的URL来防范csrf攻击。 但是一些Web程序会默认此头存在,以此导致如果我们删除了referer头,判断逻辑就会失效,使csrf攻击仍然可以成功执行。 登录账户,来到email change页面修改邮箱,并根据报文生成CSRF POC
<head>
<meta name="referrer" content="no-referrer">
</head>
将POC保存到exploit server完成实验。
参考:
https://www.cnblogs.com/ichunqiu/p/13650694.htmlhttps://www.cnblogs.com/ichunqiu/p/13679022.html