环境配置
-
在主机下载完
dvwa
,解压后重命名dvwa
拖进虚拟机的桌面目录。 -
配置
config
文件打开
dvwa
→dvwa
→config
,将config.inc.php.dist
的dist
后缀去掉 -
然后双击打开config.inc.php,修改第20、21行的值:
-
进入终端
chmod -R 777 /home/kali/Desktop/dvwa/ #赋予dvwa文件夹相应的权限 mv /home/kali/Desktop/dvwa/ /var/www/html #将桌面上的dvwa文件移至/var/www/html下
service mysql start #启动mysql服务 mysql -u root -p #进入mysql(密码默认为空,直接回车)
create database dvwa; #(创建数据库,注意命令末尾的 ; 不要漏) create user 'dvwa'@'localhost' identified by 'dvwa'; #创建用户名 grant all on *.* to 'dvwa'@'localhost'; #赋权 set password for 'dvwa'@'localhost' = password('dvwa'); #设置密码 exit #退出mysql
service apache2 start #启动apache2服务
-
打开浏览器,地址栏中输入
127.0.0.1/dvwa
回车后自动跳转至127.0.0.1/dvwa/setup.php
,创建数据库,如下表示创建成功 -
然后跳转至
127.0.0.1/dvwa/login.php
用户名和密码默认为admin
和password
实验过程
1、Brute Force
首先尝试暴力破解
查看源代码
没有任何防护手段,直接上BP
进入intruder模块
先clear ,然后选中要爆破字段,点击add
设置Payloads,选择字典
可以看到共有8条记录,接下来设置Options,设置线程数,重试时间
点击右上角的Start attack。此时正在尝试对密码进行爆破,最主要是看上面蓝框中的Length字段,找出与众不同的一项,点击 length就可以对响应包的长度进行排序,找最大或最小的值的特殊值
成功破解
2、Command Injection
查看源码
看图中红框圈出的语句,可以发现没有任何的保护措施,ip
字段如果在IP
后面加 |
再添加一个命令,则会直接执行该命令
原始语句变成了ping | ls,直接输出该目录下的文件。这样就可以操作服务器中的文件,比如这样
|cat 1.php
可以看出,服务器通过判断操作系统执行不同的ping
命令,但是对ip
参数并未做出任何过滤,导致了严重的命令注入漏洞。
3、Cross Site Request Forgery (CSRF)
这个链接用来更新某个用户的密码,来看一下源码
构造网页
<img src="http://127.0.0.1/dvwa/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#" border="0" style="display:none;"/>
<h1>404<h1> |
<h2>file not found.<h2>
既然参数是
GET
方式传递的,那么可以直接在URL
链接中设置参数,如果用户打开这个网页,那么将直接把参数传递给服务器,因为服务器并没有防CSRF
的措施,所以直接可以攻击成功,密码将被改为123456
。因为服务器在接受访问时,首先还要验证用户的
cookie
,如果浏览器上并没有之前登录留下的cookie
,那攻击也就无法奏效。
CSRF
攻击的关键就是利用受害者的cookie
向服务器发送伪造请求。
打开网页
验证,修改密码成功