在当今复杂的网络安全环境中,命令执行漏洞(Command Injection / RCE) 依然是威胁Web应用安全的“头号杀手”之一。攻击者通过精心构造的 Payload,可以远程在服务器上执行任意系统命令,轻则信息泄露,重则服务器沦陷。

作为一位专业的数码科技知识博主,本文将带你系统梳理命令执行漏洞的常见Payload类型、绕过技巧与防御方案,内容涵盖Linux与Windows平台,适合安全研究人员、开发人员及CTF爱好者深度学习。
什么是命令执行漏洞?
命令执行漏洞(Remote Command Execution, RCE)是指应用程序在处理用户输入时,未对输入内容进行有效过滤或转义,直接将其拼接进系统命令中执行,导致攻击者可以注入并执行任意操作系统命令。
典型漏洞代码示例(PHP):
当用户输入:
实际执行的命令变为:
此时,攻击者成功读取了系统的用户信息文件。
命令执行漏洞常用Payloads大全
1. 基础命令连接符(管道符)
| 平台 | 符号 | 说明 |
|---|---|---|
| Linux | ; | 顺序执行前后命令 |
& | 后台执行命令 | |
&& | 前命令成功才执行后命令 | |
│ | 将前命令输出作为后命令输入 | |
|| | 前命令失败才执行后命令 | |
| Windows | & | 执行前后命令 |
&& | 前命令成功才执行后命令 | |
│ | 管道符,同Linux | |
|| | 前命令失败才执行后命令 |
Payload示例:
2. 空格绕过技巧
当空格被过滤时,可使用以下方式替代:
| 技巧 | Payload 示例 |
|---|---|
${IFS}(Linux) | cat${IFS}/etc/passwd |
< 或 > 重定向 | cat</etc/passwd |
%09(URL编码制表符) | cat%09/etc/passwd(需PHP环境) |
$IFS变量 | cat$IFS/etc/passwd |
3. 黑名单绕过:命令关键字过滤
当 cat、ls、/ 等关键字被过滤时,可使用以下方法绕过:
(1)通配符匹配
(2)字符串拼接
(3)Base64编码执行
(4)环境变量提取
4. 特殊字符与编码绕过
当特殊字符被过滤时,可使用URL编码替代:
| 字符 | URL编码 |
|---|---|
│ | %7C |
; | %3B |
& | %26 |
%20 或 %09 | |
" | %22 |
' | %27 |
| ``` | %60 |
\n | %0A\ |
Payload示例:
5. 无回显命令执行(Blind RCE)
当命令执行无回显时,可通过以下方式获取结果:
(1)DNS外带数据
(2)HTTP请求外带
(3)时间盲注(Time-based)
(4)文件写入 + 二次读取
6. 长度限制绕过:文件构造法
当输入长度受限时,可利用文件系统构造命令:
bash
编辑
此方法可用于构造 cat flag 或反弹Shell等长命令。
7. 反弹Shell常用Payloads
一旦获得命令执行权限,常用反弹Shell获取交互式终端:
Linux反弹Shell:
Windows反弹Shell:
CTF实战案例:绕过多重过滤
题目场景:过滤了空格、;、/、cat、ls。
绕过Payload:
解析:
{c,at}→cat${PATH:0:1}→/${PATH:5:1}→w(/etc/passwd中的w)最终执行:
cat /etc/passwd
如何防御命令执行漏洞?
1. 输入验证(白名单)
2. 使用安全API(参数化执行)
3. 最小权限原则
Web服务以低权限用户运行
禁用危险函数(如PHP的
system()、exec())
4. 沙箱隔离
5. WAF防护
配置规则拦截
;,│,&,$( ),`等危险字符检测异常请求长度(如超长Base64)
命令执行漏洞是Web安全中最具破坏性的漏洞之一。掌握其Payload构造与绕过技巧,不仅有助于渗透测试与CTF竞赛,更能帮助开发者构建更安全的应用。
核心原则:
永远不要信任用户输入!
通过输入过滤、安全API、最小权限和沙箱隔离等多层防御,才能有效抵御RCE攻击。
关注我,获取更多网络安全、数码科技前沿知识!





















