![]() |
|
Users
| |
Enumeration
nmap
| |
Foothold
Website titanic.htb : LFI
On a un formulaire qu’on peut remplir pour reserver notre voyage. A la fin, ça nous fait telecharger un fichier .json avec notre ticket. Or, si on maniule cet argument ticket= on peut récupérer le contenu de n’importe quel fichier
| |
Grâce à /etc/passwd on repère l’utilisateur “developer”. On peut récupérer le fichier user.txt avec le flag.
| |
| |
dev subdomain : dev.titanic.htb
En utilisant ffuf, on trouve un subdomain “dev”. On aurait pu y penser autrement, en effet l’utilisateur trouvé précédemment était “developer”. En vérité, j’ai trouvé cela en regarder la fichier /etc/hosts grâce à la LFI trouvé précedemment:
| |
ATTENTION !! Le piège : on ne trouve rien avec gobuster dns. A l’avenir, il faut prioriser ABSOLUMENT ffuf pour trouver les sous-domaines !!
Cette commande ne trouve rien :
gobuster dns -d titanic.htb -w /usr/share/wordlists/dirb/common.txt
| |
Gitea
dev.titanic.htb redirige vers une page Gitea.
Mysql password
| |
Fuzzing with ffuf
En faisant du fuzzing avec des plusieurs wordlists, on finit par trouver le fichier app.ini et surtout le working directory de gitea. Sur l’interface web de gitea on avait trouvé l’info le dossier : /home/developer/gitea/data
Mais il m’a fallu beaucoup de temps/fuzzing pour trouver qu’il fallait à nouveau écrire gitea…
J’ai utilisé la LFI, sous forme d’une requete “.req” récupérer sur BURP. Je mettais le mot “FUZZ” au bonne endroit dans la requete, donc apres le dossier data au début.
| |
Voici l’execution de ffuf ensuite en utilisant notre requete et une liste de mot de passe:
| |
On observe l’utilisation d’une “gitea_wordlist.txt”. Je l’ai créer en récupérer le code source sur github, puis j’ai utilisé la commande suivante :
| |
| |
Gitea.db : developer user
| |
| |
Hashcat bruteforce
compte crée: b : 123456789
| |
┌──(kali㉿kali)-[~/htb/Titanic] └─$ john –list=format-details –format=pbkdf2-hmac-sha256
PBKDF2-HMAC-SHA256 125 24 192 01000003 48 PBKDF2-SHA256 256/256 AVX2 8x 0x107 32 188 iteration count 0 $pbkdf2-sha256$1000$b1dWS2dab3dKQWhPSUg3cg$UY9j5wlyxtsJqhDKTqua8Q3fMp0ojc2pOnErzr8ntLE
sqlite> select name, passwd_hash_algo, salt, passwd from user; administrator|pbkdf2$50000$50|2d149e5fbd1b20cf31db3e3c6a28fc9b|cba20ccf927d3ad0567b68161732d3fbca098ce886bbc923b4062a3960d459c08d2dfc063b2406ac9207c980c47c5d017136 developer|pbkdf2$50000$50|8bf3e3452b78544f8bee9400d6936d34|e531d398946137baea70ed6a680a54385ecff131309c0bd8f225f284406b7cbc8efc5dbef30bf1682619263444ea594cfb56 a|pbkdf2$50000$50|24fc79c6b2aadeb9555d40312ac55460|0ae3825641016406643a122f7f3ca6c6b5cfc76abd40075f73eb8deff4cce5448bfa95dc5a4ff81d62cb77921cd224b2010d b|pbkdf2$50000$50|47b1683e379bca325752efd85fe1c31b|097c3c0cdbf50b536b20ef5e22b6dd8e58fbfa6230003f60a6a15577107d48618814da5e1c2984e3775fdbea3f61c41cd0ce
Ce qui nous donne :
sha256:50000:2d149e5fbd1b20cf31db3e3c6a28fc9b:cba20ccf927d3ad0567b68161732d3fbca098ce886bbc923b4062a3960d459c08d2dfc063b2406ac9207c980c47c5d017136 sha256:50000:8bf3e3452b78544f8bee9400d6936d34:e531d398946137baea70ed6a680a54385ecff131309c0bd8f225f284406b7cbc8efc5dbef30bf1682619263444ea594cfb56 sha256:50000:24fc79c6b2aadeb9555d40312ac55460:0ae3825641016406643a122f7f3ca6c6b5cfc76abd40075f73eb8deff4cce5448bfa95dc5a4ff81d62cb77921cd224b2010d sha256:50000:47b1683e379bca325752efd85fe1c31b:097c3c0cdbf50b536b20ef5e22b6dd8e58fbfa6230003f60a6a15577107d48618814da5e1c2984e3775fdbea3f61c41cd0ce
Enfin, en format hashcat avec du base64:
sha256:50000:LRSeX70bIM8x2z48aij8mw==:y6IMz5J9OtBWe2gWFzLT+8oJjOiGu8kjtAYqOWDUWcCNLfwGOyQGrJIHyYDEfF0BcTY= sha256:50000:i/PjRSt4VE+L7pQA1pNtNA==:5THTmJRhN7rqcO1qaApUOF7P8TEwnAvY8iXyhEBrfLyO/F2+8wvxaCYZJjRE6llM+1Y= sha256:50000:JPx5xrKq3rlVXUAxKsVUYA==:CuOCVkEBZAZkOhIvfzymxrXPx2q9QAdfc+uN7/TM5USL+pXcWk/4HWLLd5Ic0iSyAQ0= sha256:50000:R7FoPjebyjJXUu/YX+HDGw==:CXw8DNv1C1NrIO9eIrbdjlj7+mIwAD9gpqFVdxB9SGGIFNpeHCmE43df2+o/YcQc0M4=
On trouve ensuite le mot de passe developer en utilisant hashcat :
| |
developer : 25282528
Privilege Escalation
Exploitation : Image Magick
https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-8rxc-922v-phg8
| |
On trouve ces dossiers: /opt/app/static/assets/images /opt/app/tickets
Avec ce script:
| |
On recherche une CVE pour magick, on trouve que notre version est vulnerable. On trouve le github, on suit les instructions. On construit une fausse librairie qui va executer du code en tant que root. il execute un shell.sh que j’ai defini et qui ouvre un revershell.
| |
| |
Tips
- ATTENTION !! Le piège : on ne trouve rien avec
gobuster dns. A l’avenir, il faut prioriser ABSOLUMENTffufpour trouver les sous-domaines !!
