DVWA靶场实战:Command Injection漏洞从入门到精通(附绕过技巧)

发布时间:2026/7/5 14:30:25

DVWA靶场实战:Command Injection漏洞从入门到精通(附绕过技巧) DVWA靶场实战Command Injection漏洞从入门到精通附绕过技巧在Web安全领域命令注入Command Injection始终是危害性极高的漏洞类型之一。DVWADamn Vulnerable Web Application作为专为安全学习设计的靶场环境其Command Injection模块提供了从基础到高级的实战场景。本文将带您深入理解命令注入的本质并掌握针对不同防护等级的实用绕过技术。1. 命令注入漏洞核心原理命令注入的本质是攻击者通过构造特殊输入使应用程序将用户输入作为系统命令的一部分执行。这种漏洞通常出现在以下场景应用程序调用系统命令如ping、ls、dir等时未对用户输入进行严格过滤使用危险函数如system()、exec()、shell_exec()等直接拼接用户输入错误地信任用户提供的参数典型漏洞代码示例$target $_GET[ip]; $cmd ping -c 4 . $target; system($cmd);当用户输入127.0.0.1; cat /etc/passwd时实际执行的命令将变为ping -c 4 127.0.0.1; cat /etc/passwd2. DVWA Low级别实战分析2.1 漏洞环境特征Low级别未实施任何防护措施用户输入直接拼接到系统命令中。关键代码如下$target $_REQUEST[ip]; $cmd shell_exec(ping -c 4 . $target);2.2 基础注入技术以下注入方式均可成功执行注入方式示例输入实际执行命令命令分隔符127.0.0.1; whoamiping -c 4 127.0.0.1; whoami逻辑与127.0.0.1 cat /etc/passwdping -c 4 127.0.0.1 cat /etc/passwd管道符127.0.0.1uname -a提示在Linux系统中whoami命令可显示当前执行命令的用户身份这是判断注入成功的重要标志。3. Medium级别防护与绕过3.1 防护机制分析Medium级别通过黑名单过滤部分特殊字符$substitutions array( , ; , ); $target str_replace(array_keys($substitutions), $substitutions, $target);3.2 高级绕过技巧尽管过滤了;和仍存在多种绕过方式管道符绕过127.0.0.1 | whoami字符拼接技巧127.0.0.1 ; whoami过滤后变为127.0.0.1 whoami换行符注入需URL编码127.0.0.1%0Awhoami4. High级别终极挑战4.1 严格过滤机制High级别扩展了黑名单范围$substitutions array( || , , ; , | , - , $ , ( , ) , );4.2 精妙绕过方案发现过滤逻辑存在缺陷——|管道符加空格被过滤但|未被过滤127.0.0.1|whoami其他可能有效的技巧使用反斜杠转义127.0.0.1 \ whoami利用变量替换127.0.0.1$(whoami)5. 防御方案与最佳实践5.1 输入验证策略白名单验证推荐if (!filter_var($target, FILTER_VALIDATE_IP)) { die(Invalid IP address); }使用安全函数$cmd [ping, -c, 4, escapeshellarg($target)]; shell_exec(implode( , $cmd));5.2 系统层防护使用最小权限原则运行Web服务禁用危险函数system,exec等定期更新系统和应用补丁在实际渗透测试中命令注入漏洞的利用往往需要结合具体环境特点。我曾在一个项目中发现虽然应用过滤了常见特殊字符但通过精心构造的Unicode编码仍然实现了注入。这种案例告诉我们安全防护必须考虑所有可能的输入向量。

相关新闻