Artículo · Pentesting

Write-up máquina WebDeveloper1 de VulnHub

MFMartin Frias 6 min de lectura

Buenas, soy Martin Frias (otra vez), en unos días se hará público mi primer curso en esta plataforma llamado “Hacking Ético boot2root”, en este curso abordaremos cómo es la resolución de una máquina tipo boot2root que yo elabore, ColddBox: Easy, disponible tanto en VulnHub como en TryHackMe.

Es por eso por lo que, he querido hacer un artículo haciendo un write-up de una máquina de vulnhub llamada “webdevepoler1” a modo de introducción para que puedan saber un poco de qué va a ir el curso, es una máquina algo parecida a la que tocaremos en el curso, sin más, comencemos:

 

Enumeración

Comentar antes que todo que la máquina está corriendo en local y, la ip a la que atacaremos será la  10.0.2.8, bien, primero veamos qué puertos tiene abiertos, para ello haremos uso de furious:

furious -s connect -p1-65535 <IP> 

 

Vemos que tiene el puerto 22 (SSH) y 80 (HTTP) abiertos, para enumerar de una forma más profunda estos puertos usaremos nmap:

nmap -sC -sV -p22,80 <IP> -oN <nombre>

 

 

Al hacerlo se puede apreciar que corre un apache donde esta instalado un WordPress en una versión muy desactualizada, por lo que, es muy probable que haya vulnerabilidades que se puedan explotar, entonces, con estos datos vamos a entrar al navegador e inspeccionar un poco este WordPress.

 

Al entrar veremos que, efectivamente es un WordPress, entonces en este punto, ¿qué hay que hacer?, podemos usar herramientas que nos facilitan la búsqueda de vulnerabilidades en este CMS como lo es WPScan, siempre recomiendo usar herramientas optimizadas para cada tecnología, pero, en este caso, haremos fuzzing para detectar posibles recursos ocultos dentro del sitio web, para ello usaremos gobuster:

gobuster dir –url <URL> --wordlist <wordlist>

Al hacerlo veremos que hay un directorio llamado “ipdata” nada común en WordPress, así que entremos en él:

Dentro del directorio hay un archivo con extensión cap, así que lo descargamos y lo abrimos con WireShark:

Luego, analizando un poco el archivo podemos detectar las credenciales de acceso al WordPress:

 

Explotación

Vamos ahora con la explotación y, con esas credenciales, accedemos al WordPress:

Ya estamos dentro, en este punto ¿qué se puede hacer?, lo que hay que hacer es obtener una shell reversa, intentar inyectar código malicioso en alguna parte del WordPress para que la máquina lo ejecute, interprete y nos devuelva una shell, para hacerlo se puede hacer de varias formas, por ejemplo tienes este artículo en mi blog donde hice un write-up de la máquina Mr Robot de TryHackMe, donde también teníamos un WordPress y accedimos al sistema gracias a subir un plugin malicioso que al ser ejecutado nos devolvió la shell, puedes probar ese método, aunque en este write-up lo haremos de una forma más rápida, usaremos un fragmento de código php que con el comando exec (que permite ejecutar funciones o scripts) le diremos que ejecute un comando en el sistema que nos devolverá la shell, para ello debemos irnos a editar un plugin, yo suelo editar akismet que en la mayoría de instalaciones de wordpress viene por defecto ahí incrustar el código:

Ahí, debemos incrustar nuestra ip y el puerto donde recibiremos la shell, seguidamente lo guardamos y en una terminal ponemos a la escucha dicho puerto con netcat, para ello:

nc -lvp 443

Ahora, cuando le demos a activar, el plugin intentará activarse, ejecutará su código, incluido el código malicioso y así obtendremos una shell en el sistema de la víctima:

 

Escalación de privilegios

Bien, ya estamos dentro, ahora toca escalar privilegios, algo que yo suelo hacer siempre que entro a una máquina que tiene un WordPress es mirar los ficheros de configuración, en concreto el wp-config.php ya que aquí se guarda en texto plano las credenciales de acceso a la base de datos que usa WordPress, NO las credenciales del sistema y NO las credenciales de WordPress, las de la base de datos, pero, son credenciales nuevas que podemos probar por si se llega a dar el caso que haya reutilización de credenciales, entonces, leamos el wp-config.php que está en el directorio padre del directorio activo donde iniciamos la sesión:

Al leerlo podemos identificar que las credenciales de acceso a la base de datos es webdeveloper:MasterOfTheUniverse, ahora, si recuerdas bien, esta máquina tiene un servicio ssh corriendo en el puerto 22, podemos probar estas credenciales para acceder al sistema ya que, si hacemos un ls en /home, veremos que hay un usuario llamado webdeveloper al igual que en WordPress y en la base de datos, así que podemos probar con ese usuario algunas de esas dos contraseñas y comprobar si hay reutilización de credenciales:

Al hacerlo veremos que, efectivamente, hay reutilización de credenciales con las credenciales de la base de datos, ahora, ya tenemos acceso como usuario, procedemos buscar la forma de leer la flag de root (accediendo como le usuario root o no), para ello hay muchísimas formas, la forma más simple y que siempre debes hacer al intentar escalar privilegios es ver qué binarios estas autorizado a ejecutar en la configuración del sudoers, es decir, qué binarios puedes ejecutar con permisos elevados, para ello se hace un:

sudo -l

Como vemos podemos ejecutar como root el binario tcpdump, entonces, para ver si este binario es vulnerable, podemos investigar al respecto, aunque hay un recurso muy bueno llamado GTFOBins que es la biblia de la escalación de privilegios en Linux, ahí podemos entrar y buscar a ver si tcpdump tiene formas de poder ejecutar comandos como root cuando lo tenemos con permisos de sudo:

Efectivamente, hay forma, si damos clic a sudo, veremos los comandos que hay que ejecutar para aprovecharnos de este fallo:

Entonces, lo que pasa aquí es tcpdump ejecutará el comando que le indiquemos como el valor de la variable COMMAND pero esto lo hará solo cuando reciba un paquete, entonces nos tenemos que abrir una shell adicional de ssh de la misma máquina para que, cuando pongamos a escuchar a tcpdump, nosotros mismos le enviemos un paquete y así ejecute el comando:

Ahora, ejecutamos los comandos en una terminal (aunque quitaremos que se ejecute el comando id y, directamente pondremos que se ejecute un cat a la flag):

Seguidamente mandamos el paquete en nuestra otra shell con:

nc -v -z -n -w 1 127.0.0.1 1

 

Y ya con eso obtendremos el resultado del comando:

A partir de aquí se puede jugar con otros comandos que, igualmente serán ejecutados como root.

 

Algunas de estas técnicas y más son las que veremos en el curso que será completamente gratuito, los espero ahí.

¿Quieres aprender estas técnicas en profundidad?

Continúa tu ruta con Penetration Testing Student.

MF

Escrito por

Martin Frias

Fundador de Coldd Security

Sigue leyendo