
Ambiente di laboratorio basato su Docker per sfruttare CVE-2014-0160 (Heartbleed) e sottrarre memoria dai server web nginx, inclusi script di payload e regole di rilevamento di Snort IDS.
Questo repository si concentra sulla creazione di un container per creare un ambiente facilmente sfruttabile di nginx utilizzando la tecnica Heartbleed, concentrandosi su:

Il problema CVE-2014-0160 si verifica quando la libreria OpenSSL fornisce a TLS la funzionalità heartbeat con una dimensione del buffer di 64kb, causando un eccesso che provoca la fuga di informazioni sensibili dalla memoria del server.
La webapp sta elaborando messaggi sensibili che vengono memorizzati nella cache di nginx in memoria.
Sfruttiamo controllando se l'ambiente supporta TLS heartbeat.
openssl s_client -connect : -tlsdebug
Nota: le versioni moderne di OpenSSL potrebbero non supportare più il protocollo TLS heartbeat; si prega di utilizzare una versione che lo supporti.
Heartbleed è un errore di lettura fuori dai limiti (out-of-bounds read) di natura casuale. Il server restituirà 64KB di memoria adiacente.
Intestazione di un heartbeat (RFC6520) 18 03 02 00
Utilizzare docker build per creare il laboratorio heartbleed
docker build -t heartbleed-lab .
docker run heartbleed-lab -p port:8443
La porta predefinita delle webapp servite è 8443
Utilizzare il payload heartbleed.py per testare Possiamo osservare che il payload restituisce il risultato sotto forma di hexdump
Nell'esempio di dump possiamo vedere la richiesta appena inviata e le celle di memoria principalmente 0x00; poiché il payload è casuale, dobbiamo eseguirlo più volte per poter leakare il risultato desiderato.
Possiamo eseguire memory.py per inviare una richiesta a nginx e memorizzarla in memoria, e poi ottenere il risultato leakato come possiamo vedere in result.txt.
Poiché sappiamo che l'attaccante utilizzerà una richiesta heartbeat per leakare il messaggio,
alert tcp any any -> any 443 (msg:"Heartbeat request"; content:"|18 03 02 00|"; rawbytes;sid:100000)
Utilizzare Snort IDS per rilevare l'intrusione.