domingo, 6 de noviembre de 2011

Poison Null Byte

Los caracteres nulos, o Null Bytes, son caracteres especializados en la señalización del final de una cadena, es decir, indican el final de una cadena. De esta forma, los caracteres que vengan detrás del null byte serán ignorados. Esto va a adquirir mucha importancia a la hora de bypassear ciertas funciones o filtros.

La representación de estos caracteres nulos cambia en cada lenguaje, pero básicamente siempre están compuestos por 0s. Por ejemplo:

PERL => \0
C++ => \x00
URLENCODE =>

Estos son solo unos pocos ejemplos. Bien, entonces si tenemos una string (~cadena de texto) con el contenido "Hola Soy Vengador de las Sombras", en realidad eso equivaldría a "Hola Soy".

Ahora que ya hemos comprendido el cómo funciona la vulnerabilidad, pasemos a la parte práctica. Imaginémonos que tenemos una aplicación web en PERL, y que un cacho del código fuente es así:


###############Trozo de Código#########################
# $opcion es introducido por método get desde la URL

$archivo = "$opcion.html";
open(PAGINA,"<$archivo"); @source = ;
foreach $linea (@source){
print $linea;
}
####################Mas codigo fuente ####################


Si yo por ejemplo pusiera PUTA, el script trataría de abrir el archivo PUTA.html. Ahora imaginémonos que tiene en el mismo directorio (si lo tuviera en otro también se podría hacer, solamente tendríamos que añadir ../ para ir subiendo directorios) un archivo llamado Index.php. Si nosotros seteamos $opcion con la cadena index.php, el script trataría de abrir index.php.html, que no existe y por tanto daría error.

Pero si lo que hacemos es colocar un null byte () en la petición GET, podremos lograr que el script ignore la última parte (.html) abriendo index.php y permitiéndonos ver su código fuente (un Source Code Disclosure). Entonces la petición debería de quedar algo así: ?opcion=index.php

COmo pueden ver, esta técnica es aplicable (siempre y cuando sea vulnerable a esta técnica) tanto a SQL injections, como a LFIs, Transversal Paths, etc... es sólo usar la imaginación.

Fuente 0verl0ad.blogspot.com

No hay comentarios:

Publicar un comentario