HackTheBox - Expressway


Creado
HackTheBox - Expressway

Entorno Linux nivel fácil. Movimientos con el protocolo IKE, credenciales volando, logs y hostnames.

💥 Laboratorio creado por: dakkmaddy.

TL;DR (Spanish writeup)

La seguridad ante todo, ¿si oke?

Vamos a encontrar el servicio IKE expuesto, nos adentraremos en su mundo agresivamente para obtener un usuario y romper la llave compartida PSK, en conjunto formaremos unas credenciales y las usaremos para obtener una sesión como el usuario ike en el sistema.

Internamente encontraremos unos archivos de squid y dentro de uno de ellos un subdominio. Jugando con permisos y hostnames, encontraremos accesos administrativos en el sistema.

Clasificación de la máquina según la gentesita

Debemos ensuciarnos las manos y enumerar un montón.

La idea inicial de esta locura es tener mis “notas” por si algun día se me olvida todo (lo que es muuuy probable), leer esto y reencontrarme (o talvez no) 😄 La segunda idea surgio con el tiempo, ya que me di cuenta que esta es una puerta para personitas que como yo al inicio (o simplemente a veces) nos estancamos en este mundo de la seguridad, por lo que si tengo la oportunidad de ayudarlos ¿por qué no hacerlo?

Un detalle es que si ves mucho texto, es por que me gusta mostrar tanto errores como exitos y tambien plasmar todo desde una perspectiva más de enseñanza que de solo pasos a seguir. Sin menos, muchas gracias <3

Los pergaminos.

  1. Reconocimiento
  2. Enumeración
  3. Explotación
  4. Escalada de privilegios
  5. Post-Explotación

Reconocimiento #

Empezamos como siempre, descubriendo que servicios (puertos) tiene expuestos la máquina que vamos a atacar, para ello usamos la herramienta nmap:

nmap -p- --open -v 10.129.134.213 -oA tcp-all-htb_expressway
Parámetro Descripción
-p- Escanea todos los 65535 puertos
–open Devuelve solo los puertos que estén abiertos
-v Permite ver en consola lo que va encontrando
-oA Guarda el output en diferentes formatos, entre ellos uno “grepeable”. Lo usaremos junto a la función extractPorts de S4vitar para copiar los puertos en la clipboard rápidamente

El escaneo solo nos devuelve el puerto 22:

Puerto Descripción
22 SSH: Servicio que permite la obtención de una terminal de forma segura

Pero tener solo este puerto es raro, ya que si no encontramos una vulnerabilidad específica para ese SSH o realizamos brute-force (y eso que aún no tenemos usuarios válidos) de credenciales, pues no hay pa donde darle más.

Eso me hizo pensar en que acabamos de hacer un escaneo TCP, pero y si hacemos uno UDP? A ver…

Los protocolos TCP y UDP estan encargados de transportar información mediante la red, el tema es que TCP busca mover la info de forma clara y sin errores, con UDP es lo contrario, ahí se busca rapidez sin importar la integridad de la información (entre otras muchas más caracteristicas).

Apoyados de nmap también podemos realizar ese escaneo:

sudo nmap -sU -p- --open -v --min-rate=5000 10.129.134.213 -oA udp-all-htb_expressway
Parámetro Descripción
-sU Indicamos que queremos un escaneo por UDP
–min-rate Este escaneo es lento, con esto podemos indicarle cuantos paquetes enviar por petición

Obtenemos nueva infoooooooooo:

Puerto Descripción
500 IKE: Servicio que permite establecer conexiones VPN de forma segura
53553 no lo sabemos con seguridad

Ihsss, lindo, ahora si tenemos de donde empezar a cocinar.

Enumeración #

¿IKE? 📌

Como ya vimos, es un protocolo que permite una conexión segura entre redes virtuales privadas (VPN):

Nos ponemos a investigar, a ver como podemos jugar…

Explotación #

¿IKE? ¿Rompemos o ke? 📌

Llegamos a esta gran guía:

Como vemos, el protocolo IKE inicialmente tiene dos fases, la primera es para establecer la conexión segura y la segunda es para empezar a transportar la información, en la primera fase se usan dos métodos para el intercambio de llaves, el modo principal y el modo agresivo, la guía explorara el modo agresivo.

Como notamos, el modo agresivo intenta responder con una llave compartida y otros datos para la generación de la sesión. Nuestro enfoque será intentar obtener esa llave y si esta no es robusta, obtener el resultado en texto plano de ella.

Explorando sobre esa llave, encontramos:

Así que con más razón vamos tras ella.

Lo primero que nos indica la guía es instalar la herramienta ike-scan para descubrir más información del servicio y en pasos posteriores intentar extraer la llave:

./ike-scan 10.129.134.213 -M -A

-M para que nos imprima la información en varias lineas y -A para que use el modo agresivo

10.129.134.213  Aggressive Mode Handshake returned
        HDR=(CKY-R=306bd5ea590fe122)
        SA=(Enc=3DES Hash=SHA1 Group=2:modp1024 Auth=PSK LifeType=Seconds LifeDuration=28800)
        KeyExchange(128 bytes)
        Nonce(32 bytes)
        ID(Type=ID_USER_FQDN, Value=ike@expressway.htb)
        VID=09002689dfd6b712
        VID=afcad71368a1f1c96b8696fc77570100
        Hash(20 bytes)

Vemos que efectivamente existe un hash en formato SHA1 y también obtenemos el usuario ike.

Agresivamente, nos robamos cosas 📌

Guardamos el hash en un archivo:

./ike-scan/ike-scan 10.129.134.213 -A --pskcrack --pskcrack=ike.psk

Ahora la idea es usar la herramienta psk-crack para intentar descubrir el valor en texto plano del hash, si la herramienta genera un hash idéntico al que tenemos, ya tendríamos el origen del hash:

./ike-scan/psk-crack -d /usr/share/wordlists/rockyou.txt ike.psk

Con -d le indicamos el diccionario de palabras para que la herramienta vaya probando y generando los hashes

key "freakingrockstarontheroad" matches SHA1 hash f27f15b6c4bdabb8aaf1db91549079c72c734f9d

¡OBTENEMOS EL VALOOOOOOR!!!

Ya con eso, lo único que se nos ocurre es pensar en el servicio SSH, ya que tenemos un usuario y el resultado de una llave, quizá ese usuario usó ese valor como credencial:

ike : freakingrockstarontheroad

Tamoooos dentrooo (:)

Escalada de privilegios #

Despues de probar demasiadas cosas (enserio, muchas) y perderme en temas relacionados a squid (ya hablaremos de esto), tftp, capabilities, logs y otras, encontramos el camino…

Cache-ando y log-eando 📌

Estos son los grupos que tiene asignados el usuario ike:

El grupo proxy es distinto a lo normal, buscando archivos relacionados a ese grupo (a los cuales ike tendría acceso) encontramos:

find / -group proxy -ls 2>/dev/null

Jmm, archivos relacionados con el servicio Squid, el cual actúa como un proxy enfocado en temas de caché. Si recorremos los archivos, existe un log en el que alguien intentó acceder a un subdominio:

¿Lo encontraste?

offramp.expressway.htb

Y acá fue donde me re perdí y me puse a divagar :P Es que pensé, “pues tengo un subdominio, pero no tengo un sitio web, ¿qué hagooooo?”, y lo que hice fue perderme fklasdjfl, pero bueno…

Una vez tenemos el subdominio, nos lo guardamos, es info importante, pero aún no lo sabemos ;)

¿Sudas? 📌

Siguiendo con mis pruebas, se me hizo raro encontrar dos objetos sudo en el sistema (que nos permite ejecutar acciones privilegiadas sobre otros usuarios):

Pero es que el sistema por default ya tiene uno en la ruta /usr/bin/sudo, si revisamos, son versiones distintas:

:O

Esto me pone a dudar y me lleva a buscar posibles vulnerabilidades relacionadas con la versión más vieja, encontramos:

Un bug para bypasear restricciones relacionadas con hostnames, o sea, si tenemos (por ejemplo) estos dos hostnames:

En la vuln, un usuario podría ejecutar comandos en prod-server pretendiendo estar en dev-server.

Solo queeeeeeeee, en lugar de enfocarnos en la vuln, nos enfocamos en el tema “hostnames”, ya que está interesante y es algo que no había probado y realmente no sabía.

Previamente, encontramos el subdominio offramp.expressway.htb y ahora estamos sobre expressway.htb, ejecutando sudo -l contra expressway.htb para ver si tenemos permisos sobre otros usuarios, el sistema responde que no señorito. PEEEEERO, llegó el gran PERO, ¿y si probamos contra el subdominio (como si fuera un hostname)?

/usr/local/bin/sudo -l -h offramp.expressway.htb
/usr/bin/sudo -l -h offramp.expressway.htb
sudo -l -h offramp.expressway.htb

JAAAAY!!! ¡Nuestro subdominio era un hostname y tenemos permisos de ejecución total sobre ese hostname como cualquier usuariooooooOOOOOO!

Levantemos una terminal como root:

Y tamos finos :P

Post-Explotación #

Flags 📌

Listones, una máquina sencilla, pero que puede llegar a ser locura. Me gustó el tema de IKE y su seguridad, el meternos en el tema y aprender.

Por ahora es todo, nos leeremos otro día, muchas gracias 💖

Abrazoooooos y a seguir rompiendo de todooooo!!

Lanz

Lanz

Holap, simplemente quiero compartir contigo mis notas y que quizás, las tomes como apoyo. Este mundo es un camino raro, complicado a veces, pero divertido, diviertete (: (y entiende que estas haciendo :P)

Comments

comments powered by Disqus