Esto podría ser evidencia de un intento de Poison NULL Byte Attack . PHP y Perl no usan cadenas terminadas en NULL , pero la mayoría de los sistemas subyacentes (cualquier cosa basada en C) sí lo hacen.
Esto puede llevar a una cierta clase de ataque donde el atacante construye una cadena que el programador pretende que sea imposible. Por ejemplo, si estaba usando una biblioteca de C para incluir contenido de archivos locales en una página web, en su PHP podría hacer algo como:
grabLocalFile($_GET['file_name'] . ".php");
Al agregar manualmente ".php"
, puede parecer que se ofrece cierta seguridad, ya que solo se pueden incluir los nombres de archivo que terminan con .php
. Sin embargo, si un atacante puede enviar una solicitud como:
example.com/index.php?file_name=/etc/passwdgrabLocalFile("/etc/passwdstr_replace(chr(0), '', $string);
.php");
El byte nulo .php
será tratado como parte de la cadena por php, que termina llamando;
grabLocalFile($_GET['file_name'] . ".php");
Cuando esta cadena llegue al sistema subyacente, el byte NULO se tratará como un terminador de cadena y se ignorará el /etc/passwd
. Ahora el atacante ha incluido %code% en la página web que está viendo, a pesar del intento del desarrollador de imponer la inclusión solo de los archivos que terminan en ".php"
Para mitigar este tipo de ataques, puedes eliminar el byte NULL al hacer algo como esto
example.com/index.php?file_name=/etc/passwdgrabLocalFile("/etc/passwdstr_replace(chr(0), '', $string);
.php");
En cualquier caso, parece que suhosin está configurado correctamente para defenderse contra esta clase de ataque.