elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [Pregunta]: ¿Opiniones sobre la seguridad de esta función?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Pregunta]: ¿Opiniones sobre la seguridad de esta función?  (Leído 2,123 veces)
Leguim


Desconectado Desconectado

Mensajes: 720



Ver Perfil
[Pregunta]: ¿Opiniones sobre la seguridad de esta función?
« en: 28 Agosto 2019, 20:30 pm »

Buenos días tengo esta función que sirve para validar un archivo (se espera que sean imagenes)
de momento esto es lo que tengo.

Código
  1. function Validate_Photo($photo)
  2. {
  3. $result = false;
  4.  
  5. if($photo['type'] == 'image/gif' || $photo['type'] == 'image/jpg' || $photo['type'] == 'image/jpeg')
  6. {
  7. $verify_img = getimagesize($photo['tmp_name']);
  8.  
  9. if($verify_img['mime'] == 'image/gif' || $verify_img['mime'] == 'image/jpg' || $verify_img['mime'] == 'image/jpeg')
  10. {
  11. $result = true;
  12. }
  13. }
  14.  
  15. return $result;
  16. }
  17.  

Me interesa saber sus opiniones y críticas sobre el nivel de seguridad que tiene esta función.

Gracias!


Mod: Temas sobre PHP van al subforo de PHP.


« Última modificación: 9 Septiembre 2019, 20:56 pm por #!drvy » En línea

Siler

Desconectado Desconectado

Mensajes: 2



Ver Perfil WWW
Re: [Pregunta]: ¿Opiniones sobre la seguridad de esta función?
« Respuesta #1 en: 29 Agosto 2019, 00:04 am »

Getimagesize, Mime y Fileinfo son inseguras. Todas se pueden bypassear, engañar o utilizar en inyección de código de alguna manera. Por eso se deben complementar con múltiples configuraciones orientadas a la seguridad.

  • Utiliza un servidor privado únicamente para la subida de imágenes y las posteas en un link privado. Publica el link a una captura y obtenla con OCR o una screenshoot de la imagen desde tu servidor. Evitas DoS, explotaciones de vulnerabilidades en el visualizador de imágenes de tu server y ejecución arbitraria de código.

  • Limita el tamaño al mínimo y máximo posible del archivo.

  • Limita el número máximo de archivos subidos. Imagenes totales. Máximo tamaño en el servidor reservado a imágenes. Por usuario. Por minuto... Y número máximo de subidas simultaneas...
    Con el objetivo de que no gasten todo el bandwidth contratado, saturen la RAM o llenen el espacio de disco. Si solo limitas por usuario, podrían ir creando cuentas durante días para hacer un ataque simultaneo.

  • Cámbiale el nombre al archivo para que no te inyecten nada en el nombre de archivo, hagan path transversal o problemas de enconding. Obten y pon la extensión en el nombre. En el caso de que suban un malware.png.php al renombrarlo a imagen4.png no se ejecuta el PHP. Esto se aplica a muchas extensiones.

  • Guarda la imagen en un directorio sin permisos (chmod) con move_uploaded_file. Ten cuidado con no mover el archivo a un lugar donde se haga público y el atacante pueda acceder o mandar el link a otro usuario. Inhabilita la ejecución de PHP, HTML, executables... creando un archivo .httaccess. Haz una white list y ubica el httaccess en el directorio padre. Nunca en el mismo directorio que alojas las imágenes. Deshabilita sobrescritura.

  • Utiliza readfile() para acceder a las imágenes en un directorio externo.


  • Pon el contenido en un subdominio y hazlo accesible solo desde ahí.

  • Utiliza is_uploaded_file($imagen) para no hacer comprobaciones inecesarias y asegurarte que la subida se hace por POST y que no es una imagen local. Podrían subir una imagen privada de tu servidor u otros clientes para hacerla pública y así tener acceso a ella. Ojo, que se puede mandar peticiones crafteadas para que el servidor interprete las extensiones de imágenes como si fuesen scripts en PHP.


En línea

Diseño de malware, information gathering y engagement.
Leguim


Desconectado Desconectado

Mensajes: 720



Ver Perfil
Re: [Pregunta]: ¿Opiniones sobre la seguridad de esta función?
« Respuesta #2 en: 30 Agosto 2019, 21:31 pm »

Hola, gracias por responder ya puse en practica algunas cosas de las cuales comentaste!

¿Qué quiere decir un servidor privado?
El link de la capturas, ocr, etc
En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.606


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: [Pregunta]: ¿Opiniones sobre la seguridad de esta función?
« Respuesta #3 en: 30 Agosto 2019, 21:38 pm »

Primero que nada habría que ver de que manera estás obteniendo esa información para ser procesada, la mayoría de las vulnerabilidades no están en la comparación de tipos sino en como se establece el valor del tipo.

Saludos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
hola , pregunta sobre funcion en js
Desarrollo Web
ninto33 1 2,560 Último mensaje 9 Mayo 2010, 08:11 am
por Nakp
Pregunta sobre seguridad y espionaje. « 1 2 »
Seguridad
platinum_guy 12 6,628 Último mensaje 7 Noviembre 2012, 21:17 pm
por Saberuneko
pregunta sobre la funcion imagegrabscreen
PHP
sayis 5 3,712 Último mensaje 4 Enero 2013, 02:05 am
por EFEX
Pregunta sobre seguridad y accesos
Redes
Mario Olivera 5 3,350 Último mensaje 11 Julio 2014, 19:40 pm
por Stakewinner00
pregunta sobre seguridad en MAC OX
Mac OS X
crazykenny 1 2,746 Último mensaje 19 Febrero 2015, 21:03 pm
por ElP4nd4N3gro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines