Linux exploit利用案例分析与总结
导读:Linux Exploit 利用案例分析与总结 一 典型利用路径与案例 内核本地提权 脏牛 CVE-2016-5195:通过写时复制(COW)竞态修改只读映射,获取任意写并最终提升到root。常见于获取 WebShell 后的本地提权链...
Linux Exploit 利用案例分析与总结
一 典型利用路径与案例
- 内核本地提权
- 脏牛 CVE-2016-5195:通过写时复制(COW)竞态修改只读映射,获取任意写并最终提升到root。常见于获取 WebShell 后的本地提权链路,如 Drupalgeddon2 获取 www-data 后利用脏牛提权。影响广泛、利用门槛低,是经典的“先入站、后本地提权”范式。
- CVE-2022-0874:Linux 内核 splice 系统调用未正确初始化管道缓存的 PIPE_BUF_FLAG_CAN_MERGE,导致可将可控数据写入页缓存,进而篡改如 /etc/passwd /etc/group 等文件实现提权。影响内核版本:5.8 ≤ kernel < 5.16.11 / 5.15.25 / 5.10.102。
- 本地服务与配置滥用
- Rsync 未授权访问:默认端口 873,未鉴权可列模块、下载敏感文件,配合 /etc/cron.hourly 等计划任务写入反弹 Shell,等待定时触发获取 root。
- Docker 组挂载:普通用户处于 docker 组时,可通过
docker run -v /root:/mnt -it alpine挂载宿主 /root,直接读取或修改敏感文件,进而提权。
- 提权“快捷方式”
- sudo 堆溢出 CVE-2021-3156(Baron Samedit):本地可通过
sudoedit -s /报错特征判断漏洞是否存在,利用堆溢出在无需凭据情况下获取 root。影响版本:sudo 1.8.2–1.8.31p2、1.9.0–1.9.5p1。 - Polkit 本地提权 CVE-2021-4034(PwnKit):自 2009 年 5 月起的多版本 polkit 受影响,常见发行版如 CentOS、Ubuntu、Debian、Red Hat、Fedora、Gentoo、Mageia 等,触发后可获得 root。
- sudo 堆溢出 CVE-2021-3156(Baron Samedit):本地可通过
- 二进制与 SUID/GTFObins
- SUID 滥用:查找 SUID root 程序(如
find / -perm -4000 -type f 2> /dev/null),结合程序功能或已知缺陷实现提权;配合 GTFOBins 查询可用技巧。
- SUID 滥用:查找 SUID root 程序(如
- 内核堆利用技术
- 基于堆的 Off-By-One:单字节溢出可覆盖相邻 chunk 的 size 最低位,在 glibc malloc 中诱发不一致状态,进而劫持控制流(经典教学案例,展示从溢出到任意代码执行的路径)。
- Malloc Maleficarum:如 House of Force / House of Spirit / House of Mind 等技巧,在特定堆布局与约束下实现任意写或 GOT 覆盖,进而获取 shell。
二 通用攻击流程与常用命令
- 信息收集与枚举
- 系统与内核:
uname -a、cat /etc/*-release、lsb_release -a - 进程与服务:
ps aux、top、netstat -tulpn、lsof -i - 计划任务与定时:
crontab -l、cat /etc/cron* - 敏感文件与凭证:
cat /etc/passwd、/etc/shadow、grep -Ri "password" /var/www /home 2> /dev/null - SUID/SGID:
find / -perm -4000 -type f 2> /dev/null、find / -perm -2000 -type f 2> /dev/null - 网络与连接:
ifconfig -a、route -n、arp -e、ss -antp
- 系统与内核:
- 漏洞探测与验证
- 本地脚本与工具:LinEnum、linuxprivchecker、linux-exploit-suggester / linux-exploit-suggester-2
- 针对性验证:如
sudo --version、sudoedit -s /(CVE-2021-3156 特征)、dpkg -l policykit-1(Polkit 是否存在)
- 利用与提权
- 编译与执行:在目标上
gcc/ g++编译 EXP,必要时使用chmod +x赋予执行权限 - 反弹与持久化:准备 nc 监听、写入 cron、替换/追加 authorized_keys
- 编译与执行:在目标上
- 环境准备与调试
- 内核/虚拟化:使用 QEMU + GDB 搭建调试环境,常用命令:
qemu-system-x86_64 -kernel bzImage -initrd rootfs.cpio -s -append "nokaslr"(关闭 KASLR 便于调试)。
- 内核/虚拟化:使用 QEMU + GDB 搭建调试环境,常用命令:
三 防护与检测要点
- 及时修补与最小化暴露
- 内核与关键组件(如 sudo、polkit、docker、rsync)保持及时更新;未使用的服务关闭或限制访问(如 rsync 873 仅限内网、启用鉴权)。
- 权限最小化与隔离
- 谨慎授予 SUID/SGID;定期审计并清理不必要的 SUID 二进制;将用户移出 docker 等高权限组;容器以最小权限运行,避免挂载宿主敏感目录。
- 计划任务与脚本安全
- 严格控制 /etc/cron、/var/spool/cron* 权限与属主;避免在计划任务中直接执行可被篡改的脚本/二进制;对关键目录设置不可写。
- 强化系统防护
- 启用 ASLR、PIE、RELRO、Stack Protector 等编译/内核防护;限制 LD_PRELOAD / ptrace;对公网服务采用最小权限与隔离(容器/命名空间/Seccomp/AppArmor/SELinux)。
- 监测与响应
- 审计关键文件(如 /etc/passwd、/etc/shadow、/etc/group、/etc/sudoers)的异常修改;监控 cron 异常任务、docker 异常挂载与 sudo 异常调用;部署 EDR/主机加固 并保留审计日志。
四 实战要点与排错清单
- 交互式 Shell 与稳定性
- 受限/哑 shell 可通过
python -c 'import pty; pty.spawn("/bin/bash")'或echo os.system('/bin/bash')提升交互性,便于后续操作与调试。
- 受限/哑 shell 可通过
- 编译与运行环境
- 尽量在目标环境本地编译 EXP,避免架构/库不匹配;必要时静态编译或携带依赖;注意 glibc 版本差异导致的崩溃。
- 绕过 ASLR 与信息泄露
- 结合信息泄露或可控映射降低随机化影响;在受控实验环境可临时关闭 ASLR 进行验证(如
echo 0 > /proc/sys/kernel/randomize_va_space),实战中需采用信息泄露/爆破等替代方法。
- 结合信息泄露或可控映射降低随机化影响;在受控实验环境可临时关闭 ASLR 进行验证(如
- 利用稳定性与清理
- 内核利用注意并发/时序与崩溃风险,优先选择稳定的公开 EXP;提权成功后及时清理痕迹(如 cron 任务、临时文件、新增用户/密钥)。
免责声明
- 本内容仅用于合规的安全研究、教学与防护目的。任何对未授权系统的测试、入侵或利用均可能触犯当地法律并造成损害。进行安全测试前请确保已获得明确、书面的授权。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux exploit利用案例分析与总结
本文地址: https://pptw.com/jishu/785336.html
