XSS: Content-type: application / json

4

Informazioni di base
- L'applicazione risponde alla richiesta di un determinato URL con content-type: application/json

  • La risposta JSON contiene un parametro dalla richiesta
  • Scambia la citazione con una barra
  • Non esegue una valutazione per risposta
  • Risponde alle richieste che non hanno X-Requested-With: XMLHttpRequest (ad esempio se incolli direttamente l'URL con i parametri nella barra degli indirizzi)

Domanda:

C'è un modo per fare un XSS di successo sull'applicazione?

Non esitare a modificare la domanda se non è chiara

    
posta Sachin Kumar 16.04.2012 - 15:59
fonte

3 risposte

4

XSS basato su Dom è ancora possibile. In questo caso il tuo JavaScript potrebbe scrivere un output non pubblicizzato sulla pagina.

Ci sono altri problemi di sicurezza con questo design.

Mi assicurerei che la tua API non risponda alle richieste prive dell'intestazione X-Requested-With: XMLHttpRequest . Questo perché devi ancora indirizzare json data theft così come CSRF. Va notato che in entrambi i furti di dati json e csrf la richiesta non viene effettuata con un XHR, quindi il controllo di X-Requested-With: XMLHttpRequest sarebbe una difesa valida. Il controllo del referratore HTTP può anche essere usato per mitigare entrambi questi attacchi.

Se hai bisogno dell'autenticazione per accedere a tutto o parte di questa API JSON, allora devi utilizzare HTTPS, altrimenti ti verrà violato owasp a9

    
risposta data 16.04.2012 - 17:28
fonte
3

Se posso fare alcune ipotesi (vedi sotto), questo sembra perfetto per i browser moderni. Non conosco alcuna vulnerabilità XSS.

Ipotesi:

  1. I dati non attendibili (dal parametro URL) vengono inseriti solo in un contesto di valori JSON quotato, mai da nessun'altra parte. Non è inserito come valore non quotato. Non è inserito in una chiave.

  2. Il server non esegue effetti collaterali o altre azioni quando si richiedono i dati JSON. (Ciò significa che non devi preoccuparti degli attacchi CSRF.)

  3. Non ci sono dati riservati ovunque in questa struttura dati JSON. (Non rilevante per XSS, ma rilevante per il furto di dati JSON, come spiega @Rook.)

  4. L'applicazione non ha alcuna vulnerabilità XSS lato client (nota come XSS basata su DOM).

risposta data 16.04.2012 - 21:37
fonte
2

Una cosa a cui pensare è in IE il tipo di contenuto può e verrà ignorato se il browser annusa le prime righe di testo e lo determina come html. Ci imbattiamo in questo sempre. Quindi, se per esempio hai qualche json ma in quella risposta posso inserire i tag HTML. Il browser vedrà questo e dirà oh vedo che penso che questo dovrebbe essere HTML. A quel punto il carico utile verrebbe eseguito. Anche se il tipo di contenuto non era text / html.

    
risposta data 21.04.2012 - 19:56
fonte

Leggi altre domande sui tag