HTB{ Lightweight }

Hola !
Esta semana se retira Lightweight, una máquina de dificultad media, interesante y entretenida por como hay que enumerar y resolver. Además, posee un root que no es tan complicado si se sabe donde buscar, comencemos.  

Recon

Todo lo bueno comienza con un nmap:  

$  nmap -sC -sV -A -T5 -p- 10.10.10.119 -o lightweight.nmap

# Nmap 7.70 scan initiated Mon Dec 24 03:42:12 2018 as: nmap -sC -sV -A -T5 -o lightweight.nmap 10.10.10.119
Nmap scan report for 10.10.10.119
Host is up (0.19s latency).
Not shown: 997 filtered ports
PORT    STATE SERVICE VERSION
22/tcp  open  ssh     OpenSSH 7.4 (protocol 2.0)
| ssh-hostkey: 
|   2048 19:97:59:9a:15:fd:d2:ac:bd:84:73:c4:29:e9:2b:73 (RSA)
|   256 88:58:a1:cf:38:cd:2e:15:1d:2c:7f:72:06:a3:57:67 (ECDSA)
|_  256 31:6c:c1:eb:3b:28:0f:ad:d5:79:72:8f:f5:b5:49:db (ED25519)
80/tcp  open  http    Apache httpd 2.4.6 ((CentOS) OpenSSL/1.0.2k-fips mod_fcgid/2.3.9 PHP/5.4.16)
|_http-server-header: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips mod_fcgid/2.3.9 PHP/5.4.16
|_http-title: Lightweight slider evaluation page - slendr
389/tcp open  ldap    OpenLDAP 2.2.X - 2.3.X
| ssl-cert: Subject: commonName=lightweight.htb
| Subject Alternative Name: DNS:lightweight.htb, DNS:localhost, DNS:localhost.localdomain
| Not valid before: 2018-06-09T13:32:51
|_Not valid after:  2019-06-09T13:32:51
|_ssl-date: TLS randomness does not represent time

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Mon Dec 24 03:42:40 2018 -- 1 IP address (1 host up) scanned in 27.97 seconds
Vemos de aquí que hay ssh, http y un ldap abierto, Investigando un poco sobre la página:   Como dice la misma página, “Este sitio está protegido contra ataques de fuerza bruta”, efectivamente, si intentamos enumerar con cualquier buster, no tardaría en banearnos, ):. Lo único que nos queda, es hacer algo un poco más manual.
http://10.10.10.119/info.php
http://10.10.10.119/index.php
http://10.10.10.119/status.php
http://10.10.10.119/user.php
Cada una de las páginas nos entregaría un poco de información acerca de lo que lleva a cabo la máquina, pero hay una en específico, que demora demasiado en cargar http://10.10.10.119/status.php, por lo que nos hace creer que genera más ruido en la red de lo que generaría cualquiera de las otras 3, dejarlo como recuerdo para más adelante.

user.txt

  Amablemente, http://10.10.10.119/user.php, nos proporciona una cuenta provisoria para entrar a la máquina. Una vez dentro, enumeramos un poco y nos encontramos con que cada usuario que se conecta tendrá su home respectivo, con los correctos permisos: Enumerando un poco, podemos ver que no hay ningún SUID bin interesante, aunque sí podemos ver un programa entretenido con capabilities especiales 😀  (Interesante lectura: Capabilities). Tcpdump 😀 ! : Ahora podemos ver qué pasa en la red, cuando consultamos a esa página que demoraba en cargar !     Al usar tcpdump con -w, nos permitirá guardar el archivo pcap (raw format) para posteriormente analizarlo con wireshark (fancy way). Al revisar los 2 pcaps, nos damos cuenta que el análisis de la interfaz ens33, no nos entrega más que las respuestas GET y un que otro paquete SSH. Lo interesante está al revisar la interfaz local, ya que al navegar por la página, específicamente en http://10.10.10.119/status.php, nos muestra en wireshark, un par de consultas LDAP, sacando de aquí, el usuario y la contraseña del ldapuser2 🙂 ! ldapuser2:8bc8251332abe1d7f105d3e53ad39ac2 Entrando con este usuario, obtendríamos la preciada flag ! user.txt:8a866d3bb7e13a57aaeb1102cntr0llz  

root.txt

Al quedar logeado como ldapuser2, vemos rápidamente un par de pdf, que apuntan a “cómo utilizar ldap”, son manuales, rolf. Y, un archivo backup.7z ! Al pasarlo a nuestra máquina nos daremos cuenta que tiene pw D:! Aquí hay varias maneras de sacarlo (hashcat, john, 7z-bruteforce), pero por flojera de instalar tanta cosa, hice un pequeño script que me itere sobre una lista no tan grande de pw’s (no me odien, no es la solución más rápida. ): )   Obtenemos la password delete, la cual nos entregará el backup de la página que antes habíamos visitado :D.    Dando vueltas un poco por los archivos, encontramos en el status.php información sabrosa 😀 :      Hasta aquí ya obtenemos las credenciales de ldapuser1:f3ca9d298a553da117442deeb6fa932d (: !     Entrando nuevamente con este usuario, vemos de entrada que en el home, hay un par de binarios, un archivo php y un pcap :O !  Repitiendo la enumeración que hicimos para el otro usuario, obtenemos lo siguiente:  Nuevamente, no hay SUID bin interesante, pero sí programas con capabilities :D. Ya habíamos revisado tcpdump, por ahora nos queda revisar la de openssl (ep = All capabilites, (e)ffective & (p)ermitted ), básicamente es un binario que puede hacer de todo xD. Como por ejemplo, leer el FS completo 😮 !   Boom Got root (flag) :D. Si alguien le interesa cómo sacar la shell, esta fue mi solución 😀 ! : Como podemos leer y escribir todo el FS a nuestro antojo, copié el /etc/shadow a un archivo temporal, generé una nueva password para el root con openssl, sobre-escribí la pw en el archivo temporal, y luego reemplacé el /etc/shadow orginal, con el que acabamos de cambiar, y listo! ya podremos ingresar con la nueva password como root :3 ! Cualquier duda, comentario, sugerencia o expresión de odio es bienvenida …  

Se despide: 

      Cheers – H4F&$ !

Agregar un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *