Traverxec - HackTheBox

image (29)

Empece haciendo un escaneo con Nmap para detectar puertos y servicios abiertos.

┌─[root@parrot]─[/home/wackyhacker/Desktop]
└──╼ nmap -sS --min-rate=5000 --open -v -n 10.10.10.165 -oN targeted
Starting Nmap 7.91 ( https://nmap.org ) at 2021-07-24 17:42 CEST
Initiating Ping Scan at 17:42
Scanning 10.10.10.165 [4 ports]
Completed Ping Scan at 17:42, 0.09s elapsed (1 total hosts)
Initiating SYN Stealth Scan at 17:42
Scanning 10.10.10.165 [1000 ports]
Discovered open port 80/tcp on 10.10.10.165
Discovered open port 22/tcp on 10.10.10.165
Completed SYN Stealth Scan at 17:42, 0.67s elapsed (1000 total ports)
Nmap scan report for 10.10.10.165
Host is up (0.052s latency).
Not shown: 998 filtered ports
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 0.96 seconds
       	Raw packets sent: 2002 (88.064KB) | Rcvd: 4 (156B)

Efectúe otro escaneo para verificar la versión y servicio de cada puerto encontrado.

┌─[root@parrot]─[/home/wackyhacker/Desktop]
└──╼ nmap -sC -sV 10.10.10.165 -oN webscan                     	 
Starting Nmap 7.91 ( https://nmap.org ) at 2021-07-24 17:42 CEST
Nmap scan report for 10.10.10.165
Host is up (0.051s latency).
Not shown: 998 filtered ports
PORT   STATE SERVICE VERSION
22/tcp open  ssh 	OpenSSH 7.9p1 Debian 10+deb10u1 (protocol 2.0)
| ssh-hostkey:
|   2048 aa:99:a8:16:68:cd:41:cc:f9:6c:84:01:c7:59:09:5c (RSA)
|   256 93:dd:1a:23:ee:d7:1f:08:6b:58:47:09:73:a3:88:cc (ECDSA)
|_  256 9d:d6:62:1e:7a:fb:8f:56:92:e6:37:f1:10:db:9b:ce (ED25519)
80/tcp open  http	nostromo 1.9.6
|_http-server-header: nostromo 1.9.6
|_http-title: TRAVERXEC
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 18.42 seconds

Vi que el servidor web corría un servicio llamado nostromo, eso me llamo la atención por lo que recurrí a ver si había alguna versión vulnerable y encontré el siguiente exploit.

Captura de pantalla (659)

Su uso fue sencillo, le especifiqué la IP y el puerto por dónde corría el servidor y el comando que quería ejecutar.

rce

Ya tenía la ejecución de código arbitrario, me entablé un Shell inverso por el puerto 443 haciendo uso de mkfifo.

mkfifo

También hice un tratamiento de la TTY para tener un full Shell interactivo y manejarme más cómodamente.

tratamiento de la tty

Tras una pequeña investigación logré encontrar un archivo que me dio mucha información para el siguiente paso.

archivo

Primero le hice un cat a una ruta que me reportaba que me llamo la atención, tenía una credencial hasheda, la crackee con john the ripper.

┌─[root@parrot]─[/home/wackyhacker/Desktop]
└──╼ john --wordlist=/usr/share/wordlists/rockyou.txt hash
Warning: detected hash type "md5crypt", but the string is also recognized as "md5crypt-long"
Use the "--format=md5crypt-long" option to force loading these as that type instead
Using default input encoding: UTF-8
Loaded 1 password hash (md5crypt, crypt(3) $1$ (and variants) [MD5 128/128 SSE2 4x3])
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
Nowonly4me   	(david)
1g 0:00:03:19 DONE (2021-07-24 18:02) 0.005009g/s 52994p/s 52994c/s 52994C/s Noyoudo..November^
Use the "--show" option to display all of the cracked passwords reliably
Session completed

Pensé que era la contraseña del usuario david pero no, viendo el archivo también me reportaba un public_www, tras una búsqueda en Google logre dar con la conclusión de que se trataba de un directorio en el servidor web, pude acceder desde la Shell que ya tenía y encontré un archivo llamado backup-ssh-identity-files.tgz.

backups

Me lo transferí con netcat para ver que es lo que tenía.

usandonetcat

Lo descomprimí con 7z y encontré una id_rsa, una clave de acceso a ssh.

id_rsa

Pero estaba encriptada por contraseña.

id_rsaimagen

Para crackear su contraseña hice uso de la utilidad ssh2john que me extrajo su hash equivalente.

ssh2john

Copie el hash en un archivo llamado hashs y lo crackee con john the ripper.

┌─[root@parrot]─[/home/wackyhacker/Desktop]
└──╼ john --wordlist=/usr/share/wordlists/rockyou.txt hash2                         	1 ⨯
Using default input encoding: UTF-8
Loaded 1 password hash (SSH [RSA/DSA/EC/OPENSSH (SSH private keys) 32/64])
Cost 1 (KDF/cipher [0=MD5/AES 1=MD5/3DES 2=Bcrypt/AES]) is 0 for all loaded hashes
Cost 2 (iteration count) is 1 for all loaded hashes
Will run 2 OpenMP threads
Note: This format may emit false positives, so it will keep trying even after
finding a possible candidate.
Press 'q' or Ctrl-C to abort, almost any other key for status
hunter       	(?)
1g 0:00:00:07 DONE (2021-07-24 18:33) 0.1412g/s 2025Kp/s 2025Kc/s 2025KC/sa6_123..*7¡Vamos!
Session completed

Me la consiguió crackear, le di permisos 600 a la id_rsa y accedí con ella haciendo uso de la contraseña crackeada, ya pude visualizar la “flag” del usuario.

flagdelusuario


ESCALADA DE PRIVILEGIOS

Para la escalada de privilegios encontré un script llamado server-stats.sh que ejecuta journalctl con privilegios de sudo.

scriptjournal

Me dirigí a gftobins y filtré por journalctl para ver si podía aprovecharme para escalar.

sudoengftobins

Al parecer sí, lo que hice fue ejecutar journalctl seguido de la sintaxis del script y eliminando el /usr/bin/cat porque tenía que ser en formato lees o more, minimice la terminal y escribí !/bin/sh y me convertí en root, ya pude visualizar la “flag”.

rut (1)

Leave a comment