介绍
CSRF(Cross-site request forgery)跨站请求伪造,是指利用受害者尚未失效的身份认证信息( cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作(如转账、改密等)
- CSRF属于业务逻辑漏洞,在服务器看来,所有的请求都是合法正常的。
- XSS:客户信任服务器
- CSRF:服务器信任客户(经过身份验证的)
- 前提:
- 用户必须登录
- 服务的没有二次认证
- 被害者是不知情的
原理
- 受害者用密码123正常登陆服务器。
- 服务器通过受害者的身份验证后返回session值。
- 攻击者伪造一个修改密码为456的链接URL并发给受害者。
- 受害者点击修改密码的URL,密码由123改为了456。
- 攻击者等待一段时间后用密码456去尝试登陆。若成功说明已修改对方密码,若失败则说明对方已发现并改回密码。
攻击流程
利用方式(一)
1、普通用户 vince登录服务器。
2、攻击者使用allen用户登录
3、修改数据包,将手机号换成11111111111
4、将构造好的URL发送给用户,用户点击后,手机号被修改
192.168.5.130/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=boy&phonenum=11111111111&add=nba+76&email=allen%40pikachu.com&submit=submit
利用方式(二)
1、使用burpsuite攻击中的CSRF poc进行攻击
2、将构造好的POC放到vps中
3、访问vps,点击按钮,信息被更改
利用方式(三)
1、利用超链接进行CSRF攻击,修改住址
2、用户点击超链接后,住址被修改
利用方式(四)
1、使用404页面进行CSRF攻击,这种方式可以使用户不知情。构造URL,将邮箱修改123@abc.com
2、将构造好的页面放到vps上,用户访问页面,会出现404,这种情况下,一般都会关闭页面。
3、再次登录allen用户,发现邮箱已经被修改
XSS和SCRF组合拳
1、插入存储型XSS,打开vps下的html文件
2、普通用户kobe登录服务器
3、kobe用户访问到含有存储型XSS的页面,页面跳转到构造好的404页面
kobe再次登陆后,发现个人信息被修改
这种方式避免了攻击者发送URL链接诱骗用户点击,可以使用户卸下防备心理。
危害
1、CSRF漏洞会导致受害人在不知情的情况下向论坛发帖子、订阅邮件列表、网购或股票交易,或变更用户名或口令。对受到防火墙保护的所有web应用程序而言,CSRF攻击都能绕过防火墙攻击web应用。
2、CSRF漏洞还可以和XSS等漏洞结合使用,从而进一步加大了该漏洞的危害。
3、伪造HTTP请求进行未授权操作:
篡改、盗取目标网站上的重要用户数据。
未经允许执行对用户名誉或者资产有害的操作,比如:散播不良信息、进行消费等。
如果通过使用社工等方式攻击网站管理员,会危害网站本身的安全性。
4、作为其他攻击向量的辅助攻击手法,比如配合XSS。
5、传播CSRF蠕虫。
防御方式
1、二次认证
2、加入token验证、referer验证
3、增加验证码验证