《WEB安全漏洞30讲》(第4讲)CSRF漏洞

1.CSRF漏洞原理

CSRF(Cross-site request forgery),跨站请求伪造,简写 CSRF/XSRF。指利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作(如转账、改密等)。

CSRF与XSS最大的区别就在于,CSRF并没有盗取cookie而是直接利用

2.CSRF漏洞测试

 上文说过了CSRF漏洞不盗取用户身份信息,而是利用用户身份信息去伪装成受信任的用户来发起请求。一般情况下,我们可以通过抓包软件抓取数据包,然后以GET或POST形式制作成链接或页面,之后诱骗目标用户点击。目标用户点击后,因为浏览器会自动携带cookie向服务器发送请求,这样用户可能在不知情的情况下完成了对自己不利的操作

比如恶意用户lisi发现某银行个人网银的转账请求如下所示(注意www.testbank.com为本地演示地址):

GET /personTransfer.do?account=612**158&money=1000.0&name=lisi HTTP/1.1
Host: www.testbank.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0
Cookie:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://www.testbank.com
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: cross-site
Sec-Fetch-User: ?1
Te: trailers
Connection: close

lisi现在希望大家都给自己转账,他将account改为自己的账号,name改为他的名字,money改为1000.0元。之后使用Burp构造CSRF POC。

 我们可以点击下方Copy Html将它粘贴成一个html文件,置于我们的服务器下,然后将这个链接发给目标用户,想办法让他点击即可。

这里为了演示,我直接选择Test in browser,之后会出现一个URL,点击Copy,这个链接就是给目标用户点击的。

 当我访问这个链接后http://burpsuite/show/3/qizpy26u7wa3myaejlqbzowa66ktko5n,可以看到浏览器携带着我的Cookie向lisi发起了转账操作,这样在我不知情的情况下,lisi就盗取了我的money。

你可以清晰的看到,点击不明链接的危害有多大!

3.CSRF漏洞修复

(1)使用token

CSRF攻击想要成功,攻击者必须要准确地预测所有的参数从而伪造出合法的请求。所以我们可以在请求中添加一个随机的参数token,它是随机的,并是一次性的,并在服务器端检验,如果请求中没有token或者token的内容不正确,那么就拒绝该请求。

(2)检测Referer

通过检查Referer的值,我们就可以判断这个请求是合法的还是非法的,如果Referer是以自己的网站开头的域名,那么就说明该请求是合法的。

(3)关键操作只接受 POST 请求。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

午夜安全

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值