Sustah – TryHackMe Write-Up

Sustah – TryHackMe Write-Up

Hoy toca resolver la máquina Sustah de TryHackMe en ella, gracias al reconocimiento, lograremos detectar una ruleta que deberemos tratar con el intruder de burp suite para detectar un directorio oculto que nos llevara a un CMS que posteriormente nos servirá pra obtener un primer acceso al sistema y, una vez ahi, deberemos escalar privilegios unas cuantas veces de formas bastante curiosas(esta intro está más larga que la de Start Wars, en fin, vamos a ello).

Ip de la máquina en mi caso: 10.10.119.108

Dificultad asignada por la plataforma: Fácil

Reconocimiento

Primero hacemos un escaneo de todos los puertos con el rec0ldd:

clear ya funciona

Escaneo con rec0ldd

Tenemos tres puertos abiertos, seguidamente hacemos un nmap con los parámetros -sC para que lance los scripts predeterminados, -sV para detectar las versiones y -T4 para que el escaneo vaya más rápido (este último podemos hacerlo ya que, estamos en entornos controlados, en caso de una auditoria real, este modo es muy ruidoso, tanto como la alarma que interrumpe tu sueño cada mañana):

clear ya funciona

Escaneo con nmap

Vemos que, nos enfrentamos a una máquina GNU/Linux, en concreto un Ubuntu, también, tenemos 3 servicios corriendo en 3 puertos diferentes, 22 (SSH), 80 (HTTP) y 8085 (HTTP), ya que hay algunos HTTP, hagamos uso de whatweb para obtener un poco más de información sobre los servicios:

clear ya funciona

Escaneo con whatweb

Vemos que, al entrar ya a los sitios web, el del puerto 80 tiene una página hecha en html puro, que muestra una sola imagen y un texto:

clear ya funciona

Página de inicio

Y la del puerto 8085 parece ser una ruleta que funciona a partir de unas funciones de JavaScript:

clear ya funciona

Ruleta en el puerto 8085

Sin más, procedemos a lo típico, hacemos fuzzing con gobuster para detectar recursos ocultos en ambos sitios web, para ello:

Al hacerlo, veremos que efectivamente estamos donde estábamos antes porque no nos da ninguna información relevante:

clear ya funciona

Escaneos con gobuster

En este punto hice más reconocimiento y me di cuenta de que la ruleta nos da la opción de establecer un número:

clear ya funciona

Prueba en la ruleta hecha en Javascript

Aquí podemos probar números hasta el infinito porque parece no tener limite en la longitud, sin embargo, lo que me di cuenta fue que, al hacer algunas pruebas manuales, me bloqueó, eso también tiene que ver con las cabeceras que vimos antes en el resultado de whatweb. En este punto probé a usar burp suite, en concreto el intruder y, probe hacer bloques de números, es decir, primero probar el rango 0-20000 luego, 20001 – 40000 y así sucesivamente:

clear ya funciona

Configurando el payload

clear ya funciona

Seleccionando el rango de números

En este punto podríamos lanzar el intruder pero, como ya a mi manualmente me bloequeo es obvio que aquí lo volverá a hacer, entonces para evitar eso podemos usar una cabecera para engañar a este tipo de sistemas de limitación, lo que haremos será copiar una cabecera a las peticiones enviadas por el intruder de manera que el sistema piense que es él mismo el que hace las peticiones y no un tercero, de esa forma no pondrá ningún límite y podremos probar con calma, he probado bastantes cabeceras y la que me funciono para esta máquina fue X-Remote-Addr: 127.0.0.1, entonces, la añadimos a la petición del intruder:

clear ya funciona

Configuración de la petición

Y con todo esto, iniciamos el ataque y, después de un rato vemos que, hay una petición que tiene una longitud distinta a las demás y al ver su respuesta, efectivamente esta responde algo distinto, nos da lo que parece ser una ruta:

clear ya funciona

Ruta obtenida

Así que, pongo esa ruta en ambos aplicativos y ha funcionado en el sitio web del puerto 80, llevándonos a un CMS:

clear ya funciona

Página de inicio del CMS

Haciendo más reconocimiento en el cms, me topo con una página de pruebas que lleva a un login donde nos dan las credenciales:

clear ya funciona

Login en el CMS

Explotación

Al logearme, se puede apreciar que ya se pueden editar las páginas, además que nos da un mensaje de advertencia que, nos dice que las credenciales son inseguras:

clear ya funciona

Alerta al hacer login

clear ya funciona

Acceso al CMS

En este punto al ser un CMS es normal que podamos subir ficheros, la opción la tienes ahí:

clear ya funciona

Subir un fichero al CMS

Ahí mismo, seleccionamos subir desde el computador y subimos una shell reversa (use una de pentest moneky modificando los parámetros típicos):

clear ya funciona

Subida de shell reversa

Nos dirá que la guardó en /img, al entrar ahí solamente debes ejecutar la shell y poner a la escucha el netcat en el puerto que pusiste en la Shell, al hacerlo, estamos dentro:

clear ya funciona

Primer acceso al sistema

Ya con una shell, hacemos un tratamiento de la tty para tener algo más interactivo.

Escalación de privilegios

Bien, en este punto, enumerando mucho más el sistema pude notar que existe un usuario llamado kiran, que no podemos usar find y, que no podemos leer el user.txt, por ende, toca escalar privilegios, además, hay un fichero oculto en /var/backups, en dicho fichero, al leerlo tenemos la contraseña del usuario kiran (que es un usuario del sistema):

clear ya funciona

Fichero .bak.passwd

clear ya funciona

Acceso como el usuario “kiran”

En este punto, toca escalar a root, así que esta vez usaré LinPeas, un script hecho en bash que permite encontrar múltiples formas de escalar privilegios, para hacer uso de este puedes descargarlo y pasarlo a la máquina a través de un servidor http de Python, por ejemplo, o, usarlo a través de curl o copiando su código y ejecutándolo directamente en la máquina, en fin, la idea es que el script se ejecute en el sistema, al hacerlo y ver los resultados, podrás ver que el usuario con el que estamos legados, kiran, puede ejecutar como root y sin proporcionar contraseña, el binario rsync:

clear ya funciona

Permiso para ejecutar sin contraseña y como root el binario rsync para el usuario kiran

En este caso esto nos sale así y no al poner “sudo -l” porque esto no es una regla establecida en el sudoers, sino que esta regla se puede ejecutar con doas, que es un comando parecido a sudo, ya que lo que permite es ejecutar comandos como otro usuario, añadido a eso, rsync es una herramienta que permite la sincronización de archivos y, para escalar privilegios con ella, podemos ir a GTFOBins y consultar, en este caso, nosotros necesitamos ejecutar una shell:

clear ya funciona

Cómo escalar según GTFOBins

Entonces, ejecutamos:

Y con eso ya obtendríamos acceso al sistema como root y podríamos leer la flag:

clear ya funciona

Lectura de root.txt

Calificación

  • Dificultad de acceso: 19% 19%
  • Dificultad de escalación de privilegios: 9% 9%

He hecho esta puntuación basándome en estos valores propios:

Fácil1% – 30%

Medio: 31% – 70%

Difícil: 71% – 100%

Anuncio

Sobre el Autor

Martin Frias

Founder of Coldd Security

2 Comentarios

  1. Mario Peña

    Tu forma de explicar es sencillamente mágica, soy muy fan de tu blog y suelo recomendar tus artículos a mis alumnos, sigue así.

    Profesor, Mario Peña

    Responder
    • C0ldd

      Siempre es un placer Mario, un saludo.

      Responder

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información adicional sobre protección de datos:
Responsable: Martin Frias.
Finalidad: Moderar los comentarios de este sitio web.
Cesión: NO se cederán a nadie, salvo obligación legal.
Derechos: Acceso, rectificación, cancelación y borrado de tus datos.
Legitimación: Tu consentido expreso.

REDES SOCIALES

Newsletter

Estadísticas

  • 148.087
  • 54

TheHackerSnow

0

Share This