Files
2025-09-27 22:15:00 +08:00

76 lines
4.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
### 说说 PAM 软连接提权 / 后门原理
**一、PAM 软连接提权的核心原理**
PAM 软连接提权攻击并非针对 PAM 框架本身的漏洞,而是针对**某个依赖 PAM 进行认证或配置的**、**以高权限运行的服务或程序**
**1. 提权攻击的三个关键要素**
| 要素 | 描述 |
| ---------------------------- | ------------------------------------------------------------ |
| **高权限写入操作** | 存在一个以 **Root 或其他高权限用户** 身份运行的服务或程序,它会在特定时刻对某个文件执行 **写入**、**创建** 或 **修改** 操作 |
| **可预测或可控制的文件路径** | 这个高权限程序操作的文件路径是 **可预测的**,或者攻击者可以 **控制** 该程序操作的路径(例如,写入一个日志文件或临时文件) |
| **软连接(Symlink** | 攻击者在程序操作之前,用一个 **软连接** 替换掉预期的目标文件。这个软连接指向攻击者希望修改的 **敏感系统文件**(如 `/etc/passwd``/etc/shadow` 或 PAM 配置文件本身) |
**2. PAM 相关的攻击流程**
PAM 相关的软连接提权通常发生在以下场景:
1. **低权限用户**发现一个**高权限程序**(例如,一个系统服务、一个设置工具,甚至某些 `sudo` 配置允许的命令)在运行时,会以 **高权限**身份在某个**可预测的**路径下创建一个**临时文件**或**日志文件**
2. 攻击者通过以下步骤发起攻击:
- **步骤 1:删除/准备**:确保目标临时文件(例如 `/var/tmp/service.log`)不存在,或者可以被低权限用户删除
- **步骤 2:创建软连接**:在临时文件的位置,**创建一个软连接**,将其指向受保护的敏感文件,例如 `/etc/passwd``/etc/shadow`
```bash
# 假设高权限程序会写入 /tmp/privileged_log.txt
ln -sf /etc/shadow /tmp/privileged_log.txt
```
- **步骤 3:触发高权限操作**:攻击者触发那个高权限程序运行
- **步骤 4:欺骗成功**:高权限程序启动后,尝试以**Root 权限**写入 `/tmp/privileged_log.txt`。但由于软连接的存在,程序实际上将数据写入了**/etc/shadow**(或 `/etc/passwd`
3. **最终结果**:攻击者成功地以 Root 权限修改了敏感系统文件,例如在 `/etc/shadow` 中插入了一个新的、拥有 Root 权限的账户或修改了现有账户的密码哈希,从而实现提权
**二、PAM 软连接后门原理**
PAM 软连接提权是利用**文件操作**的缺陷;而 PAM 后门则更直接地针对**PAM 的配置和模块加载机制**
PAM 的灵活性允许系统管理员通过修改**/etc/pam.d/**目录下的配置文件,来控制每个应用程序(如 `sshd`、`login`、`sudo`)如何进行认证、账户管理、会话启动等
PAM 后门的核心原理就是:**修改 PAM 配置文件,或将恶意 PAM 模块植入到配置中**
**1. 恶意 PAM 模块植入**
这是最常见的 PAM 后门方式,一旦成功,**任何**经过被修改的 PAM 服务的认证都将被记录或绕过
1. **编写恶意模块**:攻击者编写一个恶意的 PAM 模块(一个 `.so` 文件,例如 `pam_evil.so`
- 该模块可以实现**无密码登录**(即始终返回 `PAM_SUCCESS`
- 或实现**凭证记录**(将输入的用户名和密码记录到攻击者可访问的文件中)
2. **植入配置**:如果攻击者已经以某种方式获得了 Root 权限(例如通过前面提到的软连接提权),他们会修改目标服务的 PAM 配置文件(例如 `/etc/pam.d/sshd`):
```bash
# /etc/pam.d/sshd 示例 (被修改后)
auth required pam_permit.so
# 在这里插入恶意模块
auth sufficient /lib/security/pam_evil.so debug
# ... 其他行
```
3. **结果**:当用户通过 SSH 登录时,PAM 框架加载 `pam_evil.so`。如果该模块被配置为 `sufficient`,它将立即返回成功,允许攻击者或任何指定用户以该模块设定的方式(例如,使用任何密码)登录系统
**2. 软连接在后门中的应用**
软连接提权可以作为 **实现 PAM 后门** 的 **前置步骤**
如果攻击者发现某个高权限程序会写入一个文件,且该文件路径位于 `/etc/pam.d/` 目录附近或 `/lib/security/` 目录下(PAM 模块的常见存放位置),攻击者就可以利用软连接欺骗该高权限程序,将:
- 恶意 PAM 模块(`.so` 文件)写入 `/lib/security/` 目录
- 或者修改 `/etc/pam.d/` 下的某个服务配置文件