CSRF

CSRF

CSRF,全称Cross-site request forgery跨站请求伪造,是指利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害人的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作(入转账,改密等)。CSRF与XSS最大区别在于,XSS是盗取cookie,CSRF直接利用cookie。

级别:Low

源码审计:发现直接接受密码传参进行查询修改,没有对传参进行任何防护。
CSRF

漏洞利用:构建相应的URL,修改其中的密码参数,诱导用户点击,进行攻击。(可以通过短网址改变URL隐藏攻击)

  1. 构造恶意URL链接
http://localhost/dvwa/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#
  1. 构造恶意页面
<img src ="http://localhost/dvwa/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#" border="0" style="display:none;"/>

<h1>404</h1>

<h2>file not found</h2>

级别:Medium

源码审计:stripos()函数查找字符窜在另一字符窜中第一次出现的位置(不区分大小写),如果没有返回false。在Low级别上增加了对用户请求头的中的Referer字段进行验证
CSRF

漏洞利用:首先正常访问,抓包查看Referer,可以直接构造恶意URL链接,访问时利用burp抓包,手动在请求包中增加Referer。绕过检测。

http://localhost/dvwa/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#

级别:High

源码审计:High级别加入了token机制,用户每次访问改密码也页面时,服务器会返回一个随机的token,向服务器发起请求时,需要提交token参数,而服务器在收到请求时,会优先检查token,只有token正确,才会助理客户端的请求。
CSRF

漏洞利用:只有获取token才能进行CSRF,但是浏览器的跨域问题(同源策略),不能直接获取,所以比较难以利用,但是如果服务器存在存储XSS可以获取token,然后构造URL和代码进行CSRF利用。(一般情况下,在CSRF中使用token,可以防御大部分CSRF利用。)

级别:Impossible

源码审计:impossible级别需要输入用户之前的密码,攻击者是无法知道密码的,无法进行CSRF攻击。
CSRF

防御方法
CSRF

上一篇:浅谈CSRF攻击方式


下一篇:Python学习第148天(Django中间层)