RootMe – TryHackMe Write-Up

RootMe – TryHackMe Write-Up

Hoy vamos a resolver la maquina RootMe de TryHackMe, en ella gracias al fuzzing podremos identificar un portal para subir ficheros con algunos filtros de seguridad que deberemos evadir para subir una shell reversa, obtener acceso de usuario y finalmente poder escalar privilegios gracias al permiso suid del binario Python en el sistema.

Ip de la máquina en mi caso: 10.10.94.100

Dificultad asignada por la plataforma: Fácil

He de decir que, esta sala en TryHackMe tiene muchas preguntas para responder, yo en este Write-Up voy a mostrar el proceso partiendo de la enumeración > explotación > escalada de privilegios, las preguntas pueden responder a partir de los resultados de los procesos seguidos.

Enumeración

Lo primero, como siempre, lanzamos el rec0ldd para detectar todos los puertos abiertos:

rec0ldd

Resultado de escaneo con rec0ldd

Ahora, sabemos que hay dos puertos abiertos 22 y 80, ahora, con nmap hare lo justo y haremos un escaneo más profundo, para ello:

nmap -sC -sV <ip> -o <nombre>

escaneo con nmap

Resultado del escaneo con nmap

Como era de suponer, el puerto 22 es un SSH y el puerto 80 es un HTTP, corriendo un apache, adicionalmente vemos que es un Ubuntu al parecer y nada, vamos a ver si podemos obtener más información viendo la web que está en el apache:

pagina de incio rootme

Página de inicio de RootMe

Podemos ver que, tenemos una página que nos muestra una animación muy chula, no tanto como la de immersion, pero bastante chula, bueno, lo de siempre, hacemos fuzzing con gobuster, para ello:

gobuster  dir -u http://<ip>-w <wordlist>

gobuster

Resultado de fuzzing con gobuster

Podemos identificar que hay dos directorios que llaman la atención, el directorio panel y el directorio uploads, viendo más a fondo panel vemos que es un directorio donde podemos subir ficheros, en su momento, intenté lo más evidente, subir una revershell en php pero tenía un filtro y no permitía esta extensión:

uploads

No acepta subida de ficheros con extensión php

Explotación

Entonces, lo que podemos hacer en estos casos es algo muy variado, en mi caso quise usar burp suite, probar con distintas extensiones hasta ver con cuál me permite subir la shell en cuestión:

peticion burp suite

Captura de petición en burp suite

Seguidamente, mando la petición al intruder y añado la extensión:

intruder

Configuración en el intruder de burp suite

Luego, cargo el payload, que serán más extensiones:

extensiones

Extensiones de prueba

Al ejecutar el ataque podemos ver que, efectivamente, el tamaño de la petición cambia cuando la petición es php5 y, efectivamente nos deja subir la shell:

permite subir shell

Las extensiones php5 y phtml no están bloqueadas

En este punto, ya las shell’s están subidas (he subido una de cada extensión para que se vea que no están bloqueadas), ahora, si recordamos, gobuster nos arrojó que había un directorio “uploads” es lo más lógico que los ficheros subidos figuren ahí, así que, si entramos a ese directorio, veremos nuestras shell’s:

shells

Shell’s reversas subidas con éxito

No lo mencioné, pero la shell que se subió es la de pentest monkey, a la que solo se debe modificar la ip por nuestra ip local y el puerto, en mi caso le puse el 443, bien, ahora con todo preparado, vamos a la explotación.

Bien, en este punto hay que poner a la escucha el puerto par que reciba la conexión, en mi caso el 443, para ello usaré netcat:

nc -lvnp <puerto>

netcat

Netcat configurado y a la escucha

Y, darle clic a una de las shell que están en la máquina, al hacerlo obtendremos un primer acceso:

primer acceso

Primer acceso

En este punto podemos leer la bandera user.txt que por cierto está en /var/www:

user txt

Lectura de user.txt

Escalación de privilegios

En este punto, luego de hacer un tratamiento de la tty, hice una búsqueda de recuros con permiso suid que me permitieran obtener acceso como root, usé el comando:

find / -perm -u=s -user root -type f -exec ls -l {} \; 2>/dev/null

suid

Recursos con permiso suid del usaurio root

Me percaté que teníamos el binario de Python con permisos suid de root, así que nada, esto es muy simple, para escalar a root, ejecutamos:

/usr/bin/python  -c ‘import os; os.execl(“/bin/sh”, “sh”, “-p”)’

Y con esto podemos acceder como root y leer la bandera:

root txt

Acceso como root conseguido

Calificación

  • Dificultad de acceso: 15% 15%
  • 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%

Sobre el Autor

C0ldd

Founder of Coldd Security

3 Comentarios

  1. Avatar

    No entendí muy bien lo del suid, exactamente cómo funciona?

    Responder
    • C0ldd

      Un recurso con permiso SUID permite que dicho recurso pueda ser ejecutado por cualquier usuario del sistema con los permisos de su propietario, en este caso hay un binario de python con permiso suid de root, por ende, si con el módulo OS hacemos que nos devuelva una shell ejecutando el script con ese binario de python, estamos obteniendo una shell como root.

      Tienes este artículo donde hablo del tema.

      Responder
      • Avatar

        Muchas gracias, todo ha quedado claro 🙂

        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.

Sponsor By

Coldd Security

REDES SOCIALES

Newsletter

Estadísticas

  • 55.908
  • 43

TheHackerSnow

0

Share This