Las vulnerabilidades en la web no son ninguna novedad, básicamente todo es petición y respuesta. La solicitud generalmente parte del lado del usuario a través de un navegador (IE, Firefox, Opera, etc.), puede ser un parámetro de URL, cookies, etc. La petición se envía a un servidor web que es responsable del sitio ( http://www.ejemplo.com, inventado, por supuesto) de la solicitud. El servidor procesa la solicitud y devuelve al usuario la respuesta.
Las vulnerabilidades web son partes de la petición procesada sin el debido tratamiento por el servidor, un gran fallo en la fase de desarrollo web. Esta información, cuando no se trata, deja el servidor susceptible a la explotación de estos fallos.
Entre las formas existentes para aprovechar las vulnerabilidades web. Vamos a hablar un poco sobre la inyección SQL , inyección directa de código malicioso a través de parámetros enviados por la solicitud, o por el usuario.
Esta técnica es cuando el atacante cambia el código SQL para obtener acceso a la información, es una de las vulnerabilidades más comunes en la web.
Ejemplo: un entorno web, con un banco de datos MySQL, y una aplicación en PHP:
http://www.ejemplo.com/stores.php?id=21
En el servidor, ese archivo stores.php está en la raíz del sitio, hay una línea de código que recibe a través de una petición GET el parámetro ‘id’ y el desarrollador web ha aplicado la regla de búsqueda en la base de datos, con la siguiente consulta SQL:
$id = $_GET['id']; $sql = "SELECT * FROM stores WHERE stores.id = {$id}";
Si el valor pasado en el parámetro ‘id’ de la dirección URL siempre es un número, el código funcionará. Pero si reemplaza el valor del parámetro ‘id’ en la dirección URL por una letra o un apóstrofo después del número y el servidor devuelve algo como:
Tiene un error en su sintaxis SQL; compruebe el manual que corresponde a su versión de servidor de MySQL para la sincronización de sincronización a través de "21" límite 1 'en línea 1
Si en vez de una letra lo que se hace es insertar un código SQL debidamente redactado, se puede hacer cosas tan graves como vaciar completamente la base de datos y eliminar toda la información que hay en la web. Todo esto a través de una simple URL.
Para un trozo de código que obtiene el parámetro ‘id’ en la URL, una solución muy práctica es forzar el valor ( análisis sintáctico ) para el tipo de número entero, como este:
$id = (int) $_GET['id'];
De esta forma, cualquier valor que no sea un número entero se fuerza a cero.
Este ejemplo es muy simple, pero se puede tomar una primera impresión de cómo algo tan pequeño puede convertirse en un gran dolor de cabeza.