关于
这里将发布我对公开漏洞利用(Public Exploits)的分析,以及我的一些 1day 漏洞利用。
[ 公开漏洞利用分析 ]
- 就我个人而言,学习一个公开漏洞利用的最好方式就是逐行理解它,直到我能够最透彻地掌握该漏洞利用。我会发布其中一些(过度注释的 ;) )漏洞利用,希望能让其他人也能从中学习,也作为回馈社区的一种尝试。同时也是为了记录存档,因为随着时间流逝,这些东西会逐渐从我脑海中淡忘。
CVE-2016-8655
CVE-2016-5342
mp3 版本
tty 版本
- 这是 freener 的 Android LPE 漏洞利用 的注释版本。
- arm32
- 堆溢出
- 该漏洞利用覆盖了另一个对象中的对象指针。它使用 ret2dir 攻击使被破坏的指针指向内核中一个可预测的固定地址,该地址存放着漏洞利用载荷。这种利用技术绕过了 PXN 和 PAN。
CVE-2016-2434
- 这是 Jianqiang Zhao 的 Android LPE 漏洞利用 的注释版本。
- arm64
- 在任意地址清零 16 字节
- 该漏洞利用清除某个有用全局对象的 16 字节,该全局对象位于内核中的一个固定地址。
- 全局对象中被破坏的对象指针引用了来自用户态的漏洞利用载荷。这类攻击在带有 PAN(或 PAN 模拟)的设备/内核上将无法生效。
- 我尝试理解 extra_recipe 越狱。
- 我尤其对 kpp 绕过部分感兴趣。虽然有少数几页幻灯片能让我对绕过方式有一个模糊的印象,但我真的很想深入细节,看看代码内部到底发生了什么。
- 我还想了解越狱所需要的最后几个要素(安装 Cydia 等)。
yalu102 (ViewController.m)
- 我对与真实漏洞相关以及如何利用它的部分进行了注释。
- 我看 yalu102 而不是原始漏洞利用的原因,是因为端口风水(port-feng-shui)技术看起来更干净、更易于直接理解。
- 分析到 kpp 绕过之前就停止了。
- 我跳到这里是因为它对各种数值偏移量有更多一点的信息。
- 另外,patchfinder.c 是完整的,而 yalu102 中只有一个目标文件。
- Cydia 部分有点不完整,所以我在 kpp 之后跳到了 cydia 分支。
- 尝试理解在 tfp0 和后利用之后,一个越狱所需要的要素。
empty_list (sploit.c)
- 对 Ian Beer 的 empty_list 内核漏洞利用 的详细分解。
- 它使用了令人惊叹的技术,从非常弱的原语出发,构建出更强的 AAR,最终构建出一个完整的 task port。漏洞利用代码背后的 port 魔法令人难以置信。所有这一切都基于一个 8 个 NULL 字节的堆溢出。绝对令人大开眼界。
- 我草草记下了一些朴素的想法来提升可靠性。希望未来有人能发布一个更可靠的漏洞利用版本。:)
- 感谢 Ian Beer 带来的这个出色的漏洞利用!
CVE-2018-4233
- 这是 @niklas_b 的 iOS Webkit 漏洞利用 的注释版本。
- 非常感谢 kudima(@begger_dd),他提供了非常清晰简洁且注释详尽的分析文章!:)
- 该分析文章解释了 JIT 类型混淆漏洞、装箱/拆箱转换上的一些限制(这些限制可能会引入不可靠性),以及早期/晚期 AAR/AAW 原语是如何构建的详细步骤。他还对最近一轮缓解措施(索引掩码、ArrayBuffer 后备存储投毒、W^X JIT 机制的一些变化、JSObject 结构的变化等)之后利用技术的变化提供了见解。
jsc_ConcatMemcpy_infoleak
- 这是 kudima 的 WebKit 信息泄露漏洞利用的注释版本(于 2018.8.27 修复)。
- 它源于 lokihardt 报告的一个漏洞的修补不完整。lokihardt 报告的补丁修复了 Double -> Object 类型混淆原语,但没有修复反方向的问题:Object -> Double。
- 它向 webkit 堆喷射包含单个对象和标记的 butterfly,随后触发 concat 漏洞,用未初始化的堆数据填充多个 double 数组的很大一部分。它遍历这些由 concat 漏洞产生的未初始化 double 数组,直到找到先前喷射对象的地址,并将其泄露。
- 再次感谢 kudima(@begger_dd)带来的出色漏洞利用和分析文章!:)
[ 1Day ]
CVE-2017-2547
- 有一天,在 Zer0con 2018 上展示之后,我研究了 singi 的漏洞利用,并决定对其进行改进。
- 这是该漏洞利用的独立版本,在我将其集成到 pwnjs 之前。
- 改进包括:
- 提高可靠性(在内存被污染的大量浏览会话后仍能完美运行)
- 移除了所有硬编码偏移量,以兼容各种浏览器版本
- 使用了不同的利用技术(标准的错位(misalign)技术)
- 最终通过创建 webkit 原型将其集成到 pwnjs 框架中
- 使代码更具可读性,并添加了大量注释
- 特别感谢
- qwertyoruiop 与 Samuel Grob 带来的出色 phrack 文章和公开漏洞利用
- Brian Pak 与 Andrew Wesie 带来的出色 pwnjs 框架!