IPC Namespace
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
基本信息
IPC(进程间通信)命名空间是Linux内核的一项功能,提供隔离System V IPC对象,如消息队列、共享内存段和信号量。这种隔离确保不同IPC命名空间中的进程无法直接访问或修改彼此的IPC对象,为进程组之间提供了额外的安全性和隐私保护。
工作原理:
当创建一个新的IPC命名空间时,它将以完全隔离的System V IPC对象集开始。这意味着在新的IPC命名空间中运行的进程默认无法访问或干扰其他命名空间或主机系统中的IPC对象。
在命名空间内创建的IPC对象仅对该命名空间内的进程可见和可访问。每个IPC对象在其命名空间内由唯一的键标识。尽管在不同命名空间中键可能相同,但对象本身是隔离的,无法跨命名空间访问。
进程可以使用
setns()
系统调用在命名空间之间移动,或使用带有CLONE_NEWIPC
标志的unshare()
或clone()
系统调用创建新的命名空间。当进程移动到新的命名空间或创建一个时,它将开始使用与该命名空间关联的IPC对象。
实验:
创建不同的命名空间
CLI
通过挂载新的 /proc
文件系统实例,如果使用参数 --mount-proc
,您可以确保新的挂载命名空间具有特定于该命名空间的进程信息的准确和隔离视图。
Docker
检查您的进程所在的命名空间
查找所有 IPC 命名空间
进入IPC命名空间
此外,您只能以 root 身份进入另一个进程命名空间。并且您不能在没有指向它的描述符的情况下进入其他命名空间(例如 /proc/self/ns/net
)。
创建 IPC 对象
参考
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
Last updated