Santhacklaus 2019 - witchehh's blog

Posted on dim. 29 décembre 2019 in CTF

Hey !
I just find this new blog post that gives some very good advices on how to protect your life by using a strong password.
http://46.30.204.44:1000/

Il s'agit d'un blog d'un certain witchehh prodiguant des conseils sur la création de mot de passes.

witchehh1.png

On peut s'y inscrire et se connecter. On a alors une page indiquant que d'autres fonctionnalités arriveront bientôt.

N'ayant pas plus d'information, on commence à faire de la reconnaissance sur le site.

$ nikto -host http://46.30.204.44:1000/
- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP:          46.30.204.44
+ Target Hostname:    46.30.204.44
+ Target Port:        1000
+ Start Time:         2019-12-29 21:05:07 (GMT1)
---------------------------------------------------------------------------
+ Server: Apache/2.4.38 (Debian)
+ Retrieved x-powered-by header: PHP/7.2.25
+ [...]
+ /config.php: PHP Config file may contain database IDs and passwords.
+ OSVDB-3268: /img/: Directory indexing found.
+ OSVDB-3092: /img/: This might be interesting...
+ Server leaks inodes via ETags, header found with file /icons/README, fields: 0x13f4 0x438c034968a80 
+ OSVDB-3233: /icons/README: Apache default file found.
+ /login.php: Admin login page/section found.
+ 8348 requests: 0 error(s) and 12 item(s) reported on remote host
+ End Time:           2019-12-29 21:06:44 (GMT1) (97 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
$ dirb http://46.30.204.44:1000

[...]

---- Scanning URL: http://46.30.204.44:1000/ ----
+ http://46.30.204.44:1000/cgi-bin/ (CODE:403|SIZE:279)                                                                                                                                    
==> DIRECTORY: http://46.30.204.44:1000/img/                                                                                                                                               
+ http://46.30.204.44:1000/index.php (CODE:200|SIZE:5039)                                                                                                                                  
+ http://46.30.204.44:1000/server-status (CODE:403|SIZE:279)                                                                                                                               

---- Entering directory: http://46.30.204.44:1000/img/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.                        
    (Use mode '-w' if you want to scan it anyway)

-----------------
END_TIME: Sun Dec 29 21:06:10 2019
DOWNLOADED: 4612 - FOUND: 3

On ne voit alors pas grand chose si ce n'est l'indexof activé sur le dossier img. Peut être que cela peut nous donner des indications sur son mot de passe.

witchehh3.png

Les images sont celles de la page d'accueil à part pour celle là :

port2000.jpg

Port 2000... On a peut-être la suite du challenge sur le port 2000 en utilisant l'ip. On se connecte et on obtient ceci :

$ telnet 46.30.204.44 2000
Username : username
This account does not exist
$ telnet 46.30.204.44 2000
Username : witchehh
Password : 
Wrong Password !

Bon, donc c'est sûrement pour la suite mais pas utile sans le mot de passe.

OSINT

On est donc parti à la pêche aux informations sur ce Billy Délivre. On peut trouver un compte Instagramm et Facebook. Son profil Facebook étant plus complet, on garde celui-là :

witchehh2.png

On y voit des affiches de films, des musiques, divers personnages et une image pour présenter son blog.

Cette dernière contient en plus de l'article, un hash et un début de ce qui pourrait être le mot de passe associée au hash.

$ hashid 90ebd54ded8e68191ab102429edd29993c185e43c1b43de0fd346b40c1b26c60ce1e4ae84c334da7c2ee81cb4dbfb48d
Analyzing '90ebd54ded8e68191ab102429edd29993c185e43c1b43de0fd346b40c1b26c60ce1e4ae84c334da7c2ee81cb4dbfb48d'
[+] SHA-384 
[+] SHA3-384 
[+] Skein-512(384) 
[+] Skein-1024(384)

Bon. On a donc deux solutions qui s'offre à nous : bruteforce avec un dictionnaire généré sur les informations recueillies ou chercher si ce hash est présent quelque part sur le net.

Bruteforce

On a donc une structure possible énoncé sur son site ([mot][séparateur][nombre][séparateur][mot]) et le début possible du premier mot : annec. On peut conclure le premier étant annecy d'après l'OSINT précédent.

Il nous faut donc trouver le séparateur et le nombre avec le dernier mot. Afin de gagner du temps, une simple boucle Python parcourant notre liste de mots est suffisante pour générer notre dictionnaire (liste):

#!/usr/bin/python3
# coding : utf-8
import hashlib

# récupère l'ensemble des mots issus de l'OSINT
liste = open('liste', 'r').readlines()
# séparateurs possibles
split = ['-', '*', '_', '.', '+', '=', '§', '!', ' ', '/', '\\', '&', '~']
# nombre de 0 à 99
nbrange = range(99)
# hash à retrouver
target = "90ebd54ded8e68191ab102429edd29993c185e43c1b43de0fd346b40c1b26c60ce1e4ae84c334da7c2ee81cb4dbfb48d"

word = 'annecy'
for sep in split:
        for sep2 in split:
                for number in nbrange:
                        for lastword in liste:
                                password = (word + sep + str(number) + sep2 + lastword).rstrip()
                                sha384 = hashlib.sha384(password.encode()).hexdigest()
                                if sha384 == target :
                                    print("FOUND !")
                                    print("The password is : " + password)
                                    exit(0)
                                    pass

Cela est suffisant pour générer un dictionnaire contenant 2375802 lignes à partir de la liste de 142 mots.

Afin d'éviter de forcer sur le site et ayant le hash cible, une comparaison des hashs générés à partir de notre liste et celui trouvé sur Facebook nous permettra de retrouver le mot de passe complet (HASHCat) :

$ python script.py
FOUND !
The password is : annecy+44+saitama

"Intelligente"

On peut donc se rendre sur https://crackstation.net ou https://md5hashing.net et voir si un résultat en clair nous est renvoyé.

witchehh4.png

BINGO ! On a le mot de passe.

Port 2000

On a donc le mot de passe. On peut donc ce connecter à son compte sur le blog. Cela nous permet d'afficher l'image que nous avions déjà trouver précédemment lors de la reconnaissance.

Il nous reste donc à se conncecter en telnet :

$ telnet 46.30.204.44 2000
Username : witchehh
Password : annecy+44+saitama

Welcome, here is your flag : SANTA{Cr4cK_L0rD}

YEAH ! C'est le flag et les points avec :D.