È possibile eseguire l'iniezione dell'intestazione HTTP se CR / LF sono stati rimossi?

9

Nella risposta HTTP c'è la seguente intestazione con contenuto controllato da un utente malintenzionato:

Content-Disposition:attachment; filename="attacker_controlled.html"

Gli unici personaggi che non possono apparire nel valore controllato dell'attaccante sono [CR] e [LF] (non possono apparire in nessuna combinazione). In tutti i posti in cui ho letto di intestazione HTTP, mi è stato detto di iniettare quei caratteri.

È possibile eseguire l'header header HTTP o qualche altro attacco dannoso senza CRLF?

    
posta Andrei Botalov 13.07.2012 - 19:47
fonte

2 risposte

4

Dipende da cosa intendi per spogliato. (il metodo string.strip() di python rimuove solo le occorrenze dall'inizio e dalla fine, che non interrompe l'iniezione di CRLF.) Se stai sostituendo tutte le occorrenze "\ r \ n", allora sei ancora vulnerabile a HTTP divisione della risposta. Questo perché ogni client e server http che conosco riconosce anche il carattere "\ n" come delimitatore. Anche se in questo caso ci interessa solo i browser.

Il modo migliore per sostituire sempre tutte le occorrenze di newline "\ n" con niente "" e "\ r" con niente "", separatamente per buona misura. Non ho mai visto un impianto del protocollo HTTP che cerca "\ r", quindi per quanto ne so questo ha un impatto sulla sicurezza zero, ma dovresti farlo comunque per buona misura. Se ti preoccupi anche degli attributi HTTP, devi anche rimuovere "", "\" "e"; ", ma dipende anche da dove si trova l'intestazione http della stringa controllata da un utente malintenzionato.

    
risposta data 13.07.2012 - 20:05
fonte
3

Non so in alcun modo di fare l'iniezione dell'intestazione HTTP, nelle condizioni menzionate.

Tuttavia, ci sono altri rischi, come gli attacchi Path Traversal, il download di contenuti attivi o la sovrascrittura di file standard di sistema. Raccomando di leggere RFC 6266, sezione 4.3 e RFC 2183, Sezione 5 , che descrive alcuni dei rischi. (RFC 6266 è quello che definisce l'intestazione Content-Disposition.) Vedi anche questo post del blog per discussione sui rischi XSS, se si consente all'aggressore di controllare sia il nome file che il contenuto del file.

    
risposta data 16.07.2012 - 02:41
fonte