VULNERABILIDADES DE APLICACIONES WEB: CÓMO DESHABILITAR "FUNCIONES PELIGROSAS" DE PHP

18.01.2018 13:19
 
En nuestro último artículo sobre inclusión local de archivos dijimos que además de las que ya habíamos mencionado había otras funciones vulnerables a este tipo de ataque. Veamos el siguiente archivo PHP:
 
<?php
highlight_file($_GET['file']);
?>
 
La función highlight_file no es de las más usuales. Imprime o devuelve una versión con la sintaxis remarcada del código contenido en el fichero dado por filename usando los colores definidos en el remarcador de sintaxis interno de PHP. (de php.net/manual/es/function.highlight-file.php)
 
Si se permite que el usuario ingrese como input cualquier nombre de archivo, estará en capacidad de llevar a cabo un ataque de inclusión local de archivos.
 
Es necesario preguntarse si realmente es necesario incluir esta función en una aplicación. Nos parece de mucha más utilidad para el desarrollador que para un usuario común, por lo que a nuestro entender no debería llegar al servidor comercial. Si es inevitable emplearla entonces debería ser usada así: 
 
<?php
highlight_file('archivo.php');
?>
 
El administrador del servidor web cuenta con la posibilidad de deshabilitar y ésta y otras funciones en el archivo php.ini, impidiendo su ejecución, pero deberá tener presente que el archivo que contenga la función deshabilitada no se ejecutará o su ejecución se detendrá y se mostrará un mensaje de error con una advertencia sobre la razón de la falta de ejecución.
 
Para deshabilitar funciones se abre php.ini y en 
 
disable_functions=
 
se agrega las funciones que se desea deshabilitar:
 
disable_functions=highlight_file,system
 
Como se ve, esta medida también es útil para prevenir la inyección de comandos.
 
Más que de funciones peligrosas de PHP habría que hablar del uso peligroso de algunas funciones.
 
Artículos relacionados: