CSRF 漏洞验证
文章目录
前言
这次讲系统学习CSRF 漏洞
一、漏洞描述
CSRF(Cross-Site Request Forgery),也被称为 one-click attack 或者 session riding,即跨站请求伪造攻击。
二、漏洞原理
跨站请求伪造 (Cross Site Request Forgery,CSRF) 是一种攻击,它强制浏览器客户端用户在当前对其进行身份验证后的 web 应用程序上执行非本意操作的攻击,攻击的重点在于更改状态的请求,而不是盗取数据,因为攻击者无法查看伪造请求的响应。
借助于社工的一些帮助,例如,通过电子邮件或聊天发送链接,攻击者可以诱骗用户执行攻击者选择的操作。如果受害者是普通用户,则成功的 CSRF 攻击可以强制用户执行更改状态的请求,例如转移资金、修改密码等操作。如果受害者是管理账户,CSRF 攻击会危及整个Web 应用程序。
三、漏洞场景
- 受害者没有退出登录,受害者保持身份认证
- CSRF 继承了受害者的身体和特权,代表受害者执行非本意的、恶意的操作
- CSRF 会借助浏览器中与站点关联的所有身份凭证,例如用户的会话
Cookie
,IP
地址,Windows
域凭证等。
四、漏洞评级
- 高危:利用CSRF漏洞重置/修改密码
- 中危:利用CSRF漏洞曾删改查配置
五、漏洞危害
攻击这可以盗用受害者信息,从而发送恶意请求。比如:模拟用户发送邮件,发消息,以及支付、转账等,从而使受害者遭到损失。
六、漏洞验证
前提条件
本次将使用 DVWA 靶场演示进行演示
方法一
首先制作一个钓鱼网站
代码如下:
<meta charset='utf-8'>
<img src='./1.jpg'><br />
<img src='http://10.4.7.130/dvwa_2.0.1/vulnerabilities/csrf/?password_new=maple&password_conf=maple&Change=Change'><br />
<a href='get.html' style='color:red;font-size:100px'>屠龙宝刀,点击就送 通道一</a><br />
<a href='post.html' style='color:red;font-size:100px'>屠龙宝刀,点击就送 通道二</a><br />
受害者登录
初始密码为password
,只要受害者打开刚刚构造的钓鱼网站就会修改掉他的用户密码
受害者重新登录,方便理解,将使用bp抓包查看
可以看出密码已被修改,使用修改后的密码重新登录maple
方法二
使用bp抓取修改密码的包
使用bp自带插件生成一个网站
受害者打开此域名http://burpsuite/show/1/0cuevle5ergram52g7wv5t1dwyaxkbvr
发现会自动跳转,说明已经修改成功,就不验证了
总结
方法二可以使用bp直接生成一个链接,比方法一要简单快捷,温馨提示
不要随便点击陌生链接
七、漏洞利用
- PayPal允许它的用户相互之间任意转移资金。转移资金的时候,用户要注册信用卡或者银行账户。攻击者可以利用登陆CSRF来发起以下攻击:
- 受害者访问了恶意商家的网站,并选择使用PayPal支付。
- 受害者被重定向到PayPal并且要求登陆他/她的账户。
- 网站等待用户登陆他/她的PayPal账户。
- 付款的时候,受害者先是登记自己的信用卡,但是信用卡实际上已经被添加到恶意商家的PayPal账户。
八、漏洞防御
- 重要数据交互采用POST进行接收,当然POST也不是万能的,伪造一个form表单即可破解。
- 使用验证码,只要是涉及到数据交互就先进行验证码验证,这个方法可以完全解决CSRF。
- 出于用户体验考虑,网站不能给所有的操作都加上验证码,因此验证码只能作为一种辅助手段,不能作为主要解决方案。
- 验证HTTP Referer字段,该字段记录了此次HTTP请求的来源地址,最常见的应用是图片防盗链。
- 为每个表单添加令牌token并验证。
九、典型案例
一个典型的CSRF案例是2008年的“Samy蠕虫”事件。当时,一名名叫Samy Kamkar的黑客利用了MySpace社交网络上的CSRF漏洞,成功传播了一种名为“Samy蠕虫”的恶意代码。
这个蠕虫利用了MySpace网站上的漏洞,通过用户的浏览器向MySpace网站发送了恶意请求,将受害者的MySpace页面上添加了一个名为“Samy”的友情链接。当其他用户访问受感染的页面时,他们的账户也会被感染,进而传播这个蠕虫。
这个事件引起了广泛的关注,因为它展示了CSRF漏洞的危险性和潜在的影响。MySpace最终修复了这个漏洞,并且Samy Kamkar也因此事件面临了法律责任。
这个案例突出了CSRF漏洞的风险,以及攻击者如何利用这种漏洞来传播恶意代码或执行未经授权的操作。这也提醒了网站开发者和用户需要重视CSRF漏洞,采取相应的防范措施。