从Ping到Shell:手把手复现ACTF2020新生赛Exec 1靶场命令注入漏洞

张开发
2026/4/15 21:04:30 15 分钟阅读

分享文章

从Ping到Shell:手把手复现ACTF2020新生赛Exec 1靶场命令注入漏洞
从Ping到Shell手把手复现ACTF2020新生赛Exec 1靶场命令注入漏洞在网络安全领域命令注入漏洞一直是Web应用安全中最基础也最危险的漏洞类型之一。今天我们将通过复现ACTF2020新生赛中的Exec 1靶场来深入理解这种漏洞的成因、利用方式以及防御思路。这个靶场非常适合刚接触CTF比赛或Web安全的新手因为它展示了一个非常典型的命令注入场景——通过Ping功能实现系统命令执行。我们将使用Docker在本地搭建这个靶场环境从最基本的Ping测试开始逐步探索如何利用命令分隔符突破限制最终获取系统flag。整个过程会详细记录每个步骤的输入输出并解释背后的原理确保即使是完全没有经验的新手也能跟上节奏。1. 环境准备与初步探测首先我们需要一个干净的测试环境。推荐使用Docker快速部署靶场docker pull vulhub/actf2020-exec1 docker run -d -p 8080:80 vulhub/actf2020-exec1访问http://localhost:8080你会看到一个简单的Ping测试页面。这个页面设计得非常简洁只有一个输入框和一个提交按钮看起来就像普通的网络工具。初始测试步骤输入127.0.0.1并提交观察返回结果是否包含Ping的响应查看网页源代码寻找隐藏线索注意在实际CTF比赛中查看网页源代码往往是第一步开发者有时会在注释中留下提示。通过初步测试我们发现这个页面确实执行了Ping命令并将结果返回给了用户。这看起来很正常但问题在于——它是如何执行Ping命令的2. 理解命令注入漏洞原理命令注入漏洞的核心在于用户输入被直接拼接到了系统命令中。在这个例子中后端代码可能是这样的?php $ip $_GET[ip]; system(ping -c 3 . $ip); ?这种直接将用户输入拼接到系统命令中的做法极其危险。攻击者可以通过精心构造输入在原始命令后追加额外的系统命令。常见的命令分隔符及其作用分隔符作用描述;顺序执行多条命令前命令成功则执行后命令后台执行命令$()命令替换现代shell命令替换传统方式3. 基础注入尝试让我们从最简单的注入开始测试输入127.0.0.1; whoami观察返回结果是否包含当前用户信息如果注入成功你会在Ping结果后面看到类似这样的输出PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. 64 bytes from 127.0.0.1: icmp_seq1 ttl64 time0.034 ms www-data这个www-data就是当前Web服务运行的用户身份说明我们的命令注入成功了新手常见问题排查如果没有任何额外输出检查分隔符是否正确尝试或|确保没有输入多余的空格或特殊字符尝试不同的命令如id或uname -a4. 进阶利用获取系统信息确认注入点有效后我们可以进一步收集系统信息127.0.0.1; ls -la /这个命令会列出根目录下的所有文件和目录。在CTF比赛中flag文件通常位于根目录或特定目录下名称可能包含flag字样。关键信息收集命令uname -a- 查看系统内核信息ls /- 列出根目录find / -name *flag*- 搜索包含flag的文件cat /etc/passwd- 查看系统用户列表提示在真实环境中这些信息收集步骤对于后续渗透至关重要但在CTF中通常是为了快速定位flag文件。5. 读取flag文件通过前面的信息收集我们通常会发现flag文件位于/flag或/var/www/html/flag.txt等位置。尝试读取127.0.0.1; cat /flag但有时候出题者会设置一些简单的过滤机制。如果cat被过滤了可以尝试以下替代方法绕过简单过滤的技巧使用tac代替cat反向输出文件内容使用more、less或head、tail等命令使用通配符cat /fl*使用变量拼接ac;bat;$a$b /flag使用Base64编码输出cat /flag | base64在本次靶场中最简单的cat /flag就能获取到flag内容。恭喜你已经成功复现了这个命令注入漏洞6. 深入理解防御措施作为负责任的网络安全学习者我们不仅要会攻击更要理解如何防御。针对命令注入漏洞以下是一些有效的防护措施输入验证白名单验证只允许数字和点号对于IP地址正则表达式过滤/^[0-9.]$/安全的API使用使用escapeshellarg()或escapeshellcmd()函数处理参数避免直接拼接命令改用参数化调用系统加固限制Web服务器的执行权限使用chroot等隔离技术定期更新系统和应用补丁7. 扩展练习与思考为了加深理解建议尝试以下扩展练习尝试使用不同的命令分隔符实现相同效果编写一个简单的PHP脚本模拟这个漏洞然后尝试修复它研究其他类型的命令注入场景如SQL注入、LDAP注入等在Docker环境中搭建其他类似的漏洞靶场进行练习命令注入漏洞虽然原理简单但在实际应用中变化多端。通过这个靶场的练习你应该已经掌握了最基本的识别和利用方法。记住这些技术只能用于合法授权的测试真正的黑客精神是建设而非破坏。

更多文章