ColddBox: Easy – TryHackMe Write-up Oficial

ColddBox: Easy – TryHackMe Write-up Oficial

Hoy vamos a resolver mi primera máquina vulnerable tipo boot2root subida a TryHackMe, hablo de ColddBox: Easy, en ella, gracias a la enumeración web, obtendremos acceso al panel de administración del CMS que este tiene instalado y, a partir de ahí poder acceder como tal al sistema, luego, a través de reutilziación de contraseñas y abuso de permisos de sudoers escalaremos privilegios a un usuario común del sistema y a root respectivamente.

Enumeración

Empezamos con una enumeración de todos los puertos ¿por qué?, porque es importante entender que porque, por ejemplo, el puerto estándar para SSH sea el 22, no significa que siempre un SSH deba estar corriendo en el puerto 22, puede estar corriendo en cualquier otro puerto de los 65535 mientras que este no este en uso, entonces para detectar los puertos abiertos, para analizarlos todos, podemos usar distintas herramientas, hay muchas en realidad, pero yo para esta labor uso furious, ya que es una herramienta hecha en go y go con los sockets y conexiones es como el refresco con la pizza, maravilloso, aunque también se puede usar nmap con verbose por ejemplo, pero usaremos furious, así que, teniendo furious descargado, ejecutemos un escaneo de todos los puertos contra la ColddBox: Easy:

furious -s connect -p1-65535 <IP>

Veremos que tenemos el puerto 80 (HTTP) y el 4512 (DESCONOCIDO).

 

Ahora, con nmap, hagamos un escaneo más profundo de estos puertos, para ello:

nmap -sC -sV -p80,4512 <IP>

Como vemos, en el puerto 4512 corre un servicio SSH, es lo que comentábamos antes, por eso quise hacer que esta máquina tuviese ese servicio en este puerto, aunque se puede resolver sin establecer una conexión por SSH, sí, pero la cosa es ir tocando todo lo que se pueda ¿no?.

 

Entonces, ya que tenemos información básica de la máquina, hay que recordar que tiene un servicio http corriendo en el puerto 80, aparentemente un WordPress por lo que nos indica nmap, así que hay que echar un vistazo:

Efectivamente, es un blog hecho con WordPress, al inspeccionarlo un poco, vemos que tiene una entrada del autor “the cold in person” que, posiblemente no sea ese como tal su nombre de usuario, sino su nombre público y, además hay un comentario en dicho articulo:

Nada muy relevante, así que hagamos fuzzing con gobuster para detectar si hay algo oculto por ahí, para ello:

gobuster dir -u <URL> -w <PATH_WORDLIST>

Mientras el escaneo se hace, vamos al panel de login del sitio, ya que, si es un WordPress, este por efecto debería ser/wp-login.php:

Bien, ahora probemos algo, esto es un error de WordPress que inconscientemente nos dice qué usuarios tiene dentro de él, si probamos con, admin:admin nos dirá que el nombre de usuario es invalido:

Pero, pensemos un poco en la entrada del blog dice que un tal “C0ldd” fue el que hizo la máquina, además que, la máquina se llama “ColddBox” así que podemos probar a modo de ejemplo con “C0ldd” o “Coldd” y, si probamos con “C0ldd” como nombre de usuario, veremos que, nos dice algo interesante:

Nos dice que la contraseña para el usuario “C0ldd” es invalida, pero no nos dice que el usuario lo sea, por lo cual entendemos que este usuario si es un usuario dentro de WordPress.

 

Bueno, volviendo con los resultados de gobuster:

Vemos que detecto un directorio nada común en un WordPress, /hidden, si vamos a ese directorio a ver qué es, nos toparemos con la siguiente nota:

Es una nota que le deja “Phillip” a “C0ldd” diciéndole que “Hugo” no puede subir sus artículos porque perdió su contraseña, “C0ldd” la sabe pero aún no se la ha dado, esto lo hice para que analizarán un poco, si “Phillip” le deja esta nota C0ldd es porque este no tiene permisos para ver/cambiar una contraseña y, “Hugo” tampoco, ya que si pudiese lo hace directamente, así que podemos deducir que “C0ldd” si puede hacerlo y, para hacer eso hay que ser administrador en WordPress por lo que, este último podemos intuir, es el administrador del WordPress, así que apuntaremos a él, así que con esto pasamos a la fase de explotación.

Explotación

En este punto, ¿qué se nos puede ocurrir?, ya que tenemos un nombre de usuario al que apuntar, podemos intentar hacer un ataque de fuerza bruta contra el login de WordPress, para ello existen muchas herramientas, pero yo siempre recomiendo usar herramientas que estén optimizadas para una tecnología en concreto y, en Kali hay una herramienta llamada wpscan que, está completamente destinada a el análisis de vulnerabilidades en WordPress, así que al ver que estamos frente a un WordPress, la usaremos, para ello:

wpscan –url <URL> -U c0ldd –passwords <PATH_WORDLIST>

Yo usaré rockyou para que pruebe con alguna de esas contraseñas a ver si alguna coincide con la del usuario “c0ldd” en este caso, perfectamente pudimos poner tanto a “Hugo” como a “Phillip” igualmente, pero ya que tenemos claro que “c0ldd” es el admin, apuntamos a él para ahorrarnos tiempo y bueno, al pasar unos pocos segundos ya tendremos la contraseña del usuario “c0ldd”:

Ya con la contraseña, iniciamos sesión y, conseguimos acceso al Dashboard:

Ahora, vamos a establecer una shell reversa, para ello podemos hacerlo de distintas formas, yo simplemente editare el tema y añadiré un código php que le indique a la máquina victima que debe enviar a mi ip a través de un puerto, una shell, para ello:

Luego, seleccionamos la parte del tema a editar, en mi caso la página 404:

En este punto, puedes usar la revershell php que más te guste, yo para este ejemplo, usaré un fragmento de código muy corto y simple:

Fíjate que puse mi ip (la de la interfaz tun0 habitualmente) y, el puerto, en este caso el 443, guardamos los cambios y, ahora toca poner a la escucha ese puerto, para ello:

nc -lvp  443

Ya con esto, solamente queda ir a la página en cuestión y obtendremos la shell:

Ya estamos dentro del sistema como el usuario www-data, pero si intentamos leer la bandera de usuario, veremos que no tenemos permisos y que, de hecho, solo el usuario c0ldd puede leerla:

Escalación de privilegios

Escalación de privilegios a usuario común:

Esto es común en algunas máquinas, debemos escalar privilegios a un usuario del sistema y, luego a root, aunque en este punto ya podríamos convertirnos en root, pero eso no sería interesante, así que, en este punto podemos buscar credenciales dentro del sistema, cuando hay un CMS como WordPRess instalado, suelen estar ficheros .config que, como por ejemplo, el wp-config.php, contienen las credenciales en texto plano de la base de datos NO DEL SISTEMA, NO DEL WORDPRESS, de la base de datos, es importante resaltar esto, pero aunque no se nos diga que son las credenciales como tal del sistema, son credenciales nuevas que podemos probar, para buscar estos ficheros podemos jugar un poco con algunos comandos de Linux, así que para ello usaremos:

find / -iname “*config*.php” | xargs cat * | grep -i “db_”

Este comando lo que hace es buscar todos los ficheros que contengan la palabra “config”, que antes de esta y luego tengan cualquier carácter y, luego tenga .php, luego toda su salida, es decir, todos los ficheros que encuentre serán leídos con cat y, finalmente, del resultado de leerlos todos, se filtra con grep los resultados que tengan la palabra “db_” que es un patrón que está dentro de las definiciones de este tipo de ficheros, al ejecutarlo, veremos que tenemos unas credenciales nuevas, en este caso una nueva contraseña para el usuario “c0ldd”:

Ahora, con estas credenciales, iniciaremos sesión con el usuario c0ldd a través del puerto 4512 y con esta contraseña que hemos encontrado, al hacerlo, ya estamos dentro:

Y, ya podemos leer tranquilamente la bandera:

Escalación de privilegios a root.

Ahora, toca escalar privilegios a root, para ello haremos primero que todo un sudo -l para ver que podemos ejecutar con permisos elevados:

Vemos que tenemos tres binarios, los tres nos sirven para escalar y es que, esta máquina tiene muchas formas de escalar, tenemos estos tres binarios, tenemos un SUID como lo vimos en el write-up de ColddBox: Easy de VulnHub y, además hay algunas cosillas más. En fin, en este caso usaremos el binario chmod y, lo haremos de una forma bastante interesante que discutimos en un directo dentro del servidor de discord y que fue sugerido por dresy, entonces, esto consiste en cambiar los permisos del binario bash, cambiarlos y asignarle un permiso SUID y, obtener una shell como root al ejecutarlo, ya que al cambiar el permiso usaremos “sudo chmod” por lo que, el permiso se cambiará como si fuésemos root y  recordar que los SUID nos permiten obtener permisos temporales para ejecutar un recurso como su propietario, un recurso que tenga este permiso, para ello:

chmod +s /bin/bash

Y, finalmente ejecutando bash con el parámetro -p podemos obtener una shell donde nuestro euid y egid son root, por ende, podemos leer la bandera y completar la máquina:

Espero que puedan aprender algo nuevo con esta máquina, pueden enviar sus Write-ups en TryHackMe y los aceptaré con gusto, eso sí, eviten que en los write-ups se muestren las contraseñas y las banderas, eso le quita la diversión, sin más, muchas gracias por jugar :).

ACT: Gracias 🙂

Anuncio

Sobre el Autor

Martin Frias

Founder of Coldd Security

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

  • 106.296
  • 51

TheHackerSnow

0

Share This