Professional Documents
Culture Documents
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
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
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
Pgina 4 de 13
Autor: Oscar L.
Seguridad en la Web
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).
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.
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.
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.
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
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.
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.
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.
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
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.
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.
Pgina 13 de 13