
Prueba de concepto para CVE-2021-40346, que demuestra el contrabando de solicitudes HTTP en HAProxy mediante desbordamiento de enteros, con un entorno basado en Docker para evadir los controles de acceso.
El desbordamiento de enteros en la representación interna de la cabecera de solicitud permite el contrabando de solicitudes HTTP (HTTP request smuggling). Este repositorio presenta un PoC construido con docker-compose utilizando dos imágenes de Docker: una con una versión vulnerable de HaProxy (en este caso 2.2.16) y otra con un servidor web Flask que utiliza Gunicorn como WSGI. Al explotar la vulnerabilidad, podemos acceder a la página /admin, cuyas solicitudes son bloqueadas por HaProxy mediante una regla definida por el usuario.
Ejecuta los siguientes comandos en la terminal para levantar el contenedor Docker de HaProxy y la imagen del servidor Flask:
docker-compose up
Envía el payload a HaProxy:
cat payload | nc localhost 8000
Para detenerlo, ejecuta:
docker-compose down