IMF: 1 VulnHub (Writeup)
Skills:
Information Leakage
Abusing Web Page - User Enumeration Vulnerability (Login)
SQLI (SQL Injection) [Boolean Based Blind] + Python Scripting [Manual]
Abusing Image Upload Form [RCE] + WAF Bypass
Custom Binary Exploitation - Ghidra Anlysis
Custom Binary Exploitation - Buffer Overflow x32 bits (ret2reg technique) [Privilege Escalation]
Reconnaissance:
Création de l'espace de travail :
Nous établirons notre espace de travail en créant trois dossiers pour stocker les contenus importants, les exploits et les résultats de la reconnaissance à l'aide de Nmap.

Reconnaissance de l'adresse IP via arp-scan :
Utilisation de la commande arp-scan pour détecter l'adresse IP de la machine:

Recherche des ports ouverts avec Nmap : Exploration des ports ouverts et exportation dans le fichier "allPorts" dans le répertoire Nmap :

Analyse des ports ouverts avec extractport : Utilisation de la fonction extractport pour afficher de manière synthétique les ports ouverts et les copier dans le presse-papiers.

Scan de la version des ports avec Nmap : Utilisation de Nmap pour scanner la version des ports et extraction des informations dans le fichier "targeted" :

Identification de la version de la machine avec WhatWeb : Utilisation de WhatWeb pour scanner le site internet et identifier la version de la machine (Ubuntu) et d'Apache :

Détection des technologies du site avec Wappalyzer :
Utilisation de l'extension Wappalyzer sur Google Chrome pour détecter les technologies utilisées sur le site internet.

Collecte d'informations du site internet :
Collecte d'informations du site internet : En explorant le site, extraction d'informations telles que les noms, prénoms, emails, rôles de l'entreprise, et enregistrement dans le dossier "content" du fichier "data".


Déchiffrement des scripts en base64 :
L'inspection du code source révèle des scripts encodés en base64, et leur décodage révèle le mot "imfadministrator".


Vulnérabilité Type Juggling:

En interceptant la requête avec BurpSuite, nous observons que l'injection de type juggling est réussie avec la chaîne suivante : user=rmichaels&pass[]=


Accès à la Partie Administrative du CMS:
Nous découvrons un fichier "cms.php" avec une variable "pagename" redirigeant vers différents sites après avoir obtenu l'accès à la partie administrative du CMS.

Vulnérabilité SQL Injection:
Détection d'une Vulnérabilité SQL Injection
En ajoutant une apostrophe dans le champ "home", une erreur SQL apparaît, indiquant une possible vulnérabilité à une attaque SQL injection.

Exploitation de la Vulnérabilité SQL Injection
En introduisant l'injection SQL /cms.php?pagename=home' or '1'='1, aucune erreur n'apparaît, confirmant la vulnérabilité.

Extraction du Nom de la Base de Données avec Substring
Maintenant, avec ce point d'entrée, nous utilisons le paramètre "substring" pour trouver les caractères du nom de la base de données, en introduisant des lettres jusqu'à ce qu'il n'y ait plus d'erreurs. Voici un exemple pour les trois premiers caractères :
Première lettre :
/cms.php?pagename=home' or substring(database(),1,1)='aDeuxième lettre :
/cms.php?pagename=home' or substring(database(),2,1)='dTroisième lettre :
/cms.php?pagename=home' or substring(database(),3,1)='m
D'abord, un script Python peut automatiser tout le processus pour obtenir le nom de la base de donnée.

Ensuite, un script Python pour automatiser tout le processus pour obtenir les noms de toutes les bases de données.

Maintenant, un script Python pour automatiser tout le processus pour obtenir le nom des tableaux de la bases de donnée (admin).

Maintenant, un script Python pour automatiser tout le processus pour obtenir le nom des colonnes de la bases de donnée (admin).

Maintenant, un script Python pour automatiser tout le processus pour obtenir le contenue de la colonne pagename de bases de donnée (admin).

Exploration de la Page "tutorials-incomplete":
En ajoutant "tutorials-incomplete" dans l'URL, une page s'affiche avec un QR code.

Analyse du QR Code et Découverte de la Flag MD5
Après le scan du QR code, une flag au format MD5 est obtenue. Le décryptage de cette flag révèle une piste pour la prochaine étape.

Vulnérabilité File Upload Abuse:

Tentative d'Upload du Fichier cmd.php:
Essayez d'uploader le fichier cmd.php contenant :
Une erreur se produit, indiquant probablement un blocage de la fonction système.

Interception de la Requête avec BurpSuite:
Modifiez le Content-Type et le nom du fichier en "jpg".

Bypass de la Fonction Système Bloquante:
Pour contourner le blocage, convertissez la fonction système en hexadécimal :

Analyse du Code Source pour le Nom du Fichier:
Consultez le code source pour déterminer comment le fichier doit être nommé.

Capacité d'exécution de commandes :

Envoi d'une Reverse Shell:
Utilisez la commande suivante pour envoyer une reverse shell :
Mettez-vous en écoute sur le port 443.

Accès à la Machine Cible:
Dès que vous avez accès à la machine cible, effectuez les traitement dans le terminal pour travailler plus confortablement.
Élévation des Privilèges:
Exploitation du Buffer Overflow:
Identification du Binaire "agent":
Utilisation de la commande
findpour localiser le binaire nommé "agent" sur la machine cible.Le binaire de 32 bits est trouvé avec un fichier texte indiquant son exécution par le root sur le port 7788.


Transfert du Binaire avec Netcat:
Utilisation de Netcat pour transférer le binaire de la machine cible vers l'équipement de l'attaquant.

Analyse du Code avec ghidra :
Utilisation du logiciel Ghidra pour analyser le code source du binaire.

Identification de la variable "validcode" contenant le code ID en hexadécimal.


Analyse du Buffer Overflow:
Dans la fonction "report()", repérage d'une vulnérabilité de buffer overflow utilisant la fonction "gets".


Exploitation du Buffer Overflow avec GDB:

Création d'une chaîne de 200 caractères "A" pour tester le débordement.

Observation du remplacement de l'EIP (Instruction Pointer) avec la commande "pattern create 200".


Identification de l'offset avec la commande "pattern offset $eip".

Verification avec une insertion d'une chaine EIP de 168 A + 4 caractères B:

Validation des protections avec la commande "checksec".

Vérification de l'ASLR:
Recherche des adresses statiques du binaire avec la commande "objdump -d agent | grep -i 'FF D0'".

Création du Shellcode pour la Reverse Shell:
Utilisation de Metasploit pour générer un shellcode pour une reverse shell.

Script Python pour l'Exploitation: Écriture d'un script Python pour se connecter au service vulnérable et exploiter le buffer overflow.

Mis à jour
Ce contenu vous a-t-il été utile ?