DVWA1.10之CSRF


CSRF简介

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

CSRFXSS最大的区别就在于,CSRF并没有盗取cookie,而是直接利用


LOW级别

简单利用

  1. 构造恶意链接

    1
    http://172.16.12.93/vulnerabilities/csrf/?password_new=password123&password_conf=password123&Change=Change#
  1. 被攻击者在登陆网站的情况下点击恶意链接

  2. 被攻击者密码在不知情的情况下被修改

    1.png

简单伪装

  1. 网址缩短

    2.png

    使受害者无法通过域名分辨

  2. 再次修改密码

    当点击短链接后,会自动跳转到长网址,进行密码修改

加强伪装

  1. 构造攻击页面

    即使URL地址被缩短,但被点击后,仍然会跳转原URL地址,并且会提示密码被修改,使得被攻击者发觉密码被修改

    现实攻击场景下,需要在公网上事先上传一个攻击页面,诱使被攻击者去访问,真正能够在受害者不知情的情况下完成CSRF攻击

    此处,使用192.168.1.4作为公网服务器,用于演示

    攻击页面test.html代码

    1
    2
    3
    4
    5
    6
    7
      <html>
    <body>
    <img src="http://172.16.12.93/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#" border="0" style="display:none;"/>
    <h1>error</h1>
    <h2>404</h2>
    </body>
    </html>
  1. 当被攻击者在登陆DVWA的情况下,点击攻击页面的链接,误以为自己点击一个失效的URL,但实际上已经遭受到CSRF攻击,密码已经被修改

    3.png


Medium级别

Medium级别检查了http包头的Referer参数的值,查看其中是否包含http包头的Host参数,希望通过这种机制抵御CSRF攻击

4.png

修改攻击页面名称为DVWA主机地址,即可绕过

5.png

6.png

7.png


High级别

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

8.png

进行漏洞利用,要绕过High级别的反CSRF机制,关键是要获取token

  1. 利用High级别存储型XSS获取token

    注入代码:

    1
    <iframe src="../csrf" onload=alert(frames[0].document.getElementsByName('user_token')[0].value)>

    9.png

    10.png

  2. 构造一次性修改密码恶意链接

    1
    http://172.16.12.93/vulnerabilities/csrf/?password_new=password123&password_conf=password123&Change=Change&user_token=0aeba5f4c30a41b5df742056e383a2e9#

    在登陆DVWA的情况下,点击链接,则会更改密码

    11.png

    但恶意链接只可使用一次,再次请求则会显示错误

    12.png


Impossible级别

在修改密码时,要求输入原始密码,用于防止CSRF攻击


CSRF防御

  1. 设置Referer,用于标识此次请求从哪个页面过来的

  2. Anti CSRF Token

  3. 重要操作进行二次验证

---------------The End---------------
0%