miércoles, 26 de diciembre de 2012

Ataques por sobrecarga

1  ¿Qué son?

Los ataques DoS(Denial of Service) tienen como finalidad provocar que unos servicios o recursos sean inaccesibles para los usuarios
Pueden provocar la parada de todos los servicios de una servidor, o que dichos servicios sólo sean accesibles a ciertos usuarios.

2   DoS en las webs

Los ataques en las páginas web de  tipo DoS tienen como objetivo dejar sin servicio a la aplicación web, en lugar de dirigir su ataque contra la máquina que aloja la web.
Son muy difíciles de detectar ya que se realizan a través de peticiones comunes, por ejemplo, rellenando formularios de búsqueda.
Se pueden llevar a cabo a través de los siguientes procedimientos:
• Mal funcionamiento, parada de la aplicación.
• Modificación y destrucción de datos.
• Consumo excesivo de recursos en la máquina.

3  Tipos de ataques DoS

3.1  Buffer Overflow
Un tipo de ataque DoS es el conocido como buffer Overflow, que puede aparecer en aplicaciones web escritas bajo lenguaje C o derivados del mismo.
Estos ataques se producen cuando escriben datos en un buffer que sobrescribe otros adyacentes copiando cadenas de un buffer a otro, de modo que el buffer asignado es sobrepasado. La Figura 18 muestra un ejemplo sencillo.

Es necesario  validar muy bien los datos que proceden de funciones como strcpy(), strcat(), gets(), etc. Es decir, las funciones que copian cadenas entre variables o que recogen datos de los usuarios.

3.2  Varios

Otros ataques de tipo DoS pueden generarse mediante fallos encontrados por inyección SQL o inclusión de archivos remotos, donde si los permisos no están bien configurados es posible ejecutar comandos.
En los casos en que no sea posible que el servidor deje de dar un servicio, el atacante podría intentar dificultar su funcionamiento normal ralentizándolo y provocando errores.
Por ejemplo, suponiendo que el servidor web tiene una dirección del tipo:


si el atacante en vez de esa dirección escribe algo similar a
http://servidor/noticias.aspx?id=1 union DROP TABLE usuarios


y los permisos del servidor no están bien configurados, entonces el atacante habrá logrado borrar una base de datos esencial para el funcionamiento del servidor, que se verá gravemente afectado.

Como ejemplo adicional, dado el código:
$id = $_GET['id'];
mysql_select_db("bbdd", $link);
$sql = "select * from news where auction_id=".$id;
$res = mysql_query($sql);
  
Si ejecutamos la llamada:
http://server/inject.php?id=1 union select benchmark(50000000, sha1( 1 )),1,1,1,1,1;
  
el resultado será que a través de una técnica de inyección SQL se ejecutará 50000000 veces la expresión incluida creando un bucle que consumirá  un elevado número de recursos.

4   Cómo evitarlo
 Una vez más la forma de evitar los ataques es sencilla. La principal regla, en este caso, es validar todas las entradas que realicen los usuarios en formularios de la web, cualquier área de texto que exista ha de ser validada frente a ataques o usos indebidos.

No hay comentarios:

Publicar un comentario

Esperando tu comentario...