Abusing Docker Socket for Privilege Escalation
通过 htARTE (HackTricks AWS 红队专家)从零开始学习 AWS 黑客攻击!
支持 HackTricks 的其他方式:
如果您想在 HackTricks 中看到您的公司广告或下载 HackTricks 的 PDF,请查看订阅计划!
发现我们的独家NFTs 集合,The PEASS Family
加入 💬 Discord 群组 或 telegram 群组 或在 Twitter 🐦 @carlospolopm上关注我。
通过向 HackTricks 和 HackTricks Cloud github 仓库提交 PR 来分享您的黑客技巧。
有些情况下,您只能访问 docker socket,并希望使用它来提升权限。有些操作可能非常可疑,您可能希望避免它们,因此在这里您可以找到不同的标志,这些标志对于提升权限可能有用:
通过挂载
您可以挂载文件系统的不同部分到以 root 身份运行的容器中,并访问它们。 您还可以滥用挂载来在容器内提升权限。
-v /:/host-> 在容器中挂载宿主机的文件系统,以便您可以读取宿主机的文件系统。如果您想在容器中感觉像在宿主机上,您可以使用以下标志禁用其他防御机制:
--privileged--cap-add=ALL--security-opt apparmor=unconfined--security-opt seccomp=unconfined-security-opt label:disable--pid=host--userns=host--uts=host--cgroupns=host**
--device=/dev/sda1 --cap-add=SYS_ADMIN --security-opt apparmor=unconfined** -> 这与前一种方法类似,但在这里我们正在挂载设备磁盘。然后,在容器内运行mount /dev/sda1 /mnt,您可以在/mnt中访问 宿主机的文件系统在宿主机上运行
fdisk -l来找到要挂载的</dev/sda1>设备-v /tmp:/host-> 如果由于某种原因您只能挂载宿主机的某个目录,并且您在宿主机内部有访问权限。挂载它并在挂载的目录中创建一个具有 suid 的/bin/bash,以便您可以从宿主机执行它并提升为 root。
请注意,您可能无法挂载 /tmp 文件夹,但您可以挂载不同的可写文件夹。您可以使用以下命令找到可写目录:find / -writable -type d 2>/dev/null
请注意,并非所有 Linux 机器上的目录都支持 suid 位! 为了检查哪些目录支持 suid 位,请运行 mount | grep -v "nosuid" 例如,通常 /dev/shm、/run、/proc、/sys/fs/cgroup 和 /var/lib/lxcfs 不支持 suid 位。
还请注意,如果您可以挂载 /etc 或任何其他包含配置文件的文件夹,您可以从 docker 容器中以 root 身份更改它们,以便在宿主机上滥用它们并提升权限(可能修改 /etc/shadow)
从容器中逃逸
--privileged-> 使用此标志,您移除了容器的所有隔离。查看技术以从具有 root 权限的特权容器中逃逸。--cap-add=<CAPABILITY/ALL> [--security-opt apparmor=unconfined] [--security-opt seccomp=unconfined] [-security-opt label:disable]-> 为了滥用能力进行提升,授予容器该能力并禁用其他可能阻止漏洞利用工作的保护方法。
Curl
在这个页面上,我们讨论了使用 docker 标志提升权限的方法,您可以在以下页面中找到使用 curl 命令滥用这些方法的方式:
AuthZ& AuthN - Docker Access Authorization Plugin通过 htARTE (HackTricks AWS 红队专家)从零开始学习 AWS 黑客攻击!
支持 HackTricks 的其他方式:
如果您想在 HackTricks 中看到您的公司广告或下载 HackTricks 的 PDF,请查看订阅计划!
发现我们的独家NFTs 集合,The PEASS Family
加入 💬 Discord 群组 或 telegram 群组 或在 Twitter 🐦 @carlospolopm上关注我。
通过向 HackTricks 和 HackTricks Cloud github 仓库提交 PR 来分享您的黑客技巧。
最后更新于