Symfonos: 6.1 VulnHub (Writeup)

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 :

Recherche de répertoires possibles avec Gobuster :

Utilisation de Gobuster pour scanner les répertoires possibles sur le site Web avec le fichier de liste de répertoires moyen. Identification d'un utilisateur potentiellement valide (Achilles).

Identification de la vulnérabilité SSH :

Vérification de la version SSH pour déterminer la vulnérabilité et la validité de l'utilisateur Achilles.

Analyse du serveur avec Wappalyzer :

Utilisation de Wappalyzer pour déterminer que le serveur utilise Apache et le langage de programmation PHP.

Exploration des fichiers PHP :

Recherche de fichiers PHP dans le répertoire "posts" avec Gobuster, mais aucun contenu intéressant n'est trouvé.

Exploration du port 3000 :

Découverte d'un autre site HTTP (un Gitea de version 1.11.4) sur le port 3000. Identification d'un autre utilisateur existant (zayotic).

Exploration approfondie avec un dictionnaire de répertoires plus grand:

Utilisation d'un dictionnaire de répertoires plus grand avec Gobuster pour découvrir de nouveaux répertoires. Identification d'un nouveau répertoire nommé "flyspray".

Analyse de la version de Symfonos:

Recherche sur Internet pour trouver des informations sur la version de Symfonos. Utilisation de Searchsploit pour détecter deux vulnérabilités possibles (XSS et CSRF).

Vulnérabilité XSS :

L'analyse du script de Searchsploit révèle l'existence d'un répertoire permettant une attaque XSS ("/index.php?do=myprofile"), mais nécessitant un compte enregistré sur le site. Par conséquent, enregistrement sur le site.

Identification de la variable "real name" comme étant vulnérable à une attaque XSS.

Validation de l'exploitation avec le payload suivant:

Ensuite, force à charger un service JavaScript externe:

Observation des trames envoyées à un serveur web temporaire créé en Python, confirmant la vulnérabilité XSS.

Vulnérabilité CSRF :

En exploitant la capacité du site à envoyer des requêtes, tentative d'une attaque CSRF dans la zone de commentaire.

Création du fichier JavaScript pwned.js :

Développement d'un fichier JavaScript (pwned.js) pour créer un utilisateur admin à travers d'une attaque CSRF.

Connexion avec les nouveaux identifiants :

Utilisation des nouveaux identifiants créés (utilisateur : hacker, mot de passe : 12345678) pour se connecter avec succès.

Une nouvelle tâche apparaît, fournissant des informations sur un utilisateur (Achilles) et son mot de passe (h2sBr9gryBunKdF9).

Exploration du port 3000 :

Connexion réussie au port 3000 avec les nouvelles informations d'identification. Le site ressemble à Github et présente deux projets privés.

Vulnérabilité abus d'API:

Exploration du projet API:

Le fichier .env indique que l'API est sur le port 5000.

Exploration du répertoire principal :

Identification du groupe directory principal ls2o4g.

Exploration des sous-répertoires :

Utilisation de la méthode POST pour chaque login et vérification avec la méthode GET.

Envoi d'une requête avec CURL :

Utilisation de CURL pour envoyer une requête POST contenant les informations d'authentification JSON vers l'URL

Récupération du token après l'envoi de la requête:

Tentative d'exploitation du JSON Web Token (JWT) :

Tentative d'exploitation du JWT (id=1), mais échec.

Analyse du fichier posts.go des routes :

Observation des routes pour comprendre l'exigence de l'ID.

Injection de commande via CURL :

  • Utilisation de CURL avec la méthode PATCH pour envoyer une requête contenant le JWT dans les headers et l'ID dans l'URL avec le mot "testing"

Envoi d'une commande système (whoami) dans le corps de la requête PATCH via CURL.

Préparation d'un reverse shell en PHP :

Création d'un fichier DATA encodé en base64 pour contourner les restrictions de caractères.

Injection du fichier PHP:

Utilisation de CURL avec la méthode PATCH pour envoyer une requête contenant le token dans les headers et l'ID dans l'URL, avec l'injection du code PHP pour créer un fichier cmd.php.

Exécution d'une Reverse Shell pour Accéder à la Machine:

Traitement du Terminal pour Surmonter les Privilèges

Migration vers l'utilisateur Achilles :

Utilisation des informations d'identification récupérées précédemment pour migrer de l'utilisateur Apache à l'utilisateur Achilles.

Élévation de privilèges (SUDOERS)

Recherche des droits sudoers :

Possibilité d'exécuter Go en tant que root:

Création du fichier root.go :

  • Déplacement vers le répertoire système /tmp et création d'un fichier root.go avec le code suivant en contenu :

Exécution du fichier root.go avec Go :

  • Utilisation de Go pour exécuter le fichier root.go, qui modifie les permissions de /bin/bash pour permettre à n'importe quel utilisateur de l'exécuter avec les privilèges de l'utilisateur root.

Obtention de la flag : )

Mis à jour

Ce contenu vous a-t-il été utile ?