PPPwn 是适用于 PlayStation 4 固件版本 11.00 及更高版本的内核远程代码执行漏洞。这是 CVE-2006-4304 的概念验证漏洞,已负责任地向 PlayStation 报告。
支持的版本有:
固件 7.00 / 7.01 / 7.02
固件 7.50 / 7.51 / 7.55
固件 8.00 / 8.01 / 8.03
固件 8.50 / 8.52
固件 9.00
固件 9.03 / 9.04
固件 9.50 / 9.51 / 9.60
固件 10.00 / 10.01
固件 10.50 / 10.70 / 10.71
固件 11.00
可以添加更多内容(欢迎 PR)
该漏洞仅在您的 PS4 上打印PPPwned
作为概念验证。为了启动 Mira 或类似的自制软件启用程序,需要调整stage2.bin
有效负载。
具有以太网端口的计算机
USB 适配器也可以使用
以太网线
Linux
您可以使用 VirtualBox 创建一个使用Bridged Adapter
作为网络适配器的 Linux VM,以使用 VM 中的以太网端口。
安装了Python3和gcc
在您的计算机上,克隆存储库:
git clone --recursive https://github.com/TheOfficialFloW/PPPwn
将目录更改为克隆的存储库:
PPPwn
安装要求:
sudo pip install -r 要求.txt
编译有效负载:
make -C stage1 FW=1100 clean && make -C stage1 FW=1100 使-C stage2 FW = 1100干净&&使-C stage2 FW = 1100
对于其他固件,例如 FW 9.00,请传递FW=900
。
暂时不要运行漏洞利用程序(暂时不要按 Enter 键),但在提示符下准备此命令(请参阅ifconfig
了解正确的界面):
sudo python3 pppwn.py --interface=enp0s3 --fw=1100
对于其他固件,例如 FW 9.00,请传递--fw=900
。
在你的 PS4 上:
转到Settings
,然后转到Network
选择Set Up Internet connection
并选择Use a LAN Cable
选择Custom
设置并选择PPPoE
作为IP Address Settings
输入PPPoE User ID
和PPPoE Password
DNS Settings
和MTU Settings
选择Automatic
选择Do Not Use
用于Proxy Server
现在,同时按Test Internet Connection
上控制器上的“X”按钮和键盘上的“Enter”(在您已准备好运行 Python 脚本的计算机上)。
在再次尝试 PPPOE 注入之前,请始终等待控制台显示消息“无法连接到网络:(NW-31274-7)”。
如果漏洞利用失败或 PS4 崩溃,您可以跳过互联网设置,只需单击Test Internet Connection
即可。终止pppwn.py
脚本并在您的计算机上再次运行它,然后单击“在 PS4 上Test Internet Connection
:始终同时”。
如果漏洞利用有效,您应该会看到类似于下面的输出,并且您应该看到Cannot connect to network.
然后在 PS4 上打印PPPwned
,反之亦然。
[+] PPPwn - theflow 的 PlayStation 4 PPPoE RCE [+] args:接口=enp0s3 fw=1100 stage1=stage1/stage1.bin stage2=stage2/stage2.bin [+] 第 0 阶段:初始化 [*] 等待 PADI... [+] pppoe_softc: 0xffffabd634beba00 [+] 目标 MAC:xx:xx:xx:xx:xx:xx [+] 源 MAC: 07:ba:be:34:d6:ab [+] AC cookie长度:0x4e0 [*] 正在发送 PADO... [*] 等待 PADR... [*] 正在发送 PADS... [*] 正在等待 LCP 配置请求... [*] 正在发送 LCP 配置 ACK... [*] 正在发送 LCP 配置请求... [*] 等待 LCP 配置 ACK... [*] 正在等待 IPCP 配置请求... [*] 正在发送 IPCP 配置 NAK... [*] 正在等待 IPCP 配置请求... [*] 正在发送 IPCP 配置 ACK... [*] 正在发送 IPCP 配置请求... [*] 等待 IPCP 配置 ACK... [*] 正在等待接口准备好... [+] 目标 IPv6: fe80::2d9:d1ff:febc:83e4 [+] 堆整理...完成 [+] 第一阶段:内存损坏 [+] 固定到 CPU 0...完成 [*] 发送恶意 LCP 配置请求... [*] 正在等待 LCP 配置请求... [*] 正在发送 LCP 配置 ACK... [*] 正在发送 LCP 配置请求... [*] 等待 LCP 配置 ACK... [*] 正在等待 IPCP 配置请求... [*] 正在发送 IPCP 配置 NAK... [*] 正在等待 IPCP 配置请求... [*] 正在发送 IPCP 配置 ACK... [*] 正在发送 IPCP 配置请求... [*] 等待 IPCP 配置 ACK... [+] 扫描损坏的对象...发现 fe80::0fdf:4141:4141:4141 [+] 第二阶段:KASLR 失败 [*]击败KASLR... [+] pppoe_softc_list: 0xffffffff884de578 [+] kaslr_offset: 0x3ffc000 [+] 第三阶段:远程代码执行 [*] 正在发送 LCP 终止请求... [*] 等待 PADI... [+] pppoe_softc: 0xffffabd634beba00 [+] 目标 MAC:xx:xx:xx:xx:xx:xx [+] 源 MAC: 97:df:ea:86:ff:ff [+] AC cookie长度:0x511 [*] 正在发送 PADO... [*] 等待 PADR... [*] 正在发送 PADS... [*] 触发代码执行... [*] 正在等待 stage1 恢复... [*] 正在发送 PADT... [*] 等待 PADI... [+] pppoe_softc: 0xffffabd634be9200 [+] 目标 MAC:xx:xx:xx:xx:xx:xx [+] AC cookie长度:0x0 [*] 正在发送 PADO... [*] 等待 PADR... [*] 正在发送 PADS... [*] 正在等待 LCP 配置请求... [*] 正在发送 LCP 配置 ACK... [*] 正在发送 LCP 配置请求... [*] 等待 LCP 配置 ACK... [*] 正在等待 IPCP 配置请求... [*] 正在发送 IPCP 配置 NAK... [*] 正在等待 IPCP 配置请求... [*] 正在发送 IPCP 配置 ACK... [*] 正在发送 IPCP 配置请求... [*] 等待 IPCP 配置 ACK... [+] 第 4 阶段:任意负载执行 [*] 正在发送 stage2 有效负载... [+] 完成!
该代码无法在 Apple Silicon 上编译,并且需要 AMD64 架构。有一个使用 docker 的解决方法,它将构建所需的 bin 文件。将此存储库克隆到您的 mac 系统,然后从存储库文件夹运行./build-macarm.sh
。这将为 PS4 FW 1100 构建二进制文件,并将必要的文件放入正确的文件夹中。要构建不同版本(即 900)的二进制文件,请运行以下命令: ./build-macarm.sh 900
。构建完成后,将此文件夹结构复制到 Linux VM 中并按照上面的说明执行。本次测试使用VMware Fusion 13.5.1,VM Guest为Ubuntu 24.04,宿主机为MacOS 14.4.1