Exposición de código fuente en PHP

RECU-0558 (Recurso Ejemplo)

Descripción

Con este script corriendo en el mismo servidor que el código fuente de la aplicación a ejecutar, un atacante puede ver cualquier fichero que el servidor pueda leer, indicando la ruta y el nombre de fichero.

Por ejemplo, asumiendo que el script se llama file.php y se encuentra alojado en example.org, un fichero en la ruta /path/to/source.php puede ser expuesto.

Ejemplos

<?php

header('Content-Type: text/plain');
readfile($_GET['file']);

?>

 

http://example.org/file.php?file=/path/to/source.php

Desde luego, el atacante debe conocer la localización del código fuente para que este script sea útil, pero scripts más sofisticados pueden permitir al atacante bloquear el sistema.

En un servidor compartido, todo el código fuente es público, por lo que es necesario almacenar los datos sensibles en una base de datos.

Un ejemplo sería el siguiente:

<?php
$db_user = 'myuser';
$db_pass = 'mypass';
$db_host = 'localhost';
$db = mysql_connect($db_host, $db_user, $db_pass);
?>

 Si el camino de este fichero es conocido, algunos usuarios pueden potencialmente acceder a él y obtener las credenciales de la base de datos, accediendo a datos sensibles.

Contenidos relacionados

Pautas
Área: Desarrollo » Seguridad » Codificación y Validación de entrada/salida
Código Título Tipo Carácter
PAUT-0196 Exposición del código fuente Pauta Directriz Recomendada