文章目录
- 前言
- 一、CSRF漏洞是什么
- 二、CSRF漏洞形成的条件
- 1、用户要在登录状态(即浏览器保存了该用户的cookie)
- 2、用户要访问攻击者发的恶意url链接才行
- 三、CSRF漏洞复现(pikachu靶场)
- 1、CSRF(get)
- 2、CSRF(post)
- 3、CSRF(token)
- 四、CSRF漏洞防御措施
- 1、验证请求的referer值
- 2、设置token随机值
- 总结
前言
此文章只用于学习和反思巩固csrf攻击知识,禁止用于做非法攻击。注意靶场是可以练习的平台,不能随意去尚未授权的网站做渗透测试!!!
一、CSRF漏洞是什么
CSRF又称跨站请求伪造,是指攻击者在用户登录的状态下(浏览器保存了用户的cookie)通过伪造恶意url诱导用户点击,借助用户的cookie网站权限(冒充用户身份来进行非法操作,对于服务器来说是合法的)达到篡改数据、购买商品等非法操作。
这张图就详细展示了csrf攻击过程。
二、CSRF漏洞形成的条件
通过上面的讲解我们知道CSRF形成的必要条件是
1、用户要在登录状态(即浏览器保存了该用户的cookie)
2、用户要访问攻击者发的恶意url链接才行
三、CSRF漏洞复现(pikachu靶场)
1、CSRF(get)
点击提示发现有vince/alien/kobe/grady/kevin/lucy/lili几个用户,密码均为123456,这里我们用vince(攻击者测试账号)和lili(受害者)来测试。
攻击者测试,登录vince测试账号,修改个人信息抓包发现。数据包可控参数是拼接在url上,是get请求。发现数据包并没有识别用户的标识,比如token。(如图所示)
所以攻击者可以模仿url让用户去点击,实施修改个人信息。
受害者测试。
假设用户点击了攻击者模仿的url,就会把个人息修改为攻击者想要的内容。(如图所示)
http://192.168.254.128/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=hacker&phonenum=hacker&add=hacker&email=hacker&submit=submit
2、CSRF(post)
上一关是get请求,也就是可控参数是拼接在url后面的,若没有严格设置识别用户身份的安全措施,攻击者就可以轻易的构造url让用户去访问从而修改其信息。这一关是post请求,无法简单的构造url进行欺骗,得通过数据包构造一个html界面,诱导用户点击。这里用grady(攻击者测试账号)kevin(受害者账号)
攻击者测试,发现是post请求,数据包没有验证用户的身份。
这里我们修改好我们要修改的用户信息,使用burpsuite专业版工具CSRF PoC构造html文件诱导用户访问。(如图所示)
勾选include auto-submit script,单击Regenerate按钮,然后copy html。
这里我把恶意html文件放在了攻击者服务器,当受害者在登录状态访问192.168.254.131/change.html的恶意url就会触发修改个人信息。
受害者登录
受害者访问
点击了此按钮就会修改个人信息
3、CSRF(token)
这一关抓数据包发现有个token验证是每修改一次个人信息都会有随机的token值,导致攻击者不好伪造用户的数据包。
四、CSRF漏洞防御措施
1、验证请求的referer值
看看referer是不是自己的域名,而不是其他域名。
2、设置token随机值
不让攻击者伪造出用户正确的token值。
总结
CSRF漏洞如果要寻找此漏洞可以在有表单的地方抓包修改referer值看看能不能成功,找没有token值的地方测试。CSRF漏洞利用也有很大的缺陷,得在用户登录状态下,浏览器有用户的cookie然后访问攻击者恶意url。这些条件缺一不可。有人会把xss与csrf搞混淆,xss漏洞是攻击者把js代码插入web界面诱导用户点击,从而获取用户的cookie,然后进行登录用户篡改信息。xss是能直接知道用户cookie信息的。而csrf是利用用户的cookie帮助攻击者去篡改用户信息,并不能获取用户的cookie值。此文章是小白自己为了巩固csrf攻击而写的,大佬路过请多指教!