XSS: análisis de Javascript

4

Leer sobre XSS basado en DOM de enlace

Ilustra algunos ejemplos como:

http://www.vulnerable.site/welcome.html?foobar=name=<script>alert(document.cookie)<script>&name=Joe

y

 http://www.vulnerable.site/attachment.cgi?id=&action=foobar#<script>alert(document.cookie)</script>

1) ¿En qué secuencia un servidor y un navegador analizan javascript? Digamos, por ejemplo, 1), tan pronto como la solicitud anterior se escribe en un navegador y se envía a vulnerable.site, el cgi manejará la solicitud a través de los parámetros GET / POST. Aquí, extraería los valores requeridos de la solicitud GET / POST, realizaría un procesamiento del lado del servidor y devolvería una respuesta en html. Entonces, ¿dónde está el javascript en uno de los parámetros incrustados en la respuesta?

2) De manera similar, por ejemplo 2) leí que el carácter # evitaría que se enviara al servidor. Por lo tanto, el servidor solo recibirá una solicitud como enlace y no la url completa. Entonces, ¿qué pasa con el javascript que sigue? ¿El navegador lo ejecuta directamente?

    
pregunta Karan 11.05.2013 - 20:14
fuente

2 respuestas

3
  1. El servidor no analiza JavaScript excepto en circunstancias muy específicas (es decir, ejecutas NodeJS y eval() una entrada de usuario. Alguien tendría que ser tan estúpido para hacerlo o tener una razón muy válida para hacerlo.) ). Por lo tanto, el servidor no ve / no se preocupa por el contenido real del código y no se ejecutará en el lado del servidor. La razón de algo como esto es que, por lo general, los valores de usuario generalmente se repiten en algún lugar de la página ( esta es la razón por la que los pasa a través de una URL o los almacena en el servidor) para que se utilicen. Cuando el servidor envía su respuesta, el navegador ejecuta el código que recibe.

  2. De hecho, tienes razón en esto. El hashtag nunca se envía al servidor; sin embargo, puede haber algún procesamiento del lado del cliente, especialmente con bibliotecas MVC como Spine.js . Estas cosas utilizan el valor del hashtag para almacenar elementos del historial y realizar acciones basadas en ellos, como mostrar páginas, hacer cosas o hacer eco del código .

Notarás que en ambos casos, el vector es "código de eco". Todo el propósito es obtener una etiqueta de script adicional en su página, donde ejecutará y alertará las cookies. El primero, una vez corregido, es un muy buen ejemplo de otro defecto:

http://www.vulnerable.site/welcome.html?foobar=&name=<script>alert(document.cookie)</script>&name=Joe

Esta solicitud tiene dos parámetros de nombre. ¿Contaminación HTTP? Probable.

    
respondido por el Sébastien Renauld 11.05.2013 - 20:19
fuente
3

Vamos a ilustrar cómo funciona una solicitud de página básica:

                            Request
                           index.php
#4 Processing |--------| 1#-----------> |--------|   #2 Processing
HTML/CSS/JS   | Client |                | Server |    the requet
 etc...       |--------| <-----------#3 |--------|    
                           Sending
                         the processed
                             page

Entonces, por ejemplo, nuestro index.php tiene lo siguiente:

<?php
    $name = $_GET['name'];
    echo 'Your name is' . $name;
?>

Para un usuario normal, esto funcionará como se esperaba, completará un formulario con su nombre y no tendrá problemas. Un hacker llenaría un javascript malicioso. Por ejemplo: index.php?name=<script>alert('hello hacker');</script> .

  1. Solicitando index.php?name=<script>alert('hello hacker');</script> .
  2. PHP obtiene el parámetro de nombre que es <script>alert('hello hacker');</script> en este caso.
  3. PHP enviará la página con Your name is <script>alert('hello hacker');</script> en ella.
  4. El navegador del cliente leerá y ejecutará la etiqueta JS, esto resultaría en un cuadro de alerta "hola hacker".

¿Entonces puedes pensar por qué y cómo es esto malo? Bueno, el script puede ser "ofuscado" (para que sea ilegible) y enviado a una víctima, cuando la víctima hace clic en él, el script puede usarse para robar cookies, inyectar malware o incluso piratear el sistema con un exploit de 0 días.

    
respondido por el HamZa 11.05.2013 - 20:41
fuente

Lea otras preguntas en las etiquetas