Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
PS5-IPV6-Kernel-Exploit — 一个实验性的基于 webkit 的 PS5(固件版本 <= 4.51)内核漏洞利用(任意读写) | Kitploit
工具/GitHubGitHub/cryptogenic/ps5-ipv6-kernel-exploit
嵌入式系统安全权限提升漏洞分析漏洞利用逆向工程后渗透利用二进制利用
GitHubcryptogenic/ps5-ipv6-kernel-exploit

PS5-IPV6-Kernel-Exploit

一个实验性的基于 webkit 的 PS5(固件版本 <= 4.51)内核漏洞利用(任意读写)

查看仓库
9251062年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

PS5 3.xx / 4.xx 内核漏洞利用


摘要

本仓库包含一个基于 TheFlow 的 IPV6 释放后使用(UAF)漏洞 的 PS5 内核漏洞利用的实验性 WebKit ROP 实现,该漏洞已在 HackerOne 上报。漏洞利用策略大体上基于 TheFlow 的 BSD/PS4 PoC,并做了一些修改以适应该死人的 PS5 内存布局(更多内容见 研究笔记 部分)。它建立了一个任意读取 /(半任意)写入原语。此漏洞利用及其能力存在许多限制,因此它主要面向开发人员,用于对系统的某些部分进行逆向工程。

随着最新的稳定性改进,可靠性约为 80%。本文档将包含有关 PS5 的研究信息,并且此漏洞利用将持续开发并在未来继续改进。

有兴趣为 PS5 研究/开发做出贡献的人可以加入我设置的 discord:这里。

该漏洞利用现在应支持以下固件:

  • 3.00
  • 3.10
  • 3.20
  • 3.21
  • 4.00
  • 4.02
  • 4.03
  • 4.50
  • 4.51

当前包含内容

  • 获取任意读写能力,并可运行一个基本的用于读/写的 RPC 服务器(或用于大量读取的转储服务器)(必须将你自己的地址/端口以二进制形式编辑到漏洞文件的第 673-677 行)
  • 启用调试设置菜单(注意:你必须完全退出设置并重新进入才能看到它)。
  • 获取 root 权限

限制

  • 此漏洞利用实现了读/写,但不能执行代码。这是因为我们目前无法转储内核代码以获取 gadget,因为内核 .text 页面被标记为仅可执行内存(XOM)。尝试读取内核 .text 指针将导致 panic!
  • 根据上述原因,加上虚拟机监控器(HV)强制实施的内核写保护,此漏洞利用也无法在内核空间中安装任何补丁或钩子,这意味着目前没有任何与 homebrew 相关的代码。
  • 存在并强制执行基于 Clang 的细粒度控制流完整性(CFI)。
  • 由于 HV,无法禁用管理模式访问阻止/执行(SMAP/SMEP)。
  • 写入原语有些受限,因为字节 0x10-0x14 必须为零(或有效的网络接口)。
    • 不过由于更新的基于管道的思路,现在可以实现完全任意的读/写。

使用方法

  1. 通过 dns.conf 配置 fakedns,将 manuals.playstation.net 指向你 PC 的 IP 地址
  2. 运行假 DNS:python fakedns.py -c dns.conf
  3. 运行 HTTPS 服务器:python host.py
  4. 进入 PS5 高级网络设置,将主 DNS 设置为你 PC 的 IP 地址,并将辅助 DNS 留为 0.0.0.0
    1. 有时手册仍然无法加载,需要重启,不知道为什么,真的很奇怪
  5. 在设置中进入用户手册,接受不受信任的证书提示,然后运行
  6. 可选:运行 rpc/转储服务器脚本(注意:地址/端口必须以二进制形式替换到 exploit.js 中)。

未来工作

  • 修复套接字以干净地退出浏览器(最高优先级)
  • 编写一些数据补丁(第二优先级)
    • 启用调试设置
    • 修补 creds 以获得 uid0
    • 通过 cr_prison 覆盖实现越狱
  • 提高 UAF 可靠性
  • 提高受害者套接字可靠性(第三优先级)
  • 使用比 kqueue 更好/更一致的泄漏目标(不再需要)
  • 使 ELF 加载器支持重定位
    • 添加对更多重定位类型的支持,并可能支持完整的动态链接?

使用 ELF 加载器

要使用 ELF 加载器,请运行漏洞利用直到完成。完成后,它将在 :9020 端口上运行一个服务器。连接并将你的 ELF 通过该端口发送到 PS5,它就会运行它。假设 ELF 不会使浏览器崩溃,那么它可以无限地继续运行 ELF。

漏洞利用阶段

此漏洞利用分 5 个阶段工作,并且大体上遵循与 theflow 的 poc 相同的利用策略。

  1. 触发 ip6_pktopts 上的初始 UAF,并使两个套接字指向同一个 pktopts / 重叠(主套接字 <-> 重叠喷射套接字)
  2. 释放主套接字上的 pktopts,并使用包含标记 tclass 重叠的 ip6_rthdr 喷射来伪造它。
  3. 信息泄漏步骤。利用 pktopts/rthdr 重叠从 0x200 slab 泄漏 kqueue,并从 0x100 slab 泄漏 pktopts。
  4. 任意读/写步骤。再次伪造 pktopts 并找到重叠套接字,以使用 IPV6_RTHDR 作为读/写原语。
  5. 清理 + 补丁步骤。增加损坏套接字上的引用计数以成功退出浏览器 + 修补数据以启用调试菜单并修补 ucreds 以获得 uid0。
  6. 运行 ELF 加载器服务器,该服务器将接受并加载/运行 ELF。目前是 WIP,暂不支持重定位。

稳定性说明

此漏洞利用的稳定性约为 30% 80-90%,并且有两个潜在的失败点。按观察到的可能性降序排列:

  1. 阶段 1 未能回收 UAF,导致立即崩溃或导致崩溃的潜在损坏。
  2. 阶段 4 未能找到受害者套接字

研究笔记

  • 根据使用读取原语进行的各种测试和转储,PS5 似乎已恢复到 0x1000 页大小,而 PS4 是 0x4000。

    • 经过进一步研究,页大小确实仍然是 0x4000,但由于一些疯狂的分配器更改,不同的 slab 可以分配在同一个虚拟页面中。
  • 在 PS5 上,相邻页面似乎也很少属于同一个 slab,因为你会看到相邻页面中的数据差异很大。内存布局似乎更加分散。

  • 通常当 PS5 panic(至少在 webkit 上下文中)时,会出现糟糕的音频输出,因为音频缓冲区以某种方式被破坏。

  • 有时这种音频损坏会持续到下次启动,不知道为什么。

  • 与 PS4 类似,PS5 在 panic 后需要手动按主机上的电源按钮两次才能重启。

  • 如果 PS5 与互联网隔离,那么从 panic 中重启需要非常长的时间是正常的(不幸的是)。预计启动需要 3-4 分钟。

贡献者 / 特别感谢

  • Andy Nguyen / theflow0 - 漏洞和利用策略
  • ChendoChap - 在测试和研究方面提供各种帮助
  • Znullptr - 研究/逆向工程
  • sleirsgoevy - 研究/逆向工程 + 利用策略想法
  • bigboss - 研究/逆向工程
  • flatz - 研究/逆向工程 + 补丁方面的帮助
  • zecoxao - 研究/逆向工程
  • SocracticBliss - 研究/逆向工程
  • laureeeeeee - 底层低级系统知识和协助

感谢测试人员

  • Dizz (4.50/4.51)
下载工具