You are on page 1of 13

Autor: Oscar L.

Seguridad en la Web

Mster en Direccin e Ingeniera de sitios Web Seguridad en la Web Ataques sobre una aplicacin web
Autor: Oscar L. 14 de noviembre del 2011

TABLA DE CONTENIDO
1. 2. RESUMEN / ABSTRACT ............................................................................................. 3 INTRODUCCIN ......................................................................................................... 3 1) ASPECTOS GENERALES ................................................................................... 3 2) ASPECTOS ESPECFICOS DEL ESTUDIO....................................................... 4 3. ATAQUES A LA WEB ................................................................................................. 4 1) ATAQUE SQL INJECTION ................................................................................. 4 I. II. Consideraciones previas ......................................................................................... 4 El ataque .............................................................................................................. 4

2) ATAQUE DENY of SERVICE, DoS ................................................................... 9 I. II. Consideraciones previas ......................................................................................... 9 El ataque ............................................................................................................ 10

3) ESTUDIO DE LOS RESULTADOS .................................................................. 12 4. 5. CONCLUSIONES ....................................................................................................... 12 FUENTES DE INFORMACIN ................................................................................. 13

Pgina 1 de 13

Autor: Oscar L.

Seguridad en la Web

TABLA DE ILUSTRACIONES
Ilustracin 1 Ataque por inyeccin de cdigo en sentencias SQL ........................................ 5 Ilustracin 2 Complemento 'Tamper Data' para la captura de datos enviados al servidor web ........................................................................................................................................ 5 Ilustracin 3 Captura y modificacin de valores antes de ser enviados al servidor .............. 6 Ilustracin 4 Acceso ganado al sistema sin conocer la clave del usuario.............................. 6 Ilustracin 5 Etapa 2 del ejercicio ......................................................................................... 7 Ilustracin 6 Inicio de la prueba de 'Numeric SQL injection' ............................................... 7 Ilustracin 7 Captura y modificacin de los datos a enviar al servidor ................................. 8 Ilustracin 8 Acceso al sistema sin autorizacin conseguido ................................................ 9 Ilustracin 9 Insertar cdigo especfico para el ataque........................................................ 10 Ilustracin 10 Acceso conseguido al listado de usuarios y claves de acceso ...................... 11 Ilustracin 11 Prueba de acceso exitosa con uno de los usuarios obtenidos en el ataque ... 11 Ilustracin 12 Conseguido el acceso de al menos tres de los usuarios obtenidos ............... 12

Pgina 2 de 13

Autor: Oscar L.

Seguridad en la Web

1. RESUMEN / ABSTRACT
La importancia que internet tiene en esta sociedad totalmente digitalizada es ya aceptado como una herramienta imprescindible tanto a nivel profesional, empresarial y personal. Pocas cosas hay que no requieran la visita de un sitio web, desde las compras ms simples, hasta las gestiones con la administracin. El desarrollo exponencial de los servicios que ofrece internet, se acompaa con un avance de la complejidad de esta gran infraestructura, las grandes ventajas que ofrece, disponibilidad inmediata y acceso remoto desde cualquier lugar del mundo (salvo restricciones polticas o de infraestructura), que casi cualquier persona puede desarrollar un portal web (con unos conocimientos bsicos y el uso de herramientas especficas) se convierten tambin en las mayor fuente de problemas, ante todo, problemas de seguridad. Como usuarios, queremos usar los servicios que nos ofrecen a travs de internet, pero queremos que nadie nos robe informacin, nos suplante la identidad, etc. Queremos estar seguros dentro de internet. Como desarrolladores de servicios para la web, debemos generar confianza a los usuarios, darles seguridad, con su colaboracin claro est. Es por ello, que la revisin de los fallos que se pueden cometer y que vulneran esta seguridad, se hace tan importante como el propio desarrollo del la web. Al menos, en determinados servicios, como los bancarios, la administracin, etc. Como ejemplo claro, tener un servicio web de acceso a nuestras gestiones bancarias que permita acceder cualquier persona en mi nombre, es mejor no tenerlo, lgico!. Este artculo trata de reproducir algunos de los errores de desarrollo de sitios web, que permiten accesos, modificaciones y destruccin de datos de forma fraudulenta, y que ms problemas han planteado a los responsables de estos servicios.

2. INTRODUCCIN
1) ASPECTOS GENERALES
Para poner de manifiesto la importancia de la seguridad en internet, procederemos a realizar una reproduccin de algunos de los ataques a pginas web ms conocidos o de mayor repercusin. De este modo se pretende concienciar, va ejemplos de una plataforma de demostracin de este tipo de ataques, lo que nos puede suceder a nuestros sistemas en el caso de no aplicar las medidas necesarias para evitarlo.

Pgina 3 de 13

Autor: Oscar L.

Seguridad en la Web

2) ASPECTOS ESPECFICOS DEL ESTUDIO


Para la reproduccin de este tipo de ataques a pginas web con problemas de seguridad, se utilizar una plataforma especficamente dedicada a este tipo de pruebas en acceso local, dado que aplicar este tipo de ataques a pginas web reales, puede constituir algn tipo de delito. La plataforma en cuestin se llama WebGoat, una aplicacin web, deliberadamente insegura que se instala en nuestro ordenador para poder reproducir dichos ejemplos de ataques en pginas web.

3. ATAQUES A LA WEB
1) ATAQUE SQL INJECTION
Este tipo de ataque consiste en explotar una vulnerabilidad de los sistemas que utilizan sentencias SQL con parmetros directamente introducidos de un formulario o servicio web sin ningn tipo de comprobacin. Cuando el sistema espera obtener una cadena de valores encajados entre comillas, podemos introducir cualquier tipo de sentencia SQL si entre un determinado parmetro le aadimos sentencias SQL comenzado con una simples comillas. El sistema al componer la sentencia SQL anexando directamente los valores de los parmetros introducidos, al encontrar esta comilla, entiende que el valor del parmetro ha finalizado y lo siguiente que viene es la continuacin de una sentencia, de este modo, podemos engaar al sistema aadiendo la sentencia que necesitemos en cada momento.

I.

Consideraciones previas

Ejecutaremos la leccin del ataque, String y Numeric SQL Injection, que consiste en varios ataques sobre la vulnerabilidad del SQL.

II.

El ataque

Etapa 1: String SQL Inyection:


Usaremos una cadena de inyeccin SQL para eludir la autenticacin. La inyeccin de SQL para acceder al sistema como el jefe "Neville", identificado en el listado como admin (un grave error listar el tipo de usuario de acceso al cualquiera), sin utilizar la contrasea correcta. Verificar que el perfil de Neville se puede ver y que todas las funciones estn disponibles (incluyendo la bsqueda, crear y borrar).

Pgina 4 de 13

Autor: Oscar L.

Seguridad en la Web

Ilustracin 1 Ataque por inyeccin de cdigo en sentencias SQL

Para llevar a cabo este ataque instalaremos en nuestro navegador un complemento llamado Tamper Data, que nos permitir captura la comunicacin que le enviaremos al servidor. De este modo podremos ver todas las variables que se le envan y modificar los valores.

Ilustracin 2 Complemento 'Tamper Data' para la captura de datos enviados al servidor web

Una vez instalado este complemente, o arrancamos y le ponemos en modo captura. En el formulario seleccionamos el usuario elegido para este ataque y pulsamos Login, en este momento nos aparecer una ventana del Tamper Data que nos permitir modificar los datos antes de ser enviados al servidor.

Pgina 5 de 13

Autor: Oscar L.

Seguridad en la Web

En nuestro caso, aadiremos en el campo password la sentencia admin or b=b (sin las comillas dobles, y la palabra admin no es necesaria, si en cambio la palabra b, o cualquier otra palabra siempre que sean iguales en ambos lados de la sentencia = para que la evaluacin de esta sentencia sea siempre verdadera).

Ilustracin 3 Captura y modificacin de valores antes de ser enviados al servidor

La ejecucin de la sentencia SQL, aadir al valor del campo password: [select password = a or b=b ], esto implica que siempre ser verdadera esta sentencia y aceptar la entrada del Login. Con lo que ya tenemos el acceso al sistema con el usuario Neville, como puede verse en la siguiente ilustracin.

Ilustracin 4 Acceso ganado al sistema sin conocer la clave del usuario

Pgina 6 de 13

Autor: Oscar L.

Seguridad en la Web

Etapa 2: String SQL Inyection: Implementar una correccin contra este ataque
No es el objetivo de este artculo la implementacin de correcciones para este tipo de ataque.

Ilustracin 5 Etapa 2 del ejercicio

Etapa 3: Numeric SQL Inyection


Usaremos este tipo de ataque para eludir la autenticacin. Utilizaremos el perfil de un usuario normal para ver el perfil de otro usuario, en este caso, para ver el contenido del jefe Neville. Primeramente accedemos al sistema como un usuario normal.

Ilustracin 6 Inicio de la prueba de 'Numeric SQL injection'

Una vez dentro del perfil del usuario, utilizaremos el complemento Tamper Data para capturar los datos que se envan al servidor web. Una vez activada la captura de estos datos, pulsamos el botn de ver el perfil, ViewProfile. Acto seguido nos saldr el aviso de la captura de datos, que pasaremos a modificar. Concretamente utilizaremos el valor del parmetro employee_id (identificador del usuario) para aadir o inyectar codgo a la sentencia SQL que nos permita ver el perfil del jefe. Supones que el jefe es aquel usuario Pgina 7 de 13

Autor: Oscar L.

Seguridad en la Web

que ms dinero ganta en la empresa, con lo que la introduciremos el siguiente cdigo a continuacin del valor del campo employee_id, or 1=1 order by salary desc. Con esta sentencia, provocamos que el primero de la lista ya no sea el usuario previsto, sino aquel que tiene el salario mas alto.

Ilustracin 7 Captura y modificacin de los datos a enviar al servidor

Una vez enviados los datos modificados, podemos ver el resultado de la consulta del perfil del empleado, en este caso hemos conseguido sustituirlos por el empleado con mayor salario, que suponemos que en este caso ser el jefe.

Pgina 8 de 13

Autor: Oscar L.

Seguridad en la Web

Ilustracin 8 Acceso al sistema sin autorizacin conseguido

Etapa 4: Numeric SQL Inyection: Implementar una correccin contra este ataque
No es el objetivo de este artculo la implementacin de correcciones para este tipo de ataque.

2) ATAQUE DENY of SERVICE, DoS


I. Consideraciones previas
Este tipo de ataque consiste en bloquear un servicio de internet a base de saturar los recursos del servidor que lo gestiona, un ejemplo de ello, es realizar 1000 consultas desde distintos lugares a una misma base de datos de una pgina web a la vez, cuando el sistema solo est preparado para atender 100, en este caso, el servidor deja de atender peticiones por saturacin, y quedara fuera de servicio mientras intenta atender, en la media de sus recursos (procesador, memoria, ancho de banda, etc.), a todas las solicitudes que le van llegando. Este tipo de ataque es muy comn por organizaciones de dudosa legalidad como puede ser Anonymous, (que ha socializado este tipo de ataques) para realizar acciones de protesta contra lo que consideran poderes facticos u organizaciones que van en contra de los intereses que defienden este tipo de organizaciones. Destacar que este tipo de ataque se sigue utilizando en sus diferentes variantes, ver noticia: http://www.lavozlibre.com/noticias/ampliar/274768/la-venganza-digital-de-anonymous.

Pgina 9 de 13

Autor: Oscar L.

Seguridad en la Web

Existen varias tcnicas y variantes para llevar a cabo este tipo de ataque, en general cualquiera que consiga su objetivo, poder conseguir que el objetivo deje de prestar los servicios de forma normal.

II.

El ataque

En la puesta en marcha de la simulacin de este ataque, vamos a utilizar la Denegacin de servicio a partir de inicios de sesin mltiples, conseguir mltiples inicios de sesin en el servicio web desde las cuentas de varios usuarios.

Descripcin del objetivo:


Este sitio permite a los usuarios iniciar sesin en mltiples ocasiones. Este sitio cuenta con un pool de conexiones de base de datos que permite que dos conexiones. Debemos obtener una lista de usuarios vlidos y crear un total de n accesos que luego podremos utilizar para otros fines. Esto es, primero intentar descubrir el listado de usuarios y claves del sistema para poder acceder al mismo suplantando la identidad de varios usuarios.

Ejecucin
Para ello, intentaremos averiguar si el servicio web est expuesto a algn tipo de vulnerabilidad a travs de inyeccin de cdigo SQL en el nombre de usuario y clave. Introduciremos el siguiente texto en el nombre de usuario y clave admin or 1=1 (la palabra admin es slo a modo de adorno, no es necesaria.

Ilustracin 9 Insertar cdigo especfico para el ataque

Con ello, el sistema vulnerable, genera la siguiente sentencia SQL, SELECT * FROM user_system_data WHERE user_name = '' or '1'='1' and password = '' or '1'='1', cuya ejecucin nos dar (debido que la sentencia introducida para el usuario y la clave 1=1 siempre es cierta) el listado de usuarios y sus claves de acceso.

Pgina 10 de 13

Autor: Oscar L.

Seguridad en la Web

Ilustracin 10 Acceso conseguido al listado de usuarios y claves de acceso

Si las claves de usuario no estn protegidas con algn tipo de encriptados, ya tendremos en nuestras manos la forma de conseguir un acceso al servidor desde mltiples usuarios. Si automatizamos este proceso podemos conseguir, entre otras cosas, bloquear la respuesta del servidor a los usuarios legtimos.

Ilustracin 11 Prueba de acceso exitosa con uno de los usuarios obtenidos en el ataque

Pgina 11 de 13

Autor: Oscar L.

Seguridad en la Web

Y con el acceso, con xito, a varias de las cuentas, nos aseguramos el xito del ataque.

Ilustracin 12 Conseguido el acceso de al menos tres de los usuarios obtenidos

3) ESTUDIO DE LOS RESULTADOS


En los resultados obtenidos en los distintos ataques ejecutados hemos visto el potencial de la explotacin de estas vulnerabilidades, en estos casos, slo nos hemos centrado en obtener datos sin la autor5izacin legtima para poder verlos. Pero est claro que podemos ir ms all, tanto en la alteracin de los mismos, borrado, etc.

4. CONCLUSIONES
Como ya se comento al inicio de este artculo, es de reconocer la gran importancia de la seguridad en los servicios que se prestan a travs de internet. Un mal desarrollo de los servicios ofrecidos por internet puede dar al traste con toda la inversin realizada, y no slo eso, si no que podemos comprometer nuestro negocio. Imaginemos un servicio bancario comprometido, en el cual se pueda acceder a las cuentas bancarias de los clientes, si este tipo de informacin sale a la luz pblica que nuestro servicio est continuamente dando problemas y comprometida la seguridad, podemos generar una baja masiva de clientes. Uno de los problemas que se plantea con la explotacin de vulnerabilidades, es que afecta a todos por igual, sean particulares, PYMES, grandes corporaciones o administracin pblica, continuamente estn teniendo ataques y comprometiendo la seguridad de sus sistemas. En estos casos, las grandes empresas y administraciones tienen ms fcil el acceso a las soluciones o reparaciones de los problemas, pero muchas de las pequeas

Pgina 12 de 13

Autor: Oscar L.

Seguridad en la Web

empresas, que no cuentan con inversin especfica para dedicar recursos para la prevencin o gestin de los ataques. Se encuentran a merced de los delincuentes. Pero, si hay que dar un mensaje al no profesional, que tiene que mandar implantar este tipo de sistemas, comentar que hay muchos problemas que no requieren de grandes inversiones en seguridad, slo de aplicar el sentido comn y el principio de prudencia, usando las mismas tcnicas que utilizamos continuamente en el mundo fsico. Si en nuestro da a da, no vamos dando informacin a todas las personas que vemos sobre mi ubicacin, el tipo de puerta de mi casa, cuantas habitaciones tenemos, donde est el cajn de las joyas, etc. NO hagamos lo mismo en internet, no publiquemos datos del sistemas que estamos utilizando, ni su versin, no listemos demos informacin de los nombre de usuarios que tenemos en el sistema ni de qu tipo son, etc. Finalmente, hay veces que es mejor no ofrecer un servicio por internet, que ofrecerlo con pocas garantas de calidad. Todo es cuestin de evaluar los riesgos y el impacto en nuestra organizacin y/o usuarios.

5. FUENTES DE INFORMACIN
Fuentes de informacin basadas en documentacin:
Asignatura de Seguridad en la web, (Mster en Direccin e Ingeniera de sitios Web), tanto los contenidos tericos proporcionados por los profesores, como las aportaciones de los propios alumnos.

Fuentes de informacin basadas en internet:


Las fuentes de internet consultadas corresponden a las fechas de realizacin de este artculo. http://yehg.net/ http://es.wikipedia.org/wiki/Seguridad_en_Internet http://ingenieriaweb.unir.net/ http://en.wikipedia.org/wiki/SQL_injection http://es.wikipedia.org/wiki/Ataque_de_denegaci%C3%B3n_de_servicio http://es.wikipedia.org/wiki/Anonymous https://www.owasp.org/ http://www.lavozlibre.com/noticias/ampliar/274768/la-venganza-digital-de-anonymous,

Pgina 13 de 13

You might also like