二十七、CSRF跨站请求伪造

1、简介

1.1、XSS区别

从信任的角度来区分:

  • XSS:利用用户对站点的信任,服务器下发的脚本在客户端浏览器执行
  • CSRF:利用站点对已经身份认证的信任

在已经身份认证过的用户,可以正常访问服务端资源。此时如果黑客发送一个链接,是进行上述访问的服务资源如修改密码的一个链接请求,此时此用户点击,会被执行,密码会被直接修改,因为是利用已经认证的合法身份提交的。

1.2、结合社工在身份认证会话过程中实现攻击

  • 修改账号密码、个人信息(修改已注册的email、收货地址)
  • 发送伪造的业务请求(网银、购物、投票)
  • 关注他人社交账号、推送博文
  • 在用户非自愿、不知情的情况下提交请求

1.3、业务逻辑漏洞

  • 缺少二次确认机制:一般来说对于服务端而言,所有的请求都是合法的,因为已经验证了用户。但是服务端对于关键操作,缺少确认机制是发生此问题的根源(可以采用验证码机制)
  • 自动扫描程序无法实现此类漏洞

1.4 漏洞利用条件

  • 被害用户已经完成身份认证
  • 新请求的提交不需要重新身份认证或确认机制
  • 攻击者必须了解web app请求的参数构造
  • 诱使用户触发攻击的指令(社工)

2、验证csrf(get方法)

环境说明:
192.168.50.115 kali,模拟黑客,搭建1.html网页,诱使受害者点击
192.168.50.17 模拟受害者机器
192.168.50.183 靶机,有csrf漏洞的服务

2.1、搭建诱使点击网页

首先,黑客要知道web app请求的构造,因此,通过burpsuite截获正常访问时的请求数据。访问csrf界面,然后输入修改的密码,点击提交:

二十七、CSRF跨站请求伪造_第1张图片
正常访问

burp截获

将get请求以一个可点击链接的方式,写入1.html文件中,在黑客的主机上搭建,路径为 /var/www/html/1.html

csrf

然后启动apahce,并确定能够访问

# service apache2 start

2.2、诱使受害者点击

将上述构造好的网页,通过社工或者其他手段,诱使受害者点击(在受害者已经登录此网站的情况下)

2.3 csrf攻击后果

此时,受害者正在正常访问此网站,此时如果接受到攻击者发送的链接,然后点击了,会发生什么呢?


二十七、CSRF跨站请求伪造_第2张图片
正常访问
二十七、CSRF跨站请求伪造_第3张图片
点击恶意链接
二十七、CSRF跨站请求伪造_第4张图片
密码修改成功

此时logout之后,在通过密码为“password”则无法登录


二十七、CSRF跨站请求伪造_第5张图片
登录失败

3、验证csrf(post方法)

burpsuite截断后,使用CSRF PoC generator功能。首先截断请求,构造数据请求


截断请求

然后在此基础上,右键点击“CSRF PoC generator”


二十七、CSRF跨站请求伪造_第6张图片
CSRF PoC generator选择

随后会生成csrf html:
二十七、CSRF跨站请求伪造_第7张图片
生成csrf html

复制内容,在'/var/www/html/2.html'中粘贴


二十七、CSRF跨站请求伪造_第8张图片
2.html

验证
在正常登录访问网站的同时,点击恶意链接

二十七、CSRF跨站请求伪造_第9张图片
点击恶意链接

此时,密码已经被修改。
二十七、CSRF跨站请求伪造_第10张图片
密码修改成功

4、源代码

4.1、low级别

二十七、CSRF跨站请求伪造_第11张图片
low源代码

4.2、medium级别

上述的都是基于low级别进行的poc测试,下面通过medium级别可以看到,多了一层判断,意思是判断referer信息,看请求中是否含有127.0.0.1即只能本机修改密码,如果不是则不能执行。


二十七、CSRF跨站请求伪造_第12张图片
medium源代码

通过请求截断,在referer中添加127.0.0.1,只要在referer中找到此字段,即为通过判断条件

二十七、CSRF跨站请求伪造_第13张图片
修改referer

转发forward后,密码已经修改成功


二十七、CSRF跨站请求伪造_第14张图片
修改密码成功

4.3、high级别

高级别增加了当前密码的二次校验功能


二十七、CSRF跨站请求伪造_第15张图片
high级别
二十七、CSRF跨站请求伪造_第16张图片
high源代码

5、自动扫描程序的检测方法

  • 在请求和响应过程中检查是否存在anti-CSRF token名
  • 检查服务器是否验证anti-CSRF token的名值
  • 检查token中可编辑的字符串
  • 检查referer头是否可以伪造

6、应对对策

  • Captcha验证码
  • anti-CSRF token
  • Referer
  • 降低会话超时时间

你可能感兴趣的:(二十七、CSRF跨站请求伪造)