
Laboratorio educativo para estudiar CVE-2014-0160 (Heartbleed) y las inconsistencias de encuadre en el manejo del heartbeat de TLS.
Laboratorio educativo para estudiar la vulnerabilidad Heartbleed
(CVE-2014-0160) usando un entorno OpenSSL vulnerable real dentro de Docker.
Este proyecto reproduce un servidor TLS vulnerable usando OpenSSL 1.0.1f e implementa un cliente TLS heartbeat crudo y personalizado para demostrar cómo paquetes heartbeat malformados pueden provocar la divulgación de memoria.
El laboratorio fue creado con fines educativos y de investigación, especialmente para estudiar:
heartbleed-lab/
├── client/
│ ├── attacker.py
│ └── Dockerfile
│
├── vulnerable/
│ ├── Dockerfile
│ └── server/
│
├── fixed/
│ ├── Dockerfile
│ └── server/
│
├── docs/
│ └── diagrams/
│
├── notes/
│
├── docker-compose.yml
├── .gitignore
└── README.md
heartbleed-client
↓
Docker internal network
↓
vulnerable-heartbleed
Donde:
heartbleed-client envía registros TLS crudosvulnerable-heartbleed ejecuta OpenSSL 1.0.1fEl servidor vulnerable usa:
openssl s_serverEl entorno está configurado intencionalmente para reproducir el comportamiento original de Heartbleed.
La implementación del cliente:
La implementación actual reproduce el comportamiento original de Heartbleed enviando un paquete heartbeat malformado donde:
payload_length > real payload size
Ejemplo:
Declared payload length: 0x4000
Real payload: 1 byte ("A")
El servidor vulnerable confía incorrectamente en la longitud declarada y responde con contenido de memoria más allá de los límites reales del payload.
sudo COMPOSE_HTTP_TIMEOUT=300 docker-compose up --build
sudo docker exec -it heartbleed-client bash
python attacker.py
[+] Sending malformed heartbeat
[+] Got TLS record: type=24 version=(3, 2) length=16384
[!!!] Heartbeat response received
Esto indica que el servidor vulnerable devolvió contenido de memoria más allá del payload heartbeat legítimo.
Este proyecto explora la relación entre:
Uno de los principales intereses de investigación de este laboratorio es comparar:
HTTP Request Smuggling
vs
TLS Heartbeat Parsing Failures
desde la perspectiva de:
Los próximos pasos planificados incluyen:
Este repositorio existe únicamente para: