Las aplicaciones web terminan cadenas en null-byte

7

Acabo de realizar algunas pruebas de penetración en un sitio y he notado (y me he dado cuenta antes, pero ahora parece ser un buen punto para mencionarlo) que poner un byte nulo en la cadena de búsqueda termina la cadena allí.

Eso está bien para los lenguajes de nivel inferior como C, sé cómo funciona, pero ¿por qué se aplica esto a las aplicaciones web? He visto que esto sucede en las páginas PHP y ASPX.

¿Se trata de una vulnerabilidad, una característica prevista del idioma o simplemente un error con los idiomas?

    
pregunta DarkMantis 23.09.2013 - 18:21
fuente

1 respuesta

10

En realidad, las cadenas PHP pueden contener bytes nulos; lo mismo puede hacer una cadena .NET (por lo tanto ASP.NET) A nivel de PHP, este byte no es nada especial; El carácter U + 0000 es solo otro punto de código Unicode. El problema comienza cuando la cadena se pasa a otro sistema, para el cual el byte nulo es un terminador de cadena. En particular para los accesos a archivos: si el código PHP intenta abrir el archivo foo.txtfoo.txt.php (donde %code% representa un byte nulo), el sistema operativo solo verá una solicitud para %code% , ignorando el resto de la cadena.

Esto está documentado. También en otros idiomas.

En su caso, se debe asumir que los bytes recibidos como "cadena de búsqueda" se envían sin modificar a un sistema de búsqueda subyacente para el cual el byte nulo tiene el significado especial de terminar la cadena. Aunque esto no es una vulnerabilidad por derecho propio, es indicativo de que el sitio web no filtra los caracteres de entrada y eso puede causar problemas.

    
respondido por el Tom Leek 23.09.2013 - 19:46
fuente

Lea otras preguntas en las etiquetas