CSRF漏洞复现

极客

手把手带你复现CSRF漏洞:从原理到实战,这坑我替你踩过了!

哎呦喂,各位老铁们,今天咱们来聊聊一个让人又爱又恨的安全漏洞——CSRF漏洞复现,说实话,我刚接触这个漏洞的时候,真的是头大如斗,感觉它就像个隐形杀手,明明啥都没干,账就被盗了,钱就被转走了,你说气不气人?😤 所以今天我就把这段时间踩过的坑、总结的经验,一股脑儿全倒给你们,希望能帮你们少走点弯路哈!

CSRF漏洞复现

为什么CSRF这么烦人? 你想啊,咱们平时登录个银行、购物网站,都是靠浏览器里的Cookie来证明“我是我”的,而CSRF这货,就是利用了这一点——它压根不用偷你的密码,也不用破解你的账号,直接让你在不知情的情况下,浏览器自动发起你不想发的请求,比如说,你正开着银行的标签页呢,这时候不小心点开了一个恶意链接,那完犊子了,你的钱可能就悄悄飞走了,你连哭都来不及!这个漏洞,说白了啊,就是“狸猫换太子”,明明是攻击者的意图,却借了你这个“太子”的手去执行。

CSRF漏洞到底是怎么产生的?

这里我必须得吐槽一下,很多新手小白老是把CSRF和XSS搞混,其实这俩完全是两码事,XSS是攻击者往你的网页里插恶意脚本,而CSRF是“借刀杀人”,根本不需要往你页面里插任何东西,它的核心原因就是——服务器太信任咱们的浏览器了,只要看到是同一个浏览器发来的请求,就以为是你本人操作,压根不验证请求的真伪。

CSRF漏洞的形成得满足这么几个条件:

  1. 目标网站只靠Cookie判断身份——这真的是重灾区啊!很多老代码都是这样写的,开发者图省事,直接$_COOKIE['user_id']一取就完事了。
  2. 请求参数可控——比如转账接口,你改个银行账号和转账金额,人家服务器照单全收,也不管这是不是你本人点的。
  3. 浏览器自动带上Cookie——这其实算“帮凶”了,浏览器默认行为,你压根关不掉,所以防范CSRF只能从服务器端下手。

实战复现环节:我都怀疑人生了!

好嘞,光说不练假把式,咱们直接上手搞一个环境来复现一下,我这边用的是DVWA靶场,低安全级别,简直是为CSRF量身定做的“温床”啊!大家跟着我一步步来,千万别走神哈。

第一步:抓包分析请求

我先登录DVWA,然后找到修改密码的地方,注意看,这个修改密码的请求就是典型的CSRF脆弱点——它只用了GET请求,关键参数就是password_newpassword_conf,我试着修改一下,接着抓包看一下:

GET /dvwa/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change HTTP/1.1
Host: 192.168.1.101
Cookie: PHPSESSID=abc123...

看到没?整个请求里压根没有任何token、签名之类的验证,只有Session ID在撑着,这意味着什么?意味着只要我伪造一个链接,让受害者点击,他就会在不知情的情况下把密码改成我设定的值!

第二步:构造CSRF攻击页面

这里我可要玩点小花样了,我直接在同一个服务器上放一个恶意HTML页面,代码极其简单,就几行:

<!DOCTYPE html>
<html>
<body>
<h1>优惠券领取页面!</h1>
<img src="http://192.168.1.101/dvwa/vulnerabilities/csrf/?password_new=admin123&password_conf=admin123&Change=Change">
</body>
</html>

你瞅瞅,我一个<img>标签就搞定了!为啥用图片标签?因为浏览器会自动加载图片请求啊!这招简直防不胜防,受害者点进来还以为真的是领优惠券的,殊不知他的密码已经变成admin123了。

第三步:诱导受害者点击

接下来就是“社工”环节了,我把这个恶意链接伪装成“限时优惠券”,发到群里,或者发邮件给受害者,只要他一点,浏览器“咻”地一下就把请求发出去了,Cookies自动跟随,服务器那边一看,哟呵,是合法用户,那就改吧!整个过程不到一秒,受害者毫无感觉。

我当时测试的时候,一个没注意,把自己测试账户的密码改了,然后忘了改回来,结果登录不进去了,气得我拍桌子! 所以大家一定要在测试环境搞,别拿生产环境开玩笑,血泪教训啊!

修复方案:别再踩坑了!

既然漏洞复现出来了,咱们总得想办法堵住它吧?别慌,我这里总结了三个大招,全是最实用的防御手段:

加Token验证(最常用)

在表单里隐藏一个随机生成的Token,每次请求都带上,服务器那边对比一下,对不上就直接拒绝,这是目前最主流的做法,几乎所有的支付接口都用这个。Token得绑定Session,而且每次请求都要换新的,不然还是会被偷。

SameSite Cookie属性(最推荐)

这个可是现代浏览器的“神器”啊!在设置Cookie的时候,加上SameSite=Strict或者SameSite=Lax,浏览器就会自动限制跨站请求携带Cookie,我建议大家都用Lax模式,因为它既安全,又不会影响用户正常的外部链接跳转体验,这招啊,简直是从源头掐断了CSRF的攻击路径

二次确认机制(简单粗暴)

对于修改密码、转账这类敏感操作,强制用户重新输入密码,或者输入短信验证码,虽然用户体验稍微差了一点,但安全性那是杠杠的,很多大银行就是双重验证,安全又放心。

我的絮叨总结

好了,今天的CSRF漏洞复现就唠到这儿了,说实话,写这篇文章的时候我是真着急,想着怎么把那些复杂的技术点说人话,让你们都能理解,CSRF漏洞,说它难防,其实也防得住,关键是开发者得有这个安全意识啊!我见过太多小网站,只图开发爽,不重视安全,最后被攻击者撸得底裤都不剩,哭都来不及。

最后再啰嗦一句,技术本身无对错,关键是用它来干啥,咱们学习漏洞复现,是为了更好地防范,而不是去搞破坏,希望大家都能把这份技术用在正道上,保护好自己的系统,也保护好自己的良心,好了,今天就到这里,我得去喝口水了,嗓子都快冒烟儿了!咱们下期再见,拜拜咯!👋

文章版权声明:除非注明,否则均为极客网安-咸鱼原创文章,转载或复制请以超链接形式并注明出处。

目录[+]