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

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

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

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

工具目录

分类

查看所有分类
Loading categories
PS5-UMTX-Jailbreak — 适用于 PS5 的基于 WebKit 的内核漏洞利用与越狱 | Kitploit
工具/GitHubGitHub/ps5dev/ps5-umtx-jailbreak
权限提升漏洞利用后渗透利用二进制利用
GitHubps5dev/ps5-umtx-jailbreak

PS5-UMTX-Jailbreak

适用于 PS5 的基于 WebKit 的内核漏洞利用与越狱

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

PS5 UMTX 越狱


概述

该仓库包含一个针对 UMTX 竞争条件释放后使用(CVE-2024-43102)漏洞 的 WebKit ROP 漏洞利用,该漏洞由 Synacktiv 报告。它基本上是 fail0verflow 的 和 flatz 的 漏洞利用策略的移植。它滥用 UAF 来获得对内核线程栈的读/写映射,并利用管道读写在内核中建立一种(不太理想的)任意读/写原语。随后,该读写被升级为一种更好的原语,利用 ipv6 套接字对和管道对实现稳定的读写,并可以像之前的 IPV6 PS5 内核漏洞利用 那样传递给有效载荷。

该页面本身是 idlesauce 的 PS5 Exploit Host 的精简修改版本,因为它已经完成了将 psfree 与我之前使用的代码风格相结合的工作。这个 Host 也是我个人运行东西的选择,因为它非常流畅并集成了有用的有效载荷,希望它能在不久的将来更新以支持这个漏洞利用 <3。

最终会启动一个有效载荷加载器,在端口 9021 上监听有效载荷 ELF。我推荐 PS5 Payload Dev SDK,因为当添加内核偏移后,它应该与该加载器完全兼容。

该漏洞影响 1.00 固件至 7.61 固件,但 FW >= 3.00 似乎有额外的缓解措施,需要调整漏洞利用才能生效。由于我主要对较低固件感兴趣,因此该漏洞利用目前还不支持 FW >= 3.00。 此外,我们链式利用的 WebKit 漏洞已在 6.00 中修复,因此这些系统将需要另一个能够实现用户态读写的 WebKit 漏洞利用。再次说明,由于我不专注于较高固件,这部分目前尚未完成。

重要说明

  • 3.00+ 可靠性较低,可能需要更长时间才能执行,如果你长时间卡在“触发竞争”,请关闭浏览器并重试。
  • 5.00+ 目前 ELF 加载器无法工作,因为我们无法再正确调用 dlsym,payload SDK 需要更改。

目前支持以下固件:

  • 1.xx [1.00, 1.01, 1.02, 1.05, 1.10, 1.11, 1.12, 1.13, 1.14]
  • 2.xx [2.00, 2.20, 2.25, 2.26, 2.30, 2.50, 2.70]
  • 3.xx [3.00, 3.20]
  • 4.xx [4.00, 4.02, 4.03, 4.50, 4.51]
  • 5.xx [5.00, 5.02, 5.10, 5.50]

当前包含

  • 获取内核任意读写
  • 启用调试设置菜单(注意:你需要完全退出设置并重新进入才能看到它)。
  • 获取 root 权限并逃逸沙箱/监狱。
  • 在端口 9021 上运行 John Tornblom 的 ELF 加载器以执行有效载荷(在 < 5.00FW 上)

局限性

  • 该漏洞利用实现了读写,但不能执行代码。这是因为我们目前无法转储内核代码以获取 gadget,因为内核 .text 页面被标记为仅执行内存(XOM)。尝试读取内核 .text 指针将导致 panic!
  • 鉴于上述原因,加上虚拟机监控器(HV)强制内核写保护,该漏洞利用也无法在内核空间安装任何补丁或钩子。
  • 基于 Clang 的细粒度控制流完整性(CFI)存在并强制执行。
  • 由于 HV 的原因,无法禁用监管模式访问保护/执行保护(SMAP/SMEP)。
  • FW >= 6.00 需要新的 WebKit 漏洞利用,因此不受支持。

使用方法

  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. 可选:取消注释内核 .data 转储代码并运行转储服务器脚本(注意:必须在 exploit.js 中替换地址/端口)。

未来工作

  • 更新 FW >= 3.xx 的漏洞利用策略以应对缓解措施
  • 为更多(较低)固件添加偏移
  • 为 FW >= 6.00 添加 WebKit 漏洞利用。

使用 ELF 加载器

要使用 ELF 加载器,请运行漏洞利用直至完成。完成后,它将在端口 :9021 上运行一个服务器。通过 TCP 连接并将你的 ELF 发送到 PS5,它就会运行它。即使退出浏览器,该加载器也应继续接受并执行有效载荷。

漏洞利用策略说明

初始双重释放

该漏洞利用的策略主要来自 fail0verflow 和 flatz。有关该漏洞的更多信息,请参阅 chris@accessvector 的文章。利用该漏洞后,它实际上给了我们一个双重释放。我们可以利用这一点,将内核栈的 vmobject 与 mmap 映射的 vmobject 重叠,从而获得进入内核线程栈的窗口。这种非常强大的能力让我们能够读/写栈上的任意内核指针,从而击败 ASLR 并能够创建各种原语。我们能够访问其栈的线程称为受害者线程。

获取任意读写

通过创建一个管道并在主线程上填满管道缓冲区,然后尝试使用受害者线程向其写入,受害者线程将阻塞,等待缓冲区中出现可用空间。在此期间,我们可以利用进入内核栈的窗口,将 iovec 指针改为内核指针,并设置标志,使它们被当作内核地址处理。然后通过在主线程上读取管道,即可获得内核任意读。

类似地,让受害者线程在管道上进行读取,它将阻塞等待传入数据。然后,我们可以再次覆写 iovec 指针,将它们变为内核指针,并在主线程上写入数据,从而获得内核任意写。

升级任意读写

到了这个阶段,我们拥有一个没有真正限制的任意读/写,但它的工作依赖于多线程和阻塞,这并不理想。然后,我们使用该读写遍历进程的 FD 表,并重叠两个 IPV6 套接字的 pktopts。接着,我们可以通过 IPV6_PKTINFO 套接字选项创建另一个任意读写。不过,这个读写原语同样不理想,因为底层套接字选项限制了它的大小和内容。我们保留这一步主要是为了模拟 IPV6 漏洞利用的场景,大多数有效载荷等都是基于该场景构建的。

我们可以通过管道获得更好的读写。再次遍历进程的 FD 表并修改 pipemap 缓冲区对象,即可建立读写。IPV6 套接字对用作控制 pipemap 缓冲区的机制。

修复/规避损坏

如果我们保持原样并尝试关闭浏览器,系统将会崩溃。这是因为进程清理会尝试释放已经被释放的内核栈。为避免这种情况,我们做两件事:

  1. 故意泄漏我们用于初始双重释放的 shm FD 上的引用计数,使其在进程退出时不被释放
  2. 将进程线程列表中受害者线程的 td_kstack 清零。

稳定性说明

在 FW < 3.00 上,该漏洞利用非常稳定。唯一关键的失败点是无法重叠 vmobject。在较高固件上,由于页面/堆分配器层面所谓的缓解措施,这种重叠更难实现。

致谢 / 鸣谢

  • fail0verflow
  • flatz
  • ChendoChap
  • SlidyBat
  • abc/psfree
  • idlesauce
  • Znullptr
  • zecoxao
  • SocracticBliss
  • John Tornblom

Discord

有兴趣为 PS5 研究/开发做出贡献的人可以加入我搭建的 Discord 这里。

下载工具