overpass

La máquina Overpass es una máquina de dificultad fácil de TryHackMe.

Resumen de conceptos trabajados en Overpass:

Enumeración de directorios mediante Fuzzing
Bypassing formulario de inicio de sesión vulnerable
Crackeo de contraseña id_rsa
Suplantación de identidad clave ssh

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.

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

ENUMERACIÓN -> ESCANEO DE PUERTOS

En este caso se trata de una máquina de dificultad Fácil 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:

Para asegurarte que está conectado a la máquina víctima ejecuta este comando «nmap -sn IP».

nmap -sn 10.10.181.180

¿ANTE QUÉ MÁQUINA NOS ENFRENTAMOS? WINDOWS TTL 124 O LINUX 64

En este caso es LINUX porque tiene un TimeToLive 63 (64 sería Linux pero se le resto uno por el nodo intermediario de la plataforma TryHackMe).

Si lanzas el comando ping con -R (de traceroute) podrás verlo.

ping -c 1 10.10.181.180 -R

Empezamos a analizar los puertos abiertos que corren por esa máquina. -sCV (para ver las versiones y servicios que corren en los diferentes puertos).

nmap -sCV 10.10.181.180

(un comando de escaneo más completo sería)

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

*Con -oN exportamos los resultados en un fichero llamado «escaneo» dentro de nuestra carpeta de trabajo de la máquina.

De tal forma que una vez se termina el escaneo, vamos a la carpeta de la máquina y abrimos con cat el resultado del escaneo:

Vemos los puertos 22 y 80 abiertos:

Puerto 22 versión OpenSSH 7.6p1 (aunque esta versión es vulnerable y se pueden ver en la página exploits en internet, en principio no haremos el ataque por aquí).

Vamos a por el puerto 80 web. Por tanto:

Abrimos el navegador y ponemos la dirección IP http://10.10.181.180

El servidor nos responde con un 200 y nos muestra el contenido de la web:

Descubrimos directorios internos ocultos con FUZZING

Haciendo una revisión de la página, vemos que hay varios enlaces a directorios internos entre ellos /dowloads y /aboutus.

Analizamos también el código fuente por si hubiera algo más interesante, y también vemos un directorio /img/ donde se aloja el logo de la web.

Para investigar un poco más acerca de los servicios que corren por detrás de la página en cuanto a qué tecnologías está usando, etc, podemos verlo o bien a través de la extensión de Forefox Wappalyzer, o ejecutando el comando en Linux “whatweb IP”.

En la primera opción no devuelve nada, y mediante el comando en consola, el resultado no muestra nada especial susceptible de ser vulnerable.

Por tanto, vamos a profundizar en la búsqueda de más directorios internos que queden ocultos a simple vista…

Para ello ejecutamos Wfuzz que nos ayudará a detectar directorios abiertos o con un estado de respuesta 2xx o 3xx, de la siguiente forma:

wfuzz -c --hc 404 -t 200 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://10.10.181.180/FUZZ

Vemos un nuevo directorio llamado /admin que nos muestra un panel de autenticación, y sobre el que vamos a profundizar.

Bypassing formulario de inicio de sesión vulnerable

Si analizamos el código fuente, nos encontramos con tres ficheros js:

  • Main.js (lo descarto porque se replica en todas las páginas y no es punto de entrada en este caso).
  • Login.js
  • Cookie.js : Estos dos podrían ser puntos importantes de vulnerabilidad porque podrían ayudarnos a interceptar cookies de sesión, etc. y obtener credenciales.

Si analizamos los dos js de login y cookie, vemos que, el fichero de login.js, incluye en el código una función que permite manipular la sesión de la cookie.

Si vamos de nuevo a la url de /admin , podemos establecer ese valor de cookie “SessionToken” directamente en el navegador de la siguiente manera:

Inspeccionar Página – Storage – Cookies – “+” – cambiamos el Name de la Cookie por “SessionToken”, y en el path, en lugar de seleccionar el /admin/ habría que dejar sólo la “/” de la raíz.

De esta forma podemos hacer bypassing del login para acceder alterando la cookie de sesión.

Al refrescar ahora la página con esos valores modificados, la página nos devuelve el ID RSA:

Cracking de la password de la ID RSA

Para descifrar esta clave RSA necesitamos una contraseña.

Por tanto vamos a crackear la clave RSA mediante las herramientas de John y el diccionario de rockyou, primero yéndonos a nuestra consola y creando un fichero nano copiando toda la clave RSA y pegándola tal cual en el nano.

En mi caso, el diccionario “rockyou” se encuentra en: /usr/share/wordlists/rockyou.txt.gz

Descomprimimos el fichero y lo alojamos como txt dentro de la carpeta:

Lo siguiente sería crackear ese RSA mediante la herramienta ssh2john usando ese diccionario de contras de rockyou que hemos alojado.

Para ello aplicamos ssh2john y le decimos que el hash nos lo guarde en el archivo “password.txt” , y después mediante john le aplicamos el diccionario rockyou.

Así obtenemos la clave “james13” para más adelante al acceder por ssh a la máquina víctima.

Para poder entrar al ssh de la máquina víctima necesitamos darle los permisos de chmod al id_rsa (por defecto 600) de la siguiente manera:

Suplantación de Identidad mediante clave SSH

Entonces ahora para acceder sería:

ssh -i id_rsa james@10.10.181.180

El usuario era “james” ; y la contraseña que crackeamos “james13”, así ya estaríamos dentro.

Si buscamos internamente vamos a ver dentro del fichero user.txt la primera flag:

Ahora tenemos que escalar privilegios para conseguir la flag del usuario root.

Analizamos y buscamos los permisos dentro de la máquina:

Encontramos el programa pkexec el cual ejecuta comandos o aplicaciones con privilegios de superusuario (root).

Para ello buscamos en Google “pkexec exploit github” y vamos a la página de https://github.com/berdav/CVE-2021-4034

Por tanto, vamos a copiar el código y nos lo clonamos dentro de nuestro Kali:

Ahora, todos los ficheros incluidos dentro, tenemos que alojarlos en la máquina víctima.

Para ello los subiremos uno a uno (hay más opciones, pero según ElPingüinodeMario, al no tener instalada la máquina el zip, no es posible comprimir todos esos archivos a un zip y ejecutarlos en la máquina víctima).

Levantamos un servidor en pyhton3 por el puerto 80:

Y vamos copiando esos 4 recursos uno a uno (dentro de la máquina víctima) de esta forma:

Una vez ya están esos ficheros dentro, lo que hacemos es seguir los pasos que indican en github y ya accederíamos a la flag de root:

Otros posts relacionados