Benutzer-Werkzeuge

Webseiten-Werkzeuge


examples:heartbleed

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
examples:heartbleed [2014-04-11 18:28] – Polling unnötig berndexamples:heartbleed [2014-04-11 22:00] (aktuell) bernd
Zeile 7: Zeile 7:
 </code> </code>
  
-starten.  Wenn ein länglicher Hexdump kommt, ist das die Heartbleed-Antwort.+starten.  Wenn ein länglicher Hexdump kommt, ist das die Heartbleed-Antwort.  Wenn man viele URLs hat, kann man die entweder per Shell-Script abarbeiten 
 + 
 +<code> 
 +cat <file> | xargs -L 1 gforth heartbleed.fs 
 +</code> 
 + 
 +oder Gforth starten und dann 
 + 
 +<code Forth> 
 +require heartbleed.fs 
 +s" <file>" file-heartbleed 
 +</code> 
 + 
 +Was der Code macht, ist schnell erklärt: Er schickt zuerst ein "Client Hello" an den Server, welcher daraufhin seine Zertifikate zurückschickt. Die werfe ich weg, denn ich will ja gar keine Verbindung aufbauen. Dann schicke ich einen Heartbeat ohne Payload und Padding, aber mit einer sehr langen Payload-Länge. Die erwarte ich dann als Antwort zurück; wenn ich sie bekomme, ist der Heartbleed-Bug vorhanden. Andere Antworten (etwa "Alert"), die TLS als Fehler schicken darf, werden ignoriert.
  
 <code Forth> <code Forth>
Zeile 55: Zeile 68:
     r> close-socket     r> close-socket
     type buggy? @  IF  ." : Heartbleed detected"  ELSE  ." : Everything ok"  THEN  cr ;     type buggy? @  IF  ." : Heartbleed detected"  ELSE  ." : Everything ok"  THEN  cr ;
 +
 +Variable files
 +
 +: file-heartbleed ( addr u -- )
 +    r/w open-file throw files $[]slurp
 +    files [: 443 get-heartbleed ;] $[]map ;
  
 script? [IF] script? [IF]
examples/heartbleed.1397233686.txt.gz · Zuletzt geändert: 2014-04-11 18:28 (Externe Bearbeitung)