Domanda

Al momento sto cercando di passare la conformità PCI per uno dei siti del mio cliente, ma l'azienda di prova sono segnalazione su una vulnerabilità che non capisco!

L'(sito rimosso) dettagli da parte della società di prova sono i seguenti:

  

Il problema qui è un cross-site   vulnerabilità di scripting che è   comunemente associati con l'e-commerce   applicazioni. Uno dei test   aggiunto uno script innocua in un GET   Richiesta sulla fine del tuo sito   url. E 'contrassegnato come cross-site   vulnerabilità di scripting perché questo   stesso copione che è stato inserito dal   utente (il nostro scanner) è stato restituito dal   Server unsanitized nell'intestazione. Nel   questo caso, lo script è stato restituito in   l'intestazione così il nostro scanner contrassegnato la   vulnerabilità.

     

Ecco il test mi sono imbattuto dal mio   terminale di duplicare questo:

     

GET   /? OsCsid =% 22% 3E% 3Ciframe% 20src = foo% 3E% 3C / iframe% 3E   HTTP / 1.0 Host: (rimosso)

HTTP/1.1 302 Found
Connection: close
Date: Tue, 11 Jan 2011 23:33:19 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Location: http://www.(removed).co.uk/index.aspx?osCsid="><iframe src=foo></iframe>
Set-Cookie: ASP.NET_SessionId=bc3wq445qgovuk45ox5qdh55; path=/; HttpOnly
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 203

<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="http://www.(removed).co.uk/index.aspx?osCsid=&quot;>&lt;iframe src=foo>&lt;/iframe>">here</a>.</h2>
</body></html>
  

La soluzione a questo problema è quello di   input dell'utente sanitize su questi tipi di   richieste, facendo in modo che i personaggi   potrebbe innescare script eseguibili sono   non restituiti sulla intestazione o pagina.

In primo luogo, non riesco a ottenere il risultato che il tester ha fatto, è sempre e solo restituisce un 200 colpo di testa che non include la posizione, né sarà restituire la pagina oggetto spostato. In secondo luogo, io non sono sicuro di come (su IIS 6) per fermarlo tornare un colpo di testa con la stringa di query in esso! Infine, perché il codice in materia di testa, sicuramente i browser sarebbe in realtà non eseguire codice dal http intestazione?

È stato utile?

Soluzione 2

Si è scoperto che ho un Response.redirect per tutte le pagine a cui si accede da https, che non hanno bisogno di essere sicuri e questo stava tornando la posizione come parte del reindirizzamento. La modifica di questa a:

Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", Request.Url.AbsoluteUri.Replace("https:", "http:"));
Response.End();

Risolto il problema

Altri suggerimenti

Richiesta: GET /?osCsid=%22%3E%3Ciframe%20src=foo%3E%3C/iframe%3E HTTP/1.0 Host:(removed)

Il <iframe src=foo></iframe> è il problema qui.

testo di risposta:

 <html><head><title>Object moved</title></head><body>
 <h2>Object moved to <a href="http://www.(removed).co.uk/index.aspx?osCsid=&quot;>&lt;iframe src=foo>&lt;/iframe>">here</a>.</h2>
 </body></html>

Il link di risposta è:

  http://www.(removed).co.uk/index.aspx?osCsid=&quot;>&lt;iframe src=foo>&lt;/iframe>

che contiene il contenuto dalla stringa richiesta.

In sostanza, qualcuno può mandare qualcun altro un link in cui il vostro osCsid contiene il testo che permette la pagina per essere reso in un modo diverso. È necessario fare in modo che osCsid igienizza ingresso o filtri contro le cose che potrebbero essere così. Per esempio, ho potuto fornire una stringa che mi permette di caricare in qualsiasi JavaScript che voglio, o fare il rendering della pagina completamente diversa.


Come nota a margine, si cerca di trasmettere il browser per la pagina inesistente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top