Actualmente es común que cualquier sitio web sea creado en tiempo de ejecución desde los datos almacenados en bases de datos.

Lo interesante de esa apreciación es que los datos almacenado en una tabla pueden modificarse y por ende, modificar la apariencia y comportamiento del sitio web afectado. Esto se logra a través de SQL Injection, modificando los datos almacenados en las tablas de cualquier servidor SQL y alcanzando el objetivo deseado.

Si por ejemplo se inserta una llamada a un Javascript dañino a un sitio externo, es posible que el sitio vulnerado termine infectando a cualquier usuario que ingrese al mismo, logrando un efecto masivo en el ataque.

Por su parte, si un usuario ingresa al sitio modificado con un navegador o aplicación sin actualizar, es posible que sea afectado por la explotación de vulnerabilidades en dicho navegador. Como el atacante desconoce que vulnerabilidad puede tener el navegador o las aplicaciones instaladas, ¿por qué no probar con todas?

Puede verse cómo el atacante logra que el servidor y el cliente "colaboren" sin intención, logrando la infección de un usuario:

Servidor

Sitio web vulnerable o entradas sin validar -> ataque SQL Injection -> Sitio web modificado con script dañino

Cliente

Ingresa al sitio afectado -> explotación de vulnerabilidades -> descarga de archivo dañino -> infección

En esta imagen puede verse como un primer archivo invoca un archivo HTML y este invoca a otros 8 archivos, los cuales cada uno de ellos explota una vulnerabilidad distinta, descargando un archivo dañino test.exe.

Explotación de vulnerabilidades

En este caso se había realizado una inyección SQL en el sitio afectado, invocando al primer archivo a.htm, el cual se encarga de descargar los otros archivos que terminan con la explotación de alguna vulnerabilidad que permite la descarga y ejecución del archivo dañino, sin intervención del usuario.

Nuevamente no esta de más remarcar que:

  • En el servidor del sitio web deben validarse todos los ingresos en el sitio para evitar la inyección de código y debe actualizarse todo el software utilizado.
  • En el cliente debe actualizarse todo el software y utilizar protección proactiva que permita detectar las amenazas que puedan descargarse.

Cristian