XSS: il payload del codice viene visualizzato sullo schermo sotto forma di stringa

0

Sono nuovo alla sicurezza e sto cercando di migliorare. A volte, quando provo a trovare vulnerabilità XSS su un sito web, il mio carico viene visualizzato sullo schermo ma non accade nulla. L'intero carico utile viene visualizzato come una stringa. Cosa significa?

Ho visto che appena sotto il modulo spesso c'è un campo di input nascosto con qualche token. Il payload viene visualizzato solo perché viene prima crittografato su quel token e non inviato? O ho sbagliato completamente?

Questo è un esempio, perché i tag italic sono considerati come una stringa e non come veri tag HTML?

    
posta Ayoub Rossi 22.11.2018 - 12:07
fonte

3 risposte

0

Senza uno screenshot dei risultati è impossibile dirlo con certezza, ma suona con una sicurezza del 99,999% che la destinazione non sia vulnerabile a XSS. Congratulazioni allo sviluppatore!

Se stai cercando un modo per praticare l'esecuzione di XSS, potresti prendere in considerazione la creazione di una tua applicazione vulnerabile (privata). Un campo di input con input senza escape dovrebbe fare bene il trucco. Ci sono anche una serie di siti e giochi che sono intenzionalmente vulnerabili come strumento di apprendimento, per permettere alle persone di esercitarsi nell'esecuzione di XSS.

Infine, riguardo a questo:

Does the payload just get displayed because it's first encrypted to that token and not sent?

Penso che tu stia davvero pensando troppo a questo. Non credo che la criptazione abbia un ruolo in questo caso - piuttosto, il punto critico è se il tuo input è o meno sfuggito. (Sicuramente cerca di sfuggire se non hai familiarità con esso.) L'input senza escape è sempre una responsabilità, sia che venga ricevuto come testo in chiaro che non è mai stato crittografato, né come testo cifrato decrittografato. L'applicazione lo vede allo stesso modo.

Inoltre, nessuno qui in Internet Land è in grado di rispondere definitivamente a questa domanda, dal momento che non conosciamo l'applicazione o la sua architettura. Bella domanda, e penso che tu sia sulla strada giusta: hai ragione che qualcosa viene trasformato da JavaScript in modo che non possa essere eseguito. L'unica differenza è che la trasformazione che rende l'input sicuro e non eseguibile è l'escape piuttosto che la crittografia *.

* Sebbene sia importante notare che sì, anche rappresentando JavaScript senza caratteri escape, il testo cifrato non può essere eseguito poiché rappresenta solo JavaScript e non è esso stesso JavaScript senza le chiavi di decrittazione necessarie.

    
risposta data 26.11.2018 - 18:10
fonte
0

Gli Input sono in escape.

In PHP c'è una funzione per questo:

htmlentities($str, ENT_QUOTES);

fonte: link

    
risposta data 23.11.2018 - 08:05
fonte
0

Il tuo contributo è fuggito . Se selezioni il tuo payload negli strumenti di sviluppo, fai clic con il tasto destro e scegli "Modifica come HTML", dovresti vedere che il tuo payload è reso come qualcosa sulla falsariga di <i>hello</i> .

    
risposta data 26.11.2018 - 19:16
fonte

Leggi altre domande sui tag