Sto cercando di imparare i test di penetrazione e ho scaricato un'applicazione vulnerabile chiamata "Bodgeit Store". Ho finito quasi tutte le sfide tranne una che è l'esecuzione di un attacco Cross-Site Scripting. Ho controllato il codice sorgente dell'app e ho trovato il seguente codice Java:
if (request.getMethod().equals("POST") && comments != null)
{
anticsrf = request.getParameter("anticsrf");
if (anticsrf != null && anticsrf.equals(request.getSession().getAttribute("anticsrf")))
{
// Strip script tags, because that will make everything alright...
comments = comments.replace("<script>", "");
comments = comments.replace("</script>", "");
// And double quotes, just to make sure
comments = comments.replace("\"", "");
.................
}
}
La sfida dice:
"Display a popup using:
<script>alert("XSS")</script>
"
ma guardando la fonte, scopriamo che i tag <script>
e </script>
sono sostituiti da caratteri nulli. Inoltre, non posso effettuare una richiesta GET perché il codice verifica anche se la richiesta è o meno una richiesta POST.
Ho provato ed è riuscito ad eseguire una finestra di avviso usando altri metodi come l'uso di un file .js esterno e così, ma voglio davvero scoprire come si può completare questa sfida. Per favore, dammi alcuni suggerimenti su come risolvere il problema.