macOS PID Reuse
Last updated
Last updated
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
当 macOS XPC 服务 基于 PID 而不是 审计令牌 检查被调用的进程时,它就容易受到 PID 重用攻击。该攻击基于 竞争条件,其中 利用 将 消息发送到 XPC 服务 滥用 功能,随后执行 posix_spawn(NULL, target_binary, NULL, &attr, target_argv, environ)
使用 允许的 二进制文件。
此函数将使 允许的二进制文件拥有 PID,但 恶意的 XPC 消息会在此之前发送。因此,如果 XPC 服务 使用 PID 来 验证 发送者,并在执行 posix_spawn
之后检查它,它将认为消息来自 授权 进程。
如果你发现函数 shouldAcceptNewConnection
或其调用的函数 调用 processIdentifier
而不调用 auditToken
,这很可能意味着它在 验证进程 PID 而不是审计令牌。
例如在这张图片中(取自参考):
查看这个示例利用(同样取自参考)以查看利用的两个部分:
一个 生成多个分叉
每个分叉 将 发送 有效载荷 到 XPC 服务,同时在发送消息后立即执行 posix_spawn
。
为了使利用有效,重要的是 export`` ``
OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
或将其放入利用中:
第一种选择是使用 NSTasks
和参数来启动子进程以利用 RC
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)