### 说说 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/` 下的某个服务配置文件