linuxNibbles

📜Enumeration

Run an nmap script scan on the target. What is the Apache version running on the server? (answer format: X.X.XX)

Dans un premier temps, nous analysons à l'aide d'un simple scan Nmap les ports ouverts sur la cible :

$ nmap -sV --open -oA nibbles_initial_scan 10.xxx.xxx.xxx

Starting Nmap 7.93 ( https://nmap.org ) at 2025-06-16 10:53 CEST
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.2 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.4.18 ((Ubuntu))
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Nmap done: 1 IP address (1 host up) scanned in 8.60 seconds

Suite au scan effectué, nous observons 2 ports ouverts :

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.2 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.4.18 ((Ubuntu))

Nous observons ici que la version su serveur web est Apache httpd 2.4.18 .

Cependant, nous n'avons pas encore effectué le scan demandé. Nous allons donc maintenant effectuer l'analyse de script Nmap comme demandé.

Afin d'effectuer une analyse de script nmap sur les ports ouverts recensés, voici la commande effectuée :

Le scan du script ne nous a rien donné de pratique. Nous complétons alors notre scan nmap en utilisant le script http-enumarrow-up-right, qui peut être utilisé pour énumérer les répertoires d'applications Web communes :

Nous obtenons donc la version de notre serveur Apache :


🐾 Web Footprinting

Nous récupérons le contenu du site Web à l'aide de la commande curl :

Suite à cette lecture du site Web de notre cible, il nous est possible d'observer la présence d'un répertoire /nibbleblog .

Nous accédons alors au site cible sur le répertoire /nibbleblog :

Une recherche en ligne (niggleblog exploit) nous à permis d'identifier une possible vulnérabilitéarrow-up-right. La faille permet à un attaquant authentifié de télécharger et d'exécuter du code PHP arbitraire sur le serveur Web sous-jacent. Il est également mentionné que le module metasploit utilisé à été effectué sur la version 4.0.3. Cependant nous ne connaissons pas la version de notre niggleblog en cours d'utilisation. Si nous regardons le code source du module metasploit, nous pouvons voir que l'exploit utilise des informations d'identification fournies par l'utilisateur pour s'authentifier sur le portail d'administration /admin.php.

Nous utilisons alors Gobusterarrow-up-right afin d'énumérer l'ensemble des répertoires accessibles :

Gobuster se termine très rapidement et confirme la présence de la page admin.php. Nous pouvons vérifier le contenu de la page README pour obtenir des informations supplémentaires, telles que le numéro de version de niggleblog. Pour se faire, nous utilisons de nouveau la commande curl :

Nous validons donc que la version 4.0.3 est en cours d'utilisation, confirmant que cette version est probablement vulnérable au module Metasploit .


Nous recherchons maintenant des possibles informations d'identification dans les différents répertoires trouvés par Gobuster :

Nous observons dans le répertoire /admin/private/ la présence de plusieurs fichiers XML. Nous analysons leur contenu, notamment concernant les fichier config.xml et users.xml :

Contenu du fichier users.xml :

Le fichier users.xml nous permets d'identifier la présence d'un utilisateur admin. Cependant, nous n'avons pas d'information concernant le mot de passe associé à cet utilisateur.

Contenu du fichier config.xml :

En vérifiant le contenu de ce fichier, en espérant trouver des mots de passe exploitables, nous voyons deux mentions de nibbles dans le titre du site ainsi que l'adresse e-mail de notification. C'est aussi le nom de la boîte. Nous nous sommes alors demandés si il pourrait s'agir du mot de passe administrateur ?

Nous avons alors choisi de tester les identifiants admin:nibbles sur la page 10.xxx.xxx.xxx/nibbleblog/admin.php, ce qui nous à permis d'avoir un accès en tant qu'administrateur au site Web de notre cible :


📞 Initial Foothold

Maintenant que nous sommes connectés au portail d'administration, nous devons essayer de transformer cet accès pour exécuter du code et obtenir un accès en reverse shell au serveur Web.

En observant les répertoires disponibles sur le site Web une fois connectés en tant qu'administrateur, nous avons relevé ceci :

Page

Contenu

Publish

Créer un nouveau post, un post vidéo, un post de citation ou une nouvelle page. Ça pourrait être intéressant.

Comments

Ne montre aucun commentaire publié

Manage

Nous permet de gérer les publications, les pages et les catégories. Nous pouvons modifier et supprimer des catégories, pas trop intéressant.

Settings

Confirme que la version vulnérable 4.0.3 est utilisée. Plusieurs paramètres sont disponibles, mais aucun ne nous semble intéressant.

Themes

Cela nous permet d'installer un nouveau thème à partir d'une liste présélectionnée.

Plugins

Permet de configurer, installer ou désinstaller des plugins. Le plugin My image nous permet de télécharger une image.

Nous créons un fichier shell.php afin d'essayer de télécharger un fichier PHP malveillant dans le site Web :

Nous allons donc maintenant essayer de réaliser un reverse shell afin d'avoir un accès à distance à notre cible.

Nous utilisons netcat afin de réaliser une écoute active sur le port 4343:

Une fois l'écoute en place, nous modifions le fichier shell.php ainsi :

circle-info

Nous allons ajouter notre adresse IP de l'interfacetun0 (notre VPN actuel) à la place de<ATTACKING IP> et ajouter notre port d'écoute à la place de <LISTENING PORT> pour avoir notre reverse shell fonctionnel sur notre netcat.

La commande utilisée ici repose sur mkfifo et netcat pour établir un reverse shell fiable même dans des environnements limités. Elle est largement compatible, car elle n’exige pas l’utilisation de bash ni l'accès à /dev/tcp, ce qui en fait une méthode robuste recommandée en test d’intrusion.

Nous retournons alors que le site cible, y incluons notre fichier shell.php et nous rendons sur le lien http://10.xxx.xxx.xxx/nibbleblog/content/private/plugins/my_image/image.php afin d'activer notre reverse shell. Cette manipulation nous donne ainsi un accès distant à la machine cible :

La connexion sur la cible est effective.

Notre but maintenant est d'améliorer notre shell vers un shell interactif :

Une fois le shell interactif en place, nous nous rendons dans le répertoire de l'utilisateur nibbler et analysons le contenu du fichier user.txt :

Une fois ces information obtenues, nous pouvons résoudre le point suivant :

Gain a foothold on the target and submit the user.txt flag

La flag présent dans le fichier user.txt est donc le suivant :


↗️Privilege Escalation

Maintenant qu'un accès à distance à la machine est réalisé, le but est d'effectuer une élévation de privilèges pour devenir administrateur.

Comme nous avons pu le voir, un fichier personal.zip est présent sur le poste de l'utilisateur. Nous allons donc le unzip :

Un fichier monitor.sh est créé.

Le script monitor.sh est un script de surveillance, et il appartient à notre utilisateur nibbler .

Nous allons télécharger LinEnum.sharrow-up-right afin de vérifier automatiquement si des élévations de privilèges sont possibles.

Pour cela, on télécharge le fichier sur notre hôte attaquant :

On ouvre un serveur WEB python sur notre hôte attaquant dans le répertoire contenant notre script LinEnum.sh afin de rendre le fichier accessible sur notre cible pour pouvoir le télécharger et l'exécuter :

On se rend donc sur la cible et téléchargeons le fichier :

circle-info

Nous allons ajouter notre adresse IP de l'interfacetun0 (notre VPN actuel) à la place de<ATTACKING IP> .

Une fois le script installé, on lui attribue les droits necéssaires :

Voici l'un des éléments que nous retourne LinEnum.sh :

Ceci mentionne que l'utilisateur peut exécuter le fichier /home/nibbler/personal/stuff/monitor.sh avec privilèges root. Étant donné que nous avons un contrôle total sur ce fichier, si nous ajoutons un reverse shell à la fin de celui-ci et l'exécutons avec sudo nous devrions récupérer un accès en tant qu'utilisateur root.

Nous ajoutons notre reverse shell à la fin du fichier :

circle-info

Il s'agit d'un élément crucial si nous sommes confrontés à une situation dans laquelle nous pouvons utiliser un fichier de script pour une escalade des privilèges. Nous n'ajoutons que la fin du fichier (après avoir fait une copie de sauvegarde du fichier) pour éviter de l'écraser et de provoquer une interruption.

On lance une écoute sur le port 4343 sur notre machien attaquante :

On exécute le script sur la machine cible à l'aide de la commande sudo :

Une fois le script lancé, nous observons la bonne connexion en tant que root sur le reverse shell :

On récupère ensuite un shell interactif et récupérons le contenu du fichier root.txt :

Le fichier root.txt contient donc ceci :


🛡️Metasploit

Comme nous l'avons vu au début de la Box, une exploitation via Metasploit était possible.

Cependant, comme nous n'avions pas les identifiants associés à l'administrateur, nous n'avons pas pu explorer cette option.

Cependant, maintenant nous pouvons essayer d'explorer cet environnement.

circle-info

C'est beaucoup plus simple, mais il vaut la peine de pratiquer les deux méthodes pour se familiariser avec autant d'outils et de techniques que possible.

Lancer Metasploit sur notre machine attaquante et utiliser l'exploit arrow-up-righttrouvé lors de recherches précédentes :

Dans les options, nous allons modifier ceci :

Une fois les paramètres renseignés, on choisi le payload souhaité et lançons l'exploit.

Nous nous retrouvons donc connectés en tant que l'utilisateur nibbler, nous pouvons maintenant effectuer les mêmes manipulations d'élévation de privilèges que vu précédemment.


Last updated