本仓库提供了一个自包含、交互式的Docker环境,可安全演示和分析 "Dirty Pipe" 权限提升漏洞。它旨在作为安全专业人士的教育工具,帮助在受控环境中理解关键内核级漏洞的机制。
Dirty Pipe 是 Linux 内核(影响 5.8 及更高版本)中发现的一个严重漏洞。它允许本地无权限用户覆盖任意只读文件中的数据。
其影响极为严重:通过覆盖像 /etc/passwd 或 SUID 二进制文件这样的敏感文件,攻击者可以轻松将权限提升至 root,从而完全控制系统。该漏洞之所以特别危险,是因为它绕过了标准的文件权限检查——这是 Linux 中一项基础的安全控制机制。
本项目利用 Docker 创建一个安全、隔离且刻意存在漏洞的环境。这使得任何人都可以研究该漏洞,而无需危及自身的主机系统。
主要组件包括:
Dockerfile:定义了我们易受攻击容器的蓝图。它使用一个已知受到 Dirty Pipe 影响的较旧基础镜像(debian:bullseye-20210927-slim),并自动设置环境。exploit.c:实现漏洞利用逻辑的 C 代码,基于 Max Kellermann 的原始概念验证。Makefile:一个简单的 makefile,用于在容器内将 C 代码编译为可执行二进制文件。本引导将指导你构建环境并执行漏洞利用。
前提条件: 你的系统上必须已安装并运行 Docker。
打开终端,克隆本项目。
git clone https://github.com/mrchucu1/CVE-2022-0847-Docker.git
cd CVE-2022-0847-Docker
使用 docker build 命令创建容器镜像。Dockerfile 将处理所有依赖关系并编译漏洞利用代码。
docker build -t dirty-pipe-demo .
现在,以交互模式运行容器。--rm 标志确保容器在退出时被删除,-it 则为你提供一个交互式终端。
docker run --rm -it dirty-pipe-demo
你将进入容器内的一个 shell,身份为无权限用户(hacker@...:/$)。
现在,执行预编译的漏洞利用程序:
# 你当前是一个无权限用户。
# 你的提示符看起来像这样:hacker@<container_id>:/$
#
# 现在运行漏洞利用...
./exploit
成功! 漏洞利用程序覆盖了一个 SUID 二进制文件,从而为你提供 root shell。你的终端提示符将从 $ 变为 #,表示你现在拥有 root 权限。
# 漏洞利用已成功。
# 你的提示符现在是 root shell: # whoami
root
#
本项目不仅仅是运行一个脚本;它是对我作为云安全工程师工作中至关重要的安全原则的实际演示:
本项目及其代码仅供教育和研究目的使用。请勿在任何未经明确授权的系统上尝试使用此漏洞利用程序。