Come sfruttare un output p che filtra le parentesi ma nient'altro

1

(Spiegando in generale che non divulgare accidentalmente informazioni sul sito Web) ho trovato un sito Web che ha un'area per l'immissione di testo e che il testo viene inviato tramite una richiesta PUT e l'output in < p > tag.

Per quanto ne so, la richiesta filtra solo le parentesi angolari e nessun altro carattere viene filtrato. Inoltre, il < p > i tag analizzano unicode, ma non eseguirlo.

C'è un modo per sfruttarlo? XSS non sembra essere un'opzione con il filtro parentesi, ma sembra che, poiché non è filtrato, ci dovrebbe essere un modo per sfruttarlo.

Se ti stai chiedendo, la richiesta PUT è protetta da token, quindi non posso ignorare il filtro con esso.

    
posta Jack 20.02.2017 - 16:21
fonte

1 risposta

2

Senza precondizioni speciali (codec insoliti, ecc.), <p>$XSS</p> è vulnerabile a XSS solo se sono consentite le parentesi angolari di apertura.

Senza creare un tag, non è possibile inserire contenuti significativi per il parser HTML del browser. Tutto il resto, incluso l'unicode di fantasia, viene semplicemente considerato come semplice dato. Tuttavia, è possibile formulare ipotesi su come il server affronti i dati per ottenere ancora XSS. Ad esempio, forse il server converte (FULLWIDTH LESS-THAN SIGN U+FF1C ) in una vera parentesi angolare sulla strada, o forse &lt; viene riconvertito in < per qualche strana ragione - L'ho incontrato in natura, ma non vi è alcuna indicazione che questi trucchi potrebbero funzionare nel tuo caso.

XSS doesn't seem to be an option with the bracket filter, but it seems like, since it is unfiltered, there should be some way to exploit it.

Quali altre vulnerabilità del lato client ti aspetti di incontrare qui? Oltre a XSS, mantenere i caratteri Unicode è spesso richiesto per la localizzazione e non causa alcun evidente problema di sicurezza quando viene stampato in un corpo HTML.

Detto questo, consentire l'Unicode arbitrario può essere abbastanza fastidioso (PoC: ก็็็็็็็็็็็็็็็็็็็็ &) che è il motivo per cui molti siti Web sociali (ad es. Facebook, Twitter) limitano i caratteri consentiti. Ecco come viene visualizzato in Firefox:

    
risposta data 20.02.2017 - 18:13
fonte

Leggi altre domande sui tag