1 / 19

ADMINISTRACION DE REDES SECUNECIA DE COMANDOS EN SITIOS CRUZADOS(XSS) DIEGO ALEXANDER MADRID DUQUE

ADMINISTRACION DE REDES SECUNECIA DE COMANDOS EN SITIOS CRUZADOS(XSS) DIEGO ALEXANDER MADRID DUQUE GABRIEL ANDRES AGUIRRE JARAMILLO INSTITUTO TECNOLOGICO METROPOLITANO ITM. Secuencia de comandos en sitios cruzados (XSS).

maxim
Download Presentation

ADMINISTRACION DE REDES SECUNECIA DE COMANDOS EN SITIOS CRUZADOS(XSS) DIEGO ALEXANDER MADRID DUQUE

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ADMINISTRACION DE REDES SECUNECIA DE COMANDOS EN SITIOS CRUZADOS(XSS) DIEGO ALEXANDER MADRID DUQUE GABRIEL ANDRES AGUIRRE JARAMILLO INSTITUTO TECNOLOGICO METROPOLITANO ITM

  2. Secuencia de comandos en sitios cruzados (XSS) En cuanto a las formas más comunes de efectuar ataques XSS, encontramos: • SQL InjectionSe puede utilizar esta técnica cuando se prevee que un campo dentro de una página interviene dentro de alguna consulta en la base de datos. A modo de ejemplo, si suponemos un escenario con una página de login, por ejemplo, gmail.com; es lógico pensar que cuando ponemos nuestro nombre de usuario (“usuario”) y contraseña (“contraseña”), el servidor tendrá que preguntar a la base de datos: SELECT identificadorFROM usuariosWHERE username = 'usuario'AND password = 'contraseña’

  3. Secuencia de comandos en sitios cruzados (XSS) En este escenario si no se comprueba que el nombre de usuario y la contraseña no sean sentencias SQL se podría escribir como contraseña password’ OR ‘x’='x’, con lo que la consulta a la base de datos sería: SELECT identificadorFROM usuariosWHERE username = 'usuario'AND password = 'password' OR 'x'='x'

  4. HTML Injection Al igual que ocurre en el ataque anterior, se puede utilizar la inyección de código HTML cuando se prevee que el dato que se introduce en algún campo de un formulario o parámetro de la web será mostrado en la página resultado. A modo de ejemplo, la forma más básica de comprobar si un buscador es susceptible a XSS por inyección de HTML es introducir en la casilla del buscador: <strong>test</strong>

  5. Secuencia de comandos en sitios cruzados (XSS) Si el buscador muestra en la página de resultados algo así como: Resultados para <strong>test</strong>, no es probable que sea susceptible a este tipo de ataques, si por el contrario muestra resultados para test , es muy probable que el servidor sea susceptible a este tipo de ataques.

  6. Eliminación de restricciones Básicamente, el ataque consiste en eliminar restricciones impuestas por la programación de una página web, siempre y cuando estas restricciones se lleven a cabo en el cliente. Es decir, se llevan a cabo en nuestro navegador.

  7. Dentro de la formas de explotar esta vulnerabilidad se pueden encontrar dos tipos. Se puede modificar en “tiempo real” una página web, para por ejemplo sobrescribir una función de validación y siempre de un resultado positivo. O por otro lado, se puede capturar una petición válida al servidor, modificarla a nuestro gusto y volverla a enviar.

  8. XSS, Cómo evitarlo? • Bases de datos Evitar que se puedan ejecutar más de una sentencia SQL en un mismo comando. Utilización de Prepared Statements: ¿Y eso qué es? Básicamente el término prepared statement hace referencia a un tipo de consultas SQL que no se ejecutan concatenando cadenas de caracteres. El funcionamiento es primero construir el esqueleto de la sentencia SQL y luego decir qué parámetros van en cada punto.

  9. De esta forma el ejemplo anterior quedaría: SELECT identificador FROM usuarios WHERE username = ? AND password = ? Ahora sólo quedaría decir qué es cada uno de los parámetros, lo importante es que en esta operación se dice de qué tipo son los mismos, por lo que por ejemplo introducir un número cuando se espera una cadena daría error. En Java por poner un ejemplo, se realizaría con: preparedStatementObject.setString(1,"usuario");preparedStatementObject.setString(2, "contraseña");

  10. Servidores o Aplicaciones Web • HTTPSno evita XSS. HTTPS es un protocolo que asegurará que la conexión entre el servidor y el cliente es segura, pero no asegura nada de los datos intercambiados. • Filtrado de código HTML que se permite introducir por los usuarios. Esto es especialmente problemático en componentes encargados de los comentarios en un blog o foro. • Se puede utilizar un pre-filtrado en código cliente (que será ejecutado en el navegador del usuario), pero sólo como medida adicional de prevención.

  11. Evitar utilizar sólo parámetros que viajan con la página para autenticar un usuario. El ejemplo más típico es que aunque exista un parámetro &ID=[cadena de caracteres], eso sólo debe ser utilizado como media adicional • En ocasiones sería recomendable comprobar el campo REFERER de la petición HTTP para saber de dónde viene una petición, pero también hay que tener en cuenta que es un campo opcional. • Evitar filtrar por codificaciones, este ejemplo quizá parezca bastante absurdo, pero se dan casos donde por ejemplo se filtra un tag que contenga javascript, pero no se filtra jav[caracter x09]ascripty a efectos prácticos es lo mismo.

  12. A CONTINUACION LA PRUEBA, PASO A PASO

  13. DEMOSTRACION 1

  14. Código para atacar

  15. Página ya atacada

  16. DEMOSTRACION 2

  17. Código para atacar

  18. Página a atacar

  19. Página ya atacada

More Related