OS命令注入实战:从挫折到获取Shell的完整历程
Carrie Roberts //
OS命令注入非常有趣。最近我在测试某个Web应用时发现了这个漏洞(感谢Burp Suite扫描器)。虽然预感到即将获得shell,但实际过程却比预期困难得多。以下是我的探索历程和技术收获。
初始发现
已知目标运行在Red Hat Linux的Apache服务器上。通过以下注入成功触发外部服务器(1.2.3.4)的ICMP响应,分号用于分隔原始命令:
|
|
使用tcpdump验证请求:
|
|
遇到的障碍
- 32字符长度限制:通过反复测试发现命令被截断,推测因数据库存储限制
- 非常规响应机制:
/etc/passwd
内容意外出现在响应头而非响应体 - 环境限制:无netcat可用,但发现Python环境
关键技术突破
- 响应头注入技巧:
|
|
- Python反弹shell:
- 使用msfvenom生成payload
- 必须禁用stage编码:
set EnableStageEncoding false
- 通过wget传输payload:
|
|
- TTY升级:
|
|
经验总结
- 注意非常规输出渠道(如HTTP头)
- 长度限制下需精简命令
- Python是受限环境中的利器
- 真实环境往往比理论更复杂
这就是黑客攻防的本质——看似简单的漏洞,实战中总会遇到意想不到的挑战。