mardi 18 août 2015

Challenge estival - NullByte et VulnHub, Sérénité et Harmonie

Avertissement : j'explique dans cet article les méthodes que j'ai utilisées pour réaliser ce challenge - ne lisez donc pas ce qui suit si vous souhaitez le faire sans indice :-)

Quoi de plus pratique qu'un challenge estival pour tester l'installation de ma nouvelle <3 Kali 2.0 <3 ? J'avais beaucoup aimé mon premier challenge #Darknet @vulnhub et décide donc de jouer à nouveau avec les épreuves proposées en regardant les pré-requis pour le nouveau NullByte proposé par @ly0nx : Niveau "Basic to intermediate" et commentaire "Hints: Use your lateral thinking skills, maybe you’ll need to write some code" me convenant tout à fait, je télécharge donc la machine virtuelle et me met au travail.

Les lois de l'harmonie



L'introduction à ce challenge que vous pouvez consulter sur le site de @vulnhub vous précise que vous devez jouer pour aller lire un fichier "/root/proof.txt".

Je me lance



Première étape, je scanne l'adresse IP avec mon scanner préféré et identifie trois ports TCP en écoute dont un serveur "SSH-2.0-OpenSSH_6.7p1 Debian-5" sur le port 777/tcp et un serveur web sur le port 80/tcp avec une simple image et un commentaire sibyllin.


Bon..  Un scan de port de 1 à 65535 ne m'apportant pas plus d'information et n'ayant pas d'exploit dans mon sac à main pour Apache ou OpenSSH, je pense qu'une énumération des répertoires web potentiellement disponibles est nécessaire.


re bon.. J'ai semble-t-il un répertoire "uploads" à ma disposition qui me permettra peut être de monter un code approprié pour autant que je sache comment y accéder.. Faisons donc un tour sur mon moteur de recherche préféré au cas où l'image fournie recèlerait un indice quelconque.


Après une dizaine de minutes à chercher sans succès des indices, je jette un coup d'oeil à mon dirbuster qui me trouve une application "phpmyadmin".. d'accord, pertinent mon Fernand mais je n'ai pas non plus d'exploit pour cette application et je ne vais pas attendre 146 ans (oui oui) de recherche par force brute.. Je retourne donc me perdre dans les méandres de l'Internet en tentant de rapprocher stéganographie et Kali et sans la moindre certitude d'avancer ou non dans une impasse..

Après une longue heure et de nombreuses tentatives sans succès à jouer avec cette image, une chaine de caractères que j'ai bien du lire une centaine de fois attire enfin mon attention juste après le tag GIF89a : "P-): kzMb5nVYJw". Je debase64/debase64(inverse()) sans succès, je tente ma chance comme mot de passe pour un utilisateur root sur le serveur ssh mais finalement la solution est bien plus simple p-) :-)


Par l'hydraforce ..


Le formulaire qui nous est offert présente un indice bienvenue et après quelques tentatives Hydra avec les dictionnaires usuels fournis par la Kali..


.. le dictionnaire "sqlmap.txt" me fournit le sésame attendu.


et par sqlmap (encore et toujours indispensable) ..


Que serait un challenge web sans injection SQL à tenter ..


.. sans base de données à dumper..


.. et sans empreinte de mot de passe à casser :-)


PHP(myadmin) ..


Retour à la case dirbuster initiale, j'ai un mot de passe root mysql et une interface phpmyadmin. Se pourrait-il que ?


.. un peu de curiosité n'a jamais fait de mal à personne ..


.. et l'avantage des hashs md5 comme mots de passe ..

(cette capture est totalement inutile bien entendu mais c'est tellement amusant)

.. et des services ssh ..


Et maintenant ..


Maintenant que j'ai un shell sur cette VM NullByte, partons à la recherche d'un moyen d'obtenir les privilèges "root". Ma première tentative (inspirée des quelques wargames OverTheWire que j'ai pu réaliser) consiste à identifier si des fichiers inhabituels disposent des bits setuid/setgid ..


.. et le cas échéant, à chercher si ceux-ci sont exploitables ..


.. et comme je n'ai pas mes strace/ltrace fétiches sur la VM NullByte, je récupère donc ce fichier "I have to fix this mess" sur ma Kali pour tenter de l'analyser ..


.. et après quelques tentatives jesstracesques, je pense comprendre comment fonctionne ce code ..


.. qui ressemble assez (en tout cas pour moi) à certains niveaux des wargames OverTheWire. Le code vulnérable appelle le binaire "ps" de manière relative (donc sur la base de l'environnement "PATH") et le fichier est setuid. Et comme je suis maitresse de ce chemin, je peux sans doute tromper ce binaire en lui faisant exécuter ma propre commande (en tout cas "c'est le plan" comme dirait Adrien ;-) ).


.. et mes privilèges étant désormais acquis il m'est possible d'aller lire le fameux fichier "/root/proof.txt" :



Conclusion


En conclusion ce challenge NullByte est véritablement amusant (avec une première étape assez compliquée à franchir si on ne regarde pas au bon endroit), une bonne partie des vulnérabilités génériques du monde du web s'y trouve représentée et ce challenge (en somme) est assez caractéristique de certains rapports de tests d'intrusion que @nathplanteur et moi relisons habituellement (pour le meilleur ou pour le pire :-|).

Merci ma jolie Nath qui ne dort jamais toujours pas ;-) et un grand merci @ly0nx pour votre support et vos encouragements en _live_ :-)

On prendra les froids, les brûlures en face
On interdira les tiédeurs
Des fumées, des alcools et des calmants cuirasses
Qui nous ont volé nos douleurs
La vérité nous fera plus peur
(Jean-Jacques Goldman - On ira)

Jess - @JessicaGallante



Aucun commentaire:

Enregistrer un commentaire

Votre avis ?