CSRF
csrf——跨站请求伪造
从信息的角度来区分:
xss:利用用户对站点的信任
csfr:利用站点对已经身份认证的用户端的信任
1.概述
原理:
客户端访问服务器端进行登录进行了身份认证,有了一个合法的session,此时如果客户端用户误点击了hack给他的链接这种请求,便会执行请求并把该请求发送给服务器端,而这个请求是利用他现有的合法的session身份来进行提交的,在服务器端看来,该请求有合法的身份验证,便会认为该请求是正常的请求。但是hack也不知道客户端是否点击了该请求,只能等待,如果该请求作用是修改账号密码,修改密码成功,当hack尝试访问服务器端站点,使用之前客户端的用户名和自己修改过的密码就能登录成功。
综合社工在身份认证会话过程中实现攻击
修改账号密码、个人信息(email、收货地址)
发送伪造的业务请求(网银、购物、投票)
关注他人社交账号、推送博文
在用户非自愿、不知情的情况下提交请求
csrf主要在于业务逻辑漏洞,对关键操作提交请求缺少确认机制,所以用户点击hack发送的连接就会发送一些不当的请求。
漏洞利用条件:
1.被害用户已经完成身份认证。
2.心情求的提交不需要重新身份认证或确认机制。
3.攻击者必须了解web app请求的参数构造。
4.诱使用户触发攻击的指令(社工)。
2.演示
修改密码为123,使用burp截断。
我们可以发现这个请求一旦请求过去密码就会修改,不需要确认机制,是典型的存在crsf漏洞的请求过程。只要诱使别人点击该url,密码就会被修改。
我们把该url(/dvwa/vulnerabilities/csrf/?password_new=123&password_conf=123&Change=Change)复制下来,在攻击者电脑上伪造一个页面或链接诱使被害者点击。
2.1环境
kail:10.0.0.140
metasploitable:10.0.0.142
受害者:windows
2.2hack
#查看80端口是否被占用
netstat -pantu | grep :80
#开启apache服务
service apache2 start
cd /var/www/html
vi 1.html
#1.html内容
<a href='http://10.0.0.142/dvwa/vulnerabilities/csrf/?password_new=123&password_conf=123&Change=Change'>csrf</a>
#访问
http://10.0.0.140/1.html
2.3受害者
已经登录dvwa进行了身份认证。(前提是dvwa的级别为low)
突然间收到一封邮件,当我点击右键,会打开下面的页面,点击页面中内容:
点击后跳转,显示密码已修改。
此时再尝试用原来的密码登录已经登不上去了。hack等了一段时间后,尝试用新的密码123登录,发现登录成功。
自动化扫描程序对该漏洞类型从本质上是没有确切办法判定的。但他会从代码安全、服务器确认机制角度来进行检测。
自动扫描程序的检测方法
会检测在请求和相应过程中是否存在anti-CSRF token名,anti-CSRF token是另外的一种确认机制,anti-CSRF token每次访问重要请求时,都会产生一个随机数,如果他的随机性足够好的话,是很没有明确的规律很难进行猜测,攻击的话就很难去伪造。
检查服务器是否验证anti-CSRF token的值。
检查token中可编辑的字符串。
检查referrer头是否可以伪造。