Ok esto no lo havia probado, pero me quedo con la primera técnica.
Tengo otra duda relacionada con el envió de variables a través del formulario. Esta vez con POST, teniendo los siguientes ficheros:
1:
Código:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>XSS</title>
</head>
<body onload="xss();">
<form method="post" name="f" action="http://localhost/v1.php">
<input name="username" value="<script>alert('XSS')</script>">
<input type="submit" class="button" name="s">
</form>
<script>
function xss() {
document.f.s.click();
}
</script>
</body>
</html>
2:
Código:
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>XSS</title>
</head>
<body>
<form id="form" name="form" method="post" action=""http://localhost/v2.php">
<label>Usuario:
<input name="username" type="text" id="username" size="30" />
</label>
<br />
<label>
Clave:
<input type="password" name="password" id="password" />
</label>
<input type="submit" name="ok" id="ok" value="OK" />
</form>
</body>
</html>
3:
Código PHP:
Ver original<?php
foreach($_POST as $v) echo $v;
?>
Como se puede observar tenemos que el primer fichero cargara al segundo y este debería guardar el valor de la variable "username" que se envía desde el primer fichero para cuando se hace el submit operar con ese valor.
Lo he probado todo en local, pero no hubo suerte y no se produce el alert en el tercer fichero.
Espero que esto se entienda bien, ya que pienso que es bueno conocer estos agujeros para poner remedio.
S2