DVWA 靶场建立
需要的东西:
phpStudy:
链接: https://pan.baidu.com/s/1fJ-5TNtdDZGUf5FhTm245g
提取码:0278
DVWA-master:
链接: https://pan.baidu.com/s/1oJX1h_gABKw9ZTWVF7F_2g
提取码:0278
建议在虚拟机中操作,以防数据库冲突,下面有解释
- 安装
phpstudy
,然后打开Apache
和MySQL
- 访问
127.0.0.1
,如果显示站点创建成功就成功了
- 解压
DVWA
的压缩包,然后将整个目录放到phpstudy
的WWW
目录下,然后在phpstudy
主页点击创建网站,然后填写域名信息,比如我的设置为demo.dvwa.com
,然后根目录选择为刚刚放置在WWW
目录下的DVWA
目录
- 然后在数据库界面创建数据库
- 将
DVWA
中的配置文件中的数据库信息修改为当前创建的数据库,找到DVWA
中的对应文件,比如我的C:\phpstudy_pro\WWW\DVWA\config
中的config.inc.php
文件(如果找到的是config.inc
说明电脑中隐藏了文件拓展名,建议去打开它),然后右击以记事本打开,修改对应的信息,比如我的
- 然后在浏览器中输入
demo.dvwa.com
,打开网站,如果出现这个界面,点击create/Reset Database
,如果爆以下错误,说明上述操作中数据库没配置好
如果确认了上述数据库没有对应失败,还是错误,说明本地数据库冲突了,也就是可能原本电脑中有数据库,而
phpstudy
安装的时候也会装数据库,可能就导致冲突,无法正确识别到对应的数据库,所以建议在虚拟机中操作也是这个原因,否则就删除本地的Mysql
这肯定是不愿希望的如果上述没问题,就进入了以下界面,输入
admin
和password
即可登录成功
闯关
- 首先调整
DVWA
靶场安全级别为High
- 找到侧边的
File Inclusion
,然后点击右下角的查看源代码
- 查看源代码
<?php
// The page we wish to display
$file = $_GET[ 'page' ];
// Input validation
if( !fnmatch( "file*", $file ) && $file != "include.php" ) {
// This isn't the page we want!
echo "ERROR: File not found!";
exit;
}
?>
解析代码:
$file = $_GET['page'];
- 用户通过 URL 请求传递参数,例如
?page=file1.php
- 变量
$file
被赋值为GET
参数中键为page
的值
if( !fnmatch( "file*", $file ) && $file != "include.php" ) {
// This isn't the page we want!
echo "ERROR: File not found!";
exit;
}
- 条件检查是否
$file
的值等于指定的文件名之一 - 如果
$file
不是以文件名以file
开头,或者include.php
,这两个都不满足,则视为非法文件:- 输出错误信息:
ERROR: File not found!
- 使用
exit
终止脚本执行
- 输出错误信息:
- 由于考虑到上述检测匹配需要以
file
开头,所以我们需要一个file
开头且可以访问的一个文件,这就想到在 Windows 平台下可以使用file
协议绕过防护策略,使用它访问本地文件系统,比如正常访问的
- 了解完这些后我们开始进行攻击,这里我们将
url
进行构造"file:///[绝对路径]"
的格式得到phpinfo.php
- 将
page=
后面的include.php
修改为实际的file:///...
内容,如我修改后变为了?page=file:///C:\phpstudy_pro\WWW\DVWA\phpinfo.php
,\
修改为/
也是可以的
- 然后回车,会出现这个界面
- 可以看出攻击成功了,利用规则获取了
phpinfo.php
文件
phpinfo
页面包含了大量的关于 PHP 的当前状态环境信息、PHP 的编译选项和扩展、操作系统版本信息、服务器系统变量信息、Web 应用物理路径信息等等,利用这些信息配合其他漏洞可能导致网站被渗透或者系统提权等危害