CVE-2015-1328 的漏洞利用概念验证(PoC),这是一个影响 Linux 内核 overlayfs 实现的权限提升漏洞。该漏洞允许本地非特权用户通过利用用户命名空间中 overlayfs 挂载操作的不当权限检查来获得 root 权限。
CVE-2015-1328 是一个严重的安全漏洞,影响启用了 overlayfs 支持和用户命名空间的 Linux 内核。该漏洞允许非特权本地用户:
unshare(CLONE_NEWUSER) 创建用户命名空间/etc/ld.so.preload此 PoC 通过以下方式演示该漏洞:
/etc/ld.so.preload 注入自定义共享库getuid() 以执行 root shellkernel.unprivileged_userns_clone=1)-m32 标志)项目包含一个 Makefile 以便轻松编译:
make
这将编译:
ofs - 主要漏洞利用二进制文件(静态 32 位)ofs-lib.so - 用于 LD_PRELOAD 钩子的共享库(32 位)如果你更喜欢手动编译:
# 编译主要漏洞利用
gcc -o ofs ofs.c -m32 -static
# 编译共享库
gcc -m32 -fPIC -shared -o ofs-lib.so ofs-lib.c -ldl -static-libgcc
⚠️ 警告:此漏洞利用将修改系统文件并试图获取 root 权限。仅在受控环境中并拥有适当授权时才能使用。
编译漏洞利用:
make
运行漏洞利用:
./ofs
如果成功,漏洞利用将:
/etc/ld.so.preload/bin/su,触发恶意库unshare(CLONE_NEWUSER) 创建新的用户命名空间CLONE_NEWNS 的 clone() 创建挂载命名空间/etc/ld.so.preload/tmp/ofs-lib.so/bin/su,触发预加载的库getuid() 并生成 root shellclone() 创建隔离的挂载命名空间ofs-lib.so)通过 LD_PRELOAD 钩住 getuid()/bin/su 调用 getuid() 时,恶意函数会被执行.
├── ofs.c # 主要漏洞利用代码
├── ofs-lib.c # 用于权限提升的共享库
├── lib_so.h # 嵌入的二进制库数据
├── Makefile # 构建配置
└── README.md # 本文件
getuid() 钩子要防范此漏洞:
echo 0 > /proc/sys/kernel/unprivileged_userns_clone
此代码仅用于教育和安全研究目的。
本项目按原样提供,用于教育目的。请负责任地使用,并遵守所有适用的法律法规。