Ignite: encendiendo TryHackMe en 3,2,1

Primera flag

Como siempre, al comenzar esta máquina Ignite, escanearemos los puertos con nmap para saber qué puertos y qué servicios están abiertos en ella:

nmap -sV -p- -T4 10.10.162.18

Con este comando, obtenemos la siguiente salida:

Ignite escaneo de puertos

Como vemos, sólo se encuentra abierto el puerto 80, que es el del servidor web Apache httpd en su versión 2.4.18.

Una vez visto esto, probamos a navegar desde Firefox a la IP de la máquina víctima, y nos muestra la siguiente pantalla:

Ignite CMS

Como podemos ver, se trata de un CMS (Gestor de Contenido) llamado Fuel, en su versión 1.4.

Si bajamos un poco más en la web nos encontramos el siguiente mensaje:

Datos de login

Ahí nos desvelan el nombre del usuario y la contraseña, además de la URL en la que tenemos que entrar para encontrar el panel de login. Ingresando a dicha URL, nos aparecerá lo siguiente:

Pantalla de login

Si introducimos los datos obtenidos anteriormente, apareceremos dentro del panel de control del CMS:

Escritorio del CMS

Podemos investigar por las distintas áreas del panel de la izquierda. Encontraremos el Escritorio, las Páginas, los Bloques disponibles, pero la sección que más nos interesa es la de Assets (activos), ya que nos permite subir un documento, una imagen o un pdf. Además, nos muestra una opción que, si la marcamos, podemos subir el archivo como .zip y descomprimirlo una vez subido. ¿Puede ser esto útil para subir una reverse shell a la web?

Apartado Assets del CMS

Por lo pronto, vamos a crear una reverse shell en PHP y comprimiremos el archivo como .zip. Para ello usaremos la página de Revshells que he descubierto recientemente gracias al canal de YouTube de El Pingüino de Mario. Esta página nos permite crear shells de diversos tipos. La que nos interesa en nuestro caso es la reverse shell PHP PentestMonkey, por lo que la buscamos en el menú inferior, y en la parte superior configuramos la IP de nuestra máquina atacante y el puerto que pondremos a la escucha:

Revshells: creando una reverse shell

Una vez puesta la IP, dentro del script PHP aparecerá nuestra IP y el puerto que le hemos indicado, en el que usaremos netcat para estar a la escucha. Copiamos la reverse shell con el botón Copy y creamos un archivo .php en nuestra máquina atacante en el que pegaremos el código del script facilitado por la página.

Una vez tenemos el archivo .php, hemos de comprimirlo en un .zip, por lo que usaremos el comando zip -r reverse.zip reverse-shell.php, teniendo en cuenta que nuestra reverse shell se llamaba reverse-shell.php y que queremos llamar reverse al .zip creado (le podéis poner el nombre que queráis, pero es el archivo que después se ha de subir a Assets).

Configuramos Assets de forma que quede así:

Subiendo la reverse shell

Y hacemos clic en Upload.

Si aparece este mensaje quiere decir que el archivo se ha subido correctamente, por lo que ahora podemos ir al apartado Assets y encontraremos allí nuestro archivo .php:

Reverse shell subida
Es momento de ejecutar la reverse shell

Es momento de abrir un netcat en el puerto indicado, en nuestro caso era el 443, y ponerlo a la escucha con nc -nlvp 443 y, si después hacemos clic en el archivo dentro de Assets, obtendremos nuestra shell en la máquina víctima:

Abrimos netcat en el puerto 443

Una vez dentro de la máquina, sólo tenemos que ir al directorio /home/www-data/ y encontraremos el archivo *flag.txt*, que es la primera flag que hemos de introducir en la máquina de TryHackMe.

Escalando privilegios: segunda flag

Comenzamos por conseguir una shell totalmente interactiva mediante el comando:

python -c` `'import pty; pty.spawn("/bin/bash")'

Después hacemos un CTRL+Z y saldremos de la shell, pero la dejaremos en segundo plano. Mientras la shell está en segundo plano, usaremos los comandos:

stty raw -echo
fg

Y pulsaremos INTRO. Hecho esto, introducimos el siguiente comando en la shell que hemos recuperado:

export TERM=screen

Y con esto tendremos una shell en la que podremos usar el tabulador, las flechas del teclado y demás.

Es momento de volver a la primera página que vimos, donde se nos presentaba el CMS, y vemos que nos habla de una base de datos:

Hay una base de datos interesante

Si consultamos ese archivo php, es posible que encontremos algún dato interesante, por lo que leeremos el archivo con el comando cat /var/www/html/fuel/application/config/database.php y nos aparecerá lo siguiente:

Datos de la base de datos

Aquí podemos ver un username y un password. Vemos que el username es root, por lo que seguramente password será la contraseña para obtener privilegios de root.

Para comprobarlo, hacemos un su root y nos pedirá la contraseña, introducimos la contraseña y obtendremos el siguiente mensaje:

Conseguimos el root

Por tanto, ahora sólo nos queda navegar al directorio /root y leer la flag que hay en root.txt.

Conclusiones de la máquina Ignite

Y ya hemos obtenido las dos flags, por lo que aquí acaba la resolución de la máquina. Como habéis podido observar, en esta máquina no había más que un puerto abierto, el puerto 80, por lo que todo ha tenido que ser a través de este puerto, por el que corría un servidor Apache en este caso.

En otras ocasiones encontraréis distintos puertos abiertos, o será más complicado conseguir las credenciales de root, pero eso ya lo iremos viendo en próximas máquinas.

Espero que os hayáis divertido con esta, y no dudéis en preguntarme lo que necesitéis saber sobre la máquina en cuestión. La podéis encontrar en Try Hack Me.

También podéis visitar el resto de soluciones y traducciones de Try Hack Me en su sección correspondiente.

1 comentario en «Ignite: encendiendo TryHackMe en 3,2,1»

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Ads Blocker Image Powered by Code Help Pro

¡¡¡Ads Blocker Detectado!!!

Hemos detectado que usas extensiones para bloquear anuncios. Por favor, si te interesa el contenido, no bloquees los anuncios, que son lo que nos ayuda a poder publicar más contenido como este 😊