CSRF跨站请求伪造
对象
web客户端
利用点
CSRF最关键的是利用受害者的Cookie向服务器发送伪造请求。
主要危害:
以你名义发送邮件、发消息、盗取你的账号、甚至于购买商品,虚拟货币转账......
原理:
CSRF攻击流程
- 登录受信任网站A,并在本地生成Cookie。
- 在不登出A的情况下,访问危险网站B。
CSRF利用方式
GET型
仅需要一个HTTP请求。就能够构造一次简单的CSRF。
- 链接利用(a标签)
- iframe利用
可以设置iframe的style为display:none,以此来不显示iframe加载的内容
- img标签利用
img标签内的内容会随着页面加载而被请求,以此src指向的位置会在页面加载过程中进行请求
- background利用
可以利用CSS中background样式中的url来加载远程机器上的内容,从而对url中的内容发送HTTP请求
POST型
危害没有GET型的大,利用通常使用的是一个自动提交的表单。如:
<form name="csrf" action="http://edu.xss.tv/payload/xss/csrf2.php" method="post">
<input type="hidden" name="name" value="zhangsan">
<input type="hidden" name="money" value="1000">
</form>
<script type="text/javascript">document.csrf.submit();</script>
访问该页面后,表单会自动提交,相当于模拟用户完成了一次POST操作。
CSRF漏洞探测
利用自动化探测工具CSRFTester或者burp自带CSRF POC
1.CSRFTester设置浏览器代理:127.0.0.1:8008,burp是8080
2.登录web应用程序,提交表单,在CSRF工具中修改表单内容,查看是否更改,如果更改就存在CSRF漏洞
3.生成CSRF的POC
CSRF漏洞防御
- 设置和判断cookie时采用hash值认证。
- 尽量采用post类型传参,这就减少了请求被直接伪造的可能。
- 验证HTTP Referer字段
- 在 HTTP 头中自定义属性并验证
- 在请求地址中添加token并验证
- 采用验证码判断,进行防御。