DVWA-CSRF
Vulnerability: Cross Site Request Forgery (CSRF)
- csrf全称为:Cross-site request forgery,是一种常见的web攻击。在场景中,攻击者会伪造一个请求(通常是一个链接),然后欺骗目标用户点击,用户一旦点击,攻击也就完成了。
low
- 这里的密码检测是直接将输入的进行拼接,检验password_new与password_conf是否一致。于是可以先伪造一个简陋的链接
1 | http://192.168.169.233/dvwa/vulnerabilities/csrf/?password_new=password&password_conf=password&Change=Change# |
这样我们就成功地将密码更改为password了
上面的链接注意改成自己的ip 和 路径
Medium
- 写一个html
1 | <img src="192.168.169.233/dvwa/vulnerabilities/csrf/?password_new=test&password_conf=test&Change=Change#" border="0" style="display:none;"/> |
- 写好后将其命名为ip地址.html格式,如:192.168.169.233.html 然后将其放在网页根目录WWW的DVWA文件中
- 然后我们打开burp suite,对csrf界面抓一次包,发送至repeater,将Referer地址改为 http://攻击者服务器地址/dvwa/被攻击ip地址.html 格式,如图:
1 | http://169.254.95.212/dvwa/192.168.169.233.html |
High
可以看到,High Security Level的代码加入了Anti-CSRF token机制,用户每次访问改密页面时,服务器会返回一个随机的token,向服务器发起请求时,需要提交token参数,而服务器在收到请求时,会优先检查token,只有token正确,才会处理客户端的请求。
要绕过High Security Level的反CSRF机制,关键是要获取token,要利用受害者的cookie去修改密码的页面获取关键的token。
试着去构造一个攻击页面,将其放置在攻击者的服务器,引诱受害者访问,从而完成CSRF攻击,下面是代码。
xss.js:
1 | alert(document.cookie); |
DOM XSS 与 CSRF 结合:
CSRF结合同Security Level的DOM XSS,通过ajax实现跨域请求来获取用户的user_token,用以下链接来让受害者访问:
1
http://192.168.169.233/dvwa/vulnerabilities/xss_d/?default=English #<script src="http://192.168.169.233/dvwa/192.168.169.233.js"></script>
诱导点击后,成功将密码修改为test
Impossible
- 加入了PDO预编译语句防止SQL注入,防止CSRF不仅用了token,还要求用户输入原密码
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Putdownd’s Blog!