Gli attacchi XSS in stile WebGoat funzionano ancora?

5

Sto seguendo gli esercizi WebGoat per aggiornare la mia conoscenza degli attacchi XSS.

In particolare, sto facendo l'esercizio XSS di Stage 1. Questo esercizio ha una forma che deliberatamente non sanifica l'input. Il video della soluzione mostra l'uso della funzione di avviso JavaScript per inviare un messaggio e il cookie di sessione.

Lo Stage 3 ha uno snippet di codice XSS incorporato, che alla visualizzazione di un profilo mostrerà il contenuto di "document.cookie".

In qualsiasi browser moderno, tutto senza componenti aggiuntivi, non riesco a farlo eseguire. Posso generare messaggi utilizzando l'avviso JavaScript, ma non stampa mai il contenuto di document.cookie

Il tutorial sulla questa pagina per ottenere i cookie mostra che è possibile stampare il contenuto di document.cookie in un messaggio di avviso JavaScript.

Quello che vorrei sapere è il motivo per cui non posso fare lo stesso in un'applicazione web XSS molto semplice e volutamente vulnerabile. C'è qualche rilevamento XSS in tutti i browser moderni che impediscono questo? Ho provato con lui le opzioni per disabilitare la sicurezza Web su IE, Firefox e Chrome e non fa differenza.

modifica:cosechehoprovatosiaperWebGoat5.4cheperWebGoat6.0.1:

  • AccessotramiteFirefoxconunnuovoprofilopredefinitoenessuncomponenteaggiuntivo
  • Chromecon--disable-web-securitye/o-disable-xss-auditorargomenti
  • AccessotramiteMantra
  • Impostazionedell'intestazioneX-XSS-Protectionsu0nellemierichieste.

WebGoatstacercandodiinsegnaresuunattaccoXSSchenonèpiùunaminaccia?

2amodifica:

PerrispostadiMartin,hoprovatoaimpostarel'intestazionemanualmentecomesivedenegliscreenshotquisotto.Homodificatoiltitolodellalezioneinmodochesiaovviocheilviolinistastiaintercettandocorrettamentelapagina.

Il cookie non è impostato come secure3 o httponly, ma si rifiuta di essere letto da qualsiasi browser tramite JavaScript, tramite bookmarklet o Scratchpad. Il cookie è impostato correttamente nel browser ed è visualizzabile nelle finestre di dialogo dei cookie del browser.

Quale proprietà di questo cookie impedisce la lettura?

    
posta Sonny Ordell 27.02.2015 - 12:16
fonte

3 risposte

5

L'impostazione dell'intestazione X-XSS-Protezione: 0 è la soluzione corretta, ma devi aggiungere questa intestazione nella risposta , non nella tua richiesta. Passi:

  • Assicurati di disporre di un cookie effettivo che sia not protetto con il flag solo HTTP. (Ad esempio, puoi modificare il cookie JSessionID)
  • Utilizzare un comando JS corretto per recuperare il cookie (provarlo prima nella console), ad esempio: var a = document.cookie; alert (a) (nota: se si dispone di più cookie, dovrai dividerli, presumo tu abbia solo il cookie JSESSIONID
  • Memorizza il comando nel campo stradale, con tag di script: var a = document.cookie; alert (a) (StackOverflow nasconde i tag dello script, assicurati di aggiungerli)
  • Accendi Fiddler prima di salvare. Intercettiamo la risposta e aggiungiamo l'intestazione X-XSS-Protection: 0 nella risposta (se hai la versione sviluppatore, potresti probabilmente aggiungerla nel sorgente)
  • Intercetta la risposta, modifica le intestazioni di risposta, aggiungi la protezione X-XSS: 0, premi CTRL + S per sicurezza, quindi premi "corri al completamento".
  • Et voilà

Aggiornamento : screenshot per chiarimenti.

  • Fiddler

*:

  • Risultatowebgoat
risposta data 02.03.2015 - 09:02
fonte
4

Corretto, la maggior parte dei browser tradizionali ora include protezioni XSS integrate. Per quanto riguarda possibili soluzioni alternative:

Puoi disabilitare questa funzione in Chrome avviando il browser con l'opzione "disable-xss-auditor". (cioè C:\<PATH>\chrome.exe --args --disable-xss-auditor )

Un'altra opzione è quella di impostare un'intestazione nel server web di hosting per disabilitare tali protezioni (esempio di Apache sotto):

Set di intestazione Protezione X-XSS: 0

Infine, potresti cercare di utilizzare un browser di test delle penne per applicazioni Web come OWASP Mantra.

link

    
risposta data 27.02.2015 - 14:40
fonte
0

Potresti menzionare il payload XSS che hai usato per stampare il contenuto del cookie?
Inoltre, in generale, oltre alle intestazioni X-XSS, se un'applicazione Web ha il flag cookie impostato su solo HTTP, i contenuti del cookie non sono disponibili per gli script lato client come uno snippet JavaScript o il tuo XSS payload, quindi stampando un messaggio di avviso vuoto come lo screenshot che hai postato sopra.

    
risposta data 01.03.2015 - 17:33
fonte

Leggi altre domande sui tag