Introducción
En este laboratorio, aprenderemos sobre las pruebas de penetración en aplicaciones web, un aspecto crucial de la seguridad de la información. Las aplicaciones web se utilizan ampliamente en diversos ámbitos, lo que convierte su seguridad en una prioridad máxima. El laboratorio tiene como objetivo proporcionar experiencia práctica en la identificación y explotación de vulnerabilidades en una aplicación web vulnerable alojada en una máquina objetivo. El objetivo es comprender las vulnerabilidades comunes de las aplicaciones web y las técnicas utilizadas para explotarlas.
Configuración del entorno
En este paso, configuraremos el entorno de laboratorio y nos familiarizaremos con las herramientas y el sistema objetivo.
Primero, necesitamos obtener el ID de la imagen de Kali Linux, el cual se puede visualizar haciendo doble clic en la terminal xfce del escritorio y ejecutando el siguiente comando:
docker images
Debemos iniciar el contenedor de Kali Linux, que será nuestra máquina de ataque. Abre una terminal y ejecuta el siguiente comando:
docker run -ti --network host image-id bash
Este comando iniciará un nuevo contenedor de Kali Linux y te permitirá interactuar con su shell.
A continuación, abriendo una nueva terminal, debemos iniciar la máquina objetivo, que es un sistema vulnerable llamado Metasploitable2. Ejecuta el siguiente comando para iniciar la máquina virtual:
sudo virsh start Metasploitable2
Espera a que la máquina objetivo se inicie; esto puede tardar entre 1 y 3 minutos.
Una vez que la máquina virtual esté en funcionamiento, verifica que puedes hacer ping a la máquina objetivo desde el contenedor de Kali Linux:
ping 192.168.122.102
Reconocimiento y recopilación de información
En este paso, realizaremos el reconocimiento y recopilaremos información sobre el sistema objetivo utilizando diversas técnicas.
Primero, escaneamos la máquina objetivo utilizando la herramienta nmap dentro del contenedor de Kali Linux para identificar puertos abiertos y servicios en ejecución:
nmap -sV -sC -oN nmap_scan.txt 192.168.122.102
Este comando realizará un escaneo de conexión TCP (-sC) para determinar qué puertos están abiertos, y un escaneo de versiones (-sV) para identificar el servicio y la versión que se ejecuta en cada puerto abierto. El resultado se guardará en un archivo llamado nmap_scan.txt (-oN).
El escaneo toma un tiempo. Una vez completado, revisa el archivo nmap_scan.txt para identificar posibles vectores de ataque basados en los puertos y servicios abiertos utilizando el comando cat:
cat nmap_scan.txt
A continuación, realizaremos una enumeración de directorios y archivos en el servidor web objetivo utilizando la herramienta gobuster:
gobuster dir -u http://192.168.122.102 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 30 -o gobuster_scan.txt
Este comando realizará un ataque de fuerza bruta sobre directorios y archivos en el servidor web objetivo utilizando el diccionario especificado (-w). La opción -t especifica el número de hilos concurrentes, y la opción -o guarda el resultado en un archivo llamado gobuster_scan.txt.
Analiza el archivo gobuster_scan.txt para identificar directorios o archivos interesantes que podrían proporcionar información adicional o vectores de ataque.
Explotación de vulnerabilidades
En este paso, intentaremos explotar las vulnerabilidades identificadas en el paso anterior.
Basándonos en la información recopilada de los escaneos de nmap y gobuster, identificaremos posibles vulnerabilidades en el sistema objetivo. Metasploitable2 incluye la aplicación de entrenamiento vulnerable Mutillidae, por lo que en este paso probaremos una página real de esa aplicación en lugar de usar una URL de marcador de posición.
Una vulnerabilidad común encontrada en las aplicaciones web es la inyección SQL. La página user-info.php en Mutillidae acepta el parámetro username en la cadena de consulta, lo que nos da un objetivo concreto para sqlmap dentro del contenedor de Kali Linux.
sqlmap -u "http://192.168.122.102/mutillidae/index.php?page=user-info.php&username=admin&password=admin&user-info-php-submit-button=View+Account+Details" -p username --batch --risk=3 --level=5 --random-agent --dbs
Este comando prueba un endpoint real de Mutillidae en la máquina virtual objetivo. La opción -u proporciona la URL vulnerable completa, -p username le indica a sqlmap en qué parámetro enfocarse, --batch ejecuta la herramienta de forma no interactiva, --risk=3 y --level=5 habilitan pruebas más profundas, --random-agent rota la cadena del agente de usuario y --dbs le pide a sqlmap que enumere los nombres de las bases de datos cuando la explotación tenga éxito.
Dependiendo de la vulnerabilidad que intentes explotar, es posible que necesites utilizar diferentes herramientas o técnicas. Consulta la documentación y los recursos específicos para la vulnerabilidad y la herramienta en cuestión.
Post-explotación y escalada de privilegios
En este paso, utilizaremos la exposición de servicios descubierta durante el reconocimiento para confirmar el acceso a la shell en el sistema objetivo y capturar evidencia básica de post-explotación.
El escaneo de nmap de Metasploitable2 generalmente muestra el puerto TCP 1524 abierto. En esta máquina virtual, ese servicio proporciona una shell de root, por lo que podemos conectarnos directamente desde el contenedor de Kali Linux en lugar de asumir que ya existe una shell inversa separada.
Ejecuta el siguiente comando en el contenedor de Kali Linux:
printf 'id\nuname -a\nexit\n' | nc 192.168.122.102 1524
Esto envía tres comandos al servicio de shell expuesto en la máquina virtual objetivo. El comando id confirma la cuenta que te otorga el servicio, uname -a registra la información del kernel y exit cierra la shell limpiamente después de que la salida se imprima en tu terminal.
Si la conexión funciona, deberías ver una salida que incluye uid=0(root) y los detalles del kernel de Metasploitable2. Esa salida es suficiente para demostrar un acceso exitoso a la shell durante la fase de post-explotación.
En una evaluación real, documentarías este servicio expuesto como un hallazgo crítico, ya que otorga acceso privilegiado inmediato sin necesidad de ninguna cadena de explotación adicional.
Resumen
En este laboratorio, aprendimos sobre las pruebas de penetración en aplicaciones web y obtuvimos experiencia práctica en la identificación y explotación de vulnerabilidades en una aplicación web vulnerable alojada en una máquina objetivo. Cubrimos el reconocimiento, la enumeración de aplicaciones web, las pruebas de inyección SQL con sqlmap y la validación básica de post-explotación.
El laboratorio proporcionó un entorno controlado para practicar escenarios del mundo real y desarrollar habilidades en la seguridad de aplicaciones web. Siguiendo los pasos, aprendimos a configurar el entorno de laboratorio, realizar el reconocimiento y la recopilación de información, probar un endpoint real de Mutillidae para inyección SQL y confirmar el acceso a la shell a través de un servicio expuesto en el sistema objetivo.
Este laboratorio nos ha dotado de conocimientos prácticos y experiencia en pruebas de penetración de aplicaciones web, lo cual es esencial para asegurar las aplicaciones web e identificar posibles vulnerabilidades antes de que puedan ser explotadas por actores malintencionados.



