NSA Call Converter

Catégorie: Pwn Difficulté: Moyen Flag: MALICE{NeverDeserializeUntrustedContent}

Challenge

file-archive
49KB
circle-info

Description


Vous avez accès à un service interne de la NSA permettant de convertir des extraits de métadonnées téléphoniques en CSV, un format plus exploitable pour les analystes. Un extrait d'appels est fourni ci-dessous.</br> Malheureusement, la désérialisation n'est pas effectuée correctement.</br> Vous devez prendre le contrôle du serveur pour obtenir le fichier flag.txt dans le dossier de l'application.

Connection: http://nsacallconverter7.chall.malicecyber.com/arrow-up-right

circle-exclamation

Solution

La première étape est de savoir ce qu'on a entre les mains, on va donc faire un hexdump du fichier calls.nsadb (ici avec CyberChefarrow-up-right).

On voit qu'il contient des mots relatifs à Java, comme org.apache.commons.collections4.list.GrowthList.

Cherchons un peu si c'est un type de fichier connu, soit avec la commande file sur Linux, soit on regarde les premiers octets et on cherche sur une liste de signatures de fichierarrow-up-right.

On sait maintenant qu'il s'agit de données Java sérialisées. En cherchant un peut sur internet les vulnérabilités, on tombe sur pas mal d'articles comme HackTricksarrow-up-right qui parle de l'outil ysoserialarrow-up-right.

Comme on sait que flag.txt est dans le même dossier, utilisons donc cet outil pour POST le fichier sur un endpoint.

Direction Webhook Sitearrow-up-right pour créer rapidement un endpoint (RequestBinarrow-up-right fonctionne aussi). Notre endpoint ici est le suivant : https://webhook.site/bb26bcef-9717-4d73-9059-a489f8ec1270.

Maintenant on va créer notre payload avec ysoserialarrow-up-right. On a vu que org.apache.commons.collections4 était utilisé, ça tombe bien, c'est l'un des points d'entrée que l'outil peut exploiter. La commande pour le créer est :

Ensuite il nous suffit d'aller sur le site et de tenter de le convertir pour récupérer l'erreur suivante :

Si l'on regarde notre endpoint, on a bien reçu une requête POST contenant le flag :

Mis à jour