CentOS常见漏洞利用路径概览
在CentOS上,攻击通常沿着“获取初始访问 → 本地提权 → 持久化/横向移动”的链路展开。下面按典型场景说明常见利用方式、关键条件与防护要点,便于快速定位风险与加固。
典型利用路径与关键条件
| 漏洞/场景 |
利用入口 |
关键条件 |
常见影响 |
| 内核本地提权 |
本地普通用户执行恶意代码 |
内核版本存在漏洞(如CVE-2022-0847 Dirty Pipe:5.8 ≤ 内核 < 5.16.11/5.15.25/5.10.102;CVE-2016-5195 Dirty COW:内核 ≥ 2.6.22;CVE-2021-4034 PwnKit) |
非特权用户获取root |
| 服务类远程代码执行 |
对外Web/中间件(如Apache Struts2 CVE-2017-9791) |
应用存在漏洞且对外可达 |
远程执行命令、获取WebShell |
| 数据库/缓存未授权 |
Redis未授权访问 |
绑定0.0.0.0、无口令/弱口令、未启用保护 |
写crontab反弹Shell、写**~/.ssh/authorized_keys**、主从复制投毒 |
| sudo本地提权 |
本地低权限用户执行sudo |
存在sudo配置/版本漏洞(如CVE-2021-3156) |
从普通用户提权至root |
内核本地提权示例
- Dirty Pipe(CVE-2022-0847):该缺陷允许非特权进程覆盖只读文件。常见做法是用公开PoC覆写**/etc/passwd添加特权用户,或覆盖具有SUID位的可执行文件以获得root shell。影响范围为5.8 ≤ 内核 < 5.16.11/5.15.25/5.10.102**;在这些版本修复后,利用将失效。防护要点是升级至包含修复的内核版本,并清理不必要的SUID文件。
- Dirty COW(CVE-2016-5195):通过竞态条件改写**/etc/passwd等只读文件实现提权,影响广泛(内核 ≥ 2.6.22)。PoC通常先备份原始passwd,再注入特权条目,成功后用su**切换验证。防护要点是升级内核并限制对敏感文件的写权限与可写挂载选项。
- PwnKit(CVE-2021-4034):polkit的pkexec存在本地权限提升缺陷。普通用户运行PoC即可获得root。防护要点是升级polkit至修复版本,并遵循最小权限原则。
服务类远程代码执行示例
- Apache Struts2 CVE-2017-9791(S2-048):在启用struts2-struts1-plugin的场景下,OGNL表达式可被解析执行。攻击者可构造包含OGNL的HTTP请求,触发远程代码执行(RCE)。防护要点是移除/禁用相关插件,升级至安全版本,严格校验输入与白名单执行。
数据库与缓存未授权示例
- Redis未授权访问:若Redis监听0.0.0.0且无认证,攻击者可写入计划任务文件(如**/var/spool/cron/或/etc/cron.d/)实现反弹Shell,写入~/.ssh/authorized_keys获取SSH登录,或通过主从复制投毒加载恶意模块。在CentOS 7上,cron日志通常位于/var/log/cron**,可用于排查异常任务。防护要点包括:绑定127.0.0.1、设置强口令、启用AUTH与rename-command、限制网络访问与部署防火墙策略。
sudo本地提权示例
- CVE-2021-3156(Baron Samedit):sudo存在堆溢出缺陷,本地低权限用户可通过特定参数触发root权限执行。实战中常配合字典/脚本自动化尝试。防护要点是尽快升级sudo至修复版本,审计并收紧sudoers配置,避免授予不必要的NOPASSWD与危险命令权限。
防护与排查要点
- 及时更新系统与组件:内核、glibc、polkit、sudo、Redis、Struts2等保持至官方修复版本。
- 最小暴露面:关闭不必要的端口与服务,限制外网访问,启用防火墙与端口白名单。
- 强化认证与授权:禁用空口令/弱口令,强制口令策略与多因素认证,细化sudoers与文件ACL。
- 文件与权限治理:清理不必要的SUID/SGID与可写关键文件,启用完整性校验(如AIDE)。
- 审计与监控:集中采集与分析**/var/log/secure**、/var/log/cron、auditd日志,关注异常提权与可疑进程。
- 运行环境隔离:容器/虚拟化最小权限运行,启用Seccomp/AppArmor/SELinux等强制访问控制。
合规与安全声明
本文仅用于安全研究、合规自查与防护加固,请勿用于未授权的渗透测试或攻击行为。对生产系统进行测试前必须取得明确书面授权,并自行承担相应风险与法律责任。