Splitting risposta HTTP

1

Si tratta di un attacco di divisione risposta HTTP? Di seguito è riportato un codice che viene inserito in un browser Web dopo aver cancellato l'URL sul sito Web

javascript: var xhr = new XMLHttpRequest(); xhr.open( "GET" , "google.com", false);
xhr.send(); document.write(xhr.getAllResponseHeaders());

e l'out di questo codice sarà simile a questo

Date: Fri, 18 Jan 2013 10:40:10 GMT Content-Encoding: gzip Transfer-Encoding: chunked 
Connection: close Server: Apache/2.2.3 (Red Hat) Vary: Cookie,Accept-Language,
Accept-EncodingContent-Language: en-us Content-Type: text/html; charset=utf-8

Se usi più AJAX e JavaScript e imposta l'intestazione

setRequestHeader(header,value)

questo è un rischio per la sicurezza di tutti i browser su ogni applicazione web?

    
posta noob1992 18.01.2013 - 11:44
fonte

2 risposte

2

Gli attacchi di divisione della risposta HTTP funzionano quando i dati dell'utente (incluse le nuove righe) possono essere iniettati nelle intestazioni HTTP.

Ad esempio, prendiamo questa risposta:

 HTTP/1.1 200 OK
 Date: Mon, 23 May 2005 22:38:34 GMT
 Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
 Last-Modified: Wed, 09 Jan 2013 23:11:55 GMT
 Accept-Ranges:  none
 Content-Length: 1234
 Connection: close
 Content-Type: text/html; charset=UTF-8
 Cookie: test=123&username=Polynomial

 <html>
 ...

Ora supponiamo di poter cambiare arbitrariamente il mio nome utente e includere CRLF (newlines) nel campo. Potrei quindi inserire il mio contenuto nella pagina.

Ad esempio, potrei impostare il mio nome utente su Polynomial\r\n\r\n<script>alert(document.cookie)</script> , che comporterebbe la seguente risposta HTTP:

 HTTP/1.1 200 OK
 Date: Mon, 23 May 2005 22:38:34 GMT
 Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
 Last-Modified: Wed, 09 Jan 2013 23:11:55 GMT
 Accept-Ranges:  none
 Content-Length: 1234
 Connection: close
 Content-Type: text/html; charset=UTF-8
 Cookie: test=123&username=Polynomial

 <script>alert(document.cookie)</script>
 <html>
 ...

Come puoi vedere, il JavaScript è stato iniettato nella pagina. Questa è una forma di iniezione XSS / DOM tramite l'attacco di divisione.

L'inclusione dei dati utente in una richiesta non è altrettanto grave, poiché il server dovrebbe trattare le richieste degli utenti come non attendibili. Pertanto, le richieste AJAX non dovrebbero essere un problema. Questo diventa ancora meno un problema quando si considera il fatto che la maggior parte dei browser principali ha disabilitato o limitato il gestore javascript: nella barra degli URL, al fine di limitare il potenziale di attacchi.

    
risposta data 18.01.2013 - 13:42
fonte
0

La scrittura manuale di JavaScript nella barra degli indirizzi del browser utilizzando il gestore del protocollo javascript: eseguirà tale codice JavaScript nel contesto del sito Web caricato nella scheda corrente.

Non esiste alcuna funzionalità che consenta a un utente malintenzionato di inserire automaticamente tale JavaScript nella barra degli indirizzi ed eseguirlo. Ci sono stati worm che chiedono all'utente di copiare JavaScript dannoso e incollarlo nella barra degli indirizzi.

    
risposta data 18.01.2013 - 12:31
fonte

Leggi altre domande sui tag