Spiega il codice Python Heartbleed [chiuso]

1

primo post qui, quindi sii gentile, per favore!

Comprendo il concetto di vulnerabilità Heartbleed e ho una conoscenza generale di Python. Sto faticando a capire il codice Python di PoC, così è stato dopo un po 'di dissezione del codice:)

In particolare le due sezioni in cui definisce il messaggio "ciao" e "hb"? Ho visto i messaggi attraversare il filo in Wireshark e posso vedere chiaramente l'esagono che va avanti e indietro. Quindi confrontando questo con una normale connessione SSL è abbastanza simile.

Quindi immagino che il contenuto di tale hex stia configurando la connessione SSL e la richiesta heartbeat? Ma qualcuno può spiegare l'esagono coinvolto o, più specificamente, da che cosa deriva?

Ho visto l'RFC che definisce l'estensione heartbleed, ma per qualche motivo non posso tradurlo in come questo hex è stato derivato. Sono stupido o mi manca qualcosa?!

    
posta TimC 15.04.2014 - 17:04
fonte

1 risposta

2

Suppongo che tu stia facendo riferimento a ssltest.py che circola in natura. Probabilmente il Client Hello è stato appena copiato da un'altra acquisizione di pacchetti. Fa parte dell'offerta SSL handshake :

  Client                                               Server

  ClientHello                  -------->
                                                  ServerHello
                                                 Certificate*
                                           ServerKeyExchange*
                                          CertificateRequest*
                               <--------      ServerHelloDone
  Certificate*
  ClientKeyExchange
  CertificateVerify*
  [ChangeCipherSpec]
  Finished                     -------->
                                           [ChangeCipherSpec]
                               <--------             Finished
  Application Data             <------->     Application Data

OpenSSL consente di ricevere heartbeat durante l'handshake. Poiché il client non ha ancora inviato un messaggio ChangeCipherSpec, la richiesta Heartbeat non è crittografata. Per una spiegazione della richiesta di heartbeat e del formato della risposta, vedi questa risposta . Mostra anche perché l'exploit sta accadendo, la lunghezza del payload è troppo grande e il payload + padding è omesso.

Il formato dei pacchetti SSL è descritto come TLSPlaintext in Appendice A di RFC 5246 (TLS 1.2) . Il "frammento" sarebbe il messaggio Handshake ClientHello e la richiesta Heartbeat a partire dal tipo e dalla lunghezza del payload.

Penso che i commenti in mia implementazione del server Poic Heartbleed aiuteranno lo capisci meglio.

    
risposta data 15.04.2014 - 18:12
fonte

Leggi altre domande sui tag