Cómo omitir las restricciones de carga de archivos en aplicaciones web para instalar backdoors

La carga de archivos es muy común en un buen porcentaje de los sitios web en todo el mundo. Plataformas como LinkedIn o Facebook permiten a los usuarios cargar imágenes, archivos MP3, MP4, PDF y muchos otros formatos. No obstante, los especialistas en ciberseguridad señalan que la carga de archivos también representa severos riesgos de seguridad que deben de ser abordados antes de su abuso.

En esta ocasión, los especialistas del Instituto Internacional de Seguridad Cibernética (IICS) mostrarán las formas en las que los actores de amenazas pueden abusar de la función de carga de archivos para comprometer sitios web e incluso servidores.

Es importante conocer los conceptos básicos sobre los shells web y las vulnerabilidades de carga de archivos. Los atacantes utilizan shells web para diversas operaciones, como ejecutar comandos de shell, eliminar archivos, crear archivos, cargar archivos, etc. A menudo es posible cargar un shell inverso (shell) sin pasar por alto los filtros y restricciones.

Esquivar listas negras

Por motivos de ciberseguridad, se prohíbe explícitamente que ciertos tipos de extensiones se carguen en el servidor en listas negras. Esta puede parecer la mejor solución para mantener sitios web y servidores libres de hacking, aunque existen ciertas condiciones que pueden ser esquivadas.

Extensiones de archivos

Los desarrolladores incluyen en la lista negra ciertas extensiones de archivo y evitan que los usuarios carguen archivos que se consideran peligrosos para el servidor. No obstante, los actores de amenazas pueden solucionar esta condición cambiando algunas líneas en las extensiones para cargar y ejecutar una carga útil o shell web.

A continuación se muestra una lista de diversos lenguajes de programación con los respectivos nombres de extensión correspondientes:

  • PHP: .pht, phtml, .php, .php3, .php4, .php5, .php6, .inc
  • JSP: .jsp, .jspx, .jsw, .jsv, and .jspf
  • Perl: .pl, .pm, .cgi, .lib
  • Asp: asp, .aspx
  • Coldfusion: .cfm, cfml, .cfc, .dbm

En algunos casos, es posible que cambiar las extensiones no ayude; en su lugar, debe hacer lo siguiente:

.pHp, .Php, .phP

Omisión de lista blanca

La lista blanca solo enumera ciertas extensiones que el servidor acepta como descargas. Por ejemplo, un sitio web que necesita cargar una imagen de perfil, puede admitir los formatos JPG, JPEG o PNG, mencionan los expertos en ciberseguridad.

Por otra parte, Apache permite cargar archivos con extensiones dobles. Esto significa que los actores de amenazas podrían engañar al servidor para que acepte un shell que también tenga una extensión PNG al final.

shell.php.png
shell.php%00.png
shell.php\x00.jpg

Otra forma de evitar las listas blancas es manipular los encabezados del tipo de archivo. Acorde a los especialistas en ciberseguridad, si un sitio web en particular acepta imágenes, también acepta imágenes GIF. Los hackers pueden agregar GIF89a para engañar al servidor para que cargue el shell.

GIF89a; <?php system($_GET['cmd']); ?>
GIF89a;
system ( $ _GET [ 'cmd' ]) ; # shellcode va aquí

Datos EXIF

Este método permite evitar las restricciones de carga de archivos mediante el uso de datos EXIF en la imagen. El servidor agregará un comentario que contenga código PHP al procesar la imagen.

Este ataque es muy fácil de completar usando gimp o ExifTool, mencionan los expertos en ciberseguridad.

exiftool -Comment = '<? php echo "<pre>"; system ($ _ GET [' cmd ']); ?> ' file.png
mv image. jpg image. php .png

MYME types

Los MIME Types (Multipurpose Internet Mail Extensions) son la manera standard de mandar contenido a través de la red. Los tipos MIME especifican tipos de datos, como por ejemplo texto, imagen, audio, etc. que los archivos contienen.

La inclusión de MIME types en listas negras también es un método para verificar la carga de archivos. Los hackers pueden interceptar las solicitudes POST en la ruta del servidor y cambiar los respectivos MIME types. El PHP MIME type usual es:

Content-type: application / x-php

Los hackers pueden reemplazar este valor con:

Content-type: image / jpeg

Otros métodos alternativos

En algunas situaciones, la longitud del contenido también puede causar problemas al validar los archivos cargados, señalan los expertos en ciberseguridad. Para hacer esto, el comando de shell de PHP se puede abreviar de la siguiente manera:

< ? = '$ _GET [x]' ? > < Br >

Recuerde que este artículo fue elaborado con fines exclusivamente informativos, por lo que IICS no se hace responsable del mal uso que pueda darse a la información contenida aquí. Para conocer más sobre riesgos de seguridad informática, malware, vulnerabilidades y tecnologías de la información, no dude en ingresar al sitio web del Instituto Internacional de Seguridad Cibernética (IICS).