Ver Mensaje Individual
  #21 (permalink)  
Antiguo 18/12/2011, 01:23
Avatar de Triby
Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Ataques LFI con imágenes

Cita:
Iniciado por jorgelpadronb
Hola Triby, gracias por tu interés en el tema. Realmente el include no se hacen a imágenes, pero es manipulados por el atacante, aprovechando un bug de PHP que haya dejado el programador. La cosa funciona así:

1) El atacante sube una imagen a través de algún formulario que tenga el sitio para este propósito. Por ejemplo MiFoto.jpg, esta ya viene con sorpresa jeje.

2) Una vez subida la imagen, el atacante trata de detectar una debilidad de este tipo:

$ruta = $_GET['ruta'];
Include($ruta);

3) Seguidamente, desde afuera, llama al sitio de esta forma:

Http://misitio.com?ruta=MiFoto.jpg
A ver, por favor, no confundamos, no se trata de un bug de PHP, sino de una mala programación por no validar.

Como dije desde el principio, no confies en los datos introducidos por el usuario y, en eso se incluye el validar TODO lo que recibas en $_GET, $_POST, $_COOKIE y $_SESSION, ya que son manipulables fácilmente.

Y modifico la pregunta que hice originalmente: Quién, en su sano juicio, hace un include de un archivo sin verificar primero de qué se trata?

Anteriormente era "muy cómodo" hacer ese tipo de sitios donde incluías directamente el archivo especificado en $_GET, pero, la solución es tan sencilla como:

Código PHP:
Ver original
  1. $rutas = array('index.php', 'fotos.php', 'contacto.php', 'etc.php');
  2. $ruta = $_GET['ruta']; // Falta una pequeña validación, pero sólo es una muestra
  3. if( ! in_array($ruta, $rutas)) {
  4.     die('Quién, en su sano juicio, hace include de archivos sin validar?');
  5. }

Y repito, claro que es posible, pero no es tan grave... si validas correctamente!
__________________
- León, Guanajuato
- GV-Foto