Ataques XSS basados en DOM: ¿cuál es el ejemplo más peligroso?

7

Sabía que los ataques XSS ("no persistentes" y "persistentes") pueden secuestrar sesiones de usuario, modificar sitios web, realizar ataques de phishing, etc.

Sin embargo, no puedo entender lo que es peligroso de DOM Based XSS si no puede (Secuestrar sesión, hacer clicking, etc.)?

Revisé XSS basado en DOM OWSAP y también Esta página que resume estas dos notas:

  
  1. La carga útil maliciosa no se incrustó en la página HTML sin procesar en ningún momento (a diferencia de las otras versiones de XSS).

  2.   
  3. Este exploit solo funciona si el navegador no modifica los caracteres de la URL. Mozilla codifica automáticamente < y > (en% 3C y% 3E,   respectivamente) en el documento.

  4.   

Entonces, ¿qué tipo de ataque (basado en DOM XSS) se puede lograr?

    
pregunta Akam 10.03.2013 - 08:24
fuente

2 respuestas

12

Las secuencias de comandos entre sitios son secuencias de comandos entre sitios: la diferencia entre DOM / persistente / reflejado es solo en cómo se realiza (y se evita) el ataque.

La amenaza es la misma: un atacante de alguna manera ha inyectado javascript malicioso en páginas que no deberían poder controlar, generalmente debido a vulnerabilidades en el diseño del sitio web.

Tome el ejemplo de OWASP , donde la página HTML incluye algunos javascript en línea (parte dentro de las etiquetas) . El propósito del javascript en línea fue a una variable del parámetro de consulta "predeterminado" y usar su valor para modificar el DOM, que es cambiar el valor de la primera etiqueta <option> al valor de ese parámetro de consulta.

El origen de la página web (enviado a través de la red) se parecía a:

Select your language:
<select><script>    
document.write("<OPTION value=1>"+document.location.href.substring(document.location.href.indexOf("default=")+8)+"</OPTION>");    
document.write("<OPTION value=2>English</OPTION>");    
</script></select>

pero después de ser visto desde http://www.some.site/page.html?default=French , el DOM se convertiría en:

Select your language:
<select>    
<OPTION value=1>French</OPTION>
<OPTION value=2>English</OPTION>
</select>

Lo que significa que su navegador web trata la página web como la anterior se envió a través de la red una vez que ejecutó el JavaScript que modifica el DOM (las llamadas a document.write ).

Ahora, un atacante inteligente envía un enlace (por correo electrónico / enlace a la página web) en el que una víctima hace clic en apuntando a http://www.some.site/page.html?default=<script>alert(document.cookie)</script> . Luego, la página web en la página (después de procesar el javascript inicial con el document.write ) se ve así:

Select your language:
<select>    
<OPTION value=1><script>alert(document.cookie)</script></OPTION>
<OPTION value=2>English</OPTION>
</select>

Nuevamente, alert(document.cookie) podría ser cualquier javascript arbitrario que el atacante desee.

Tal vez haya un nombre de usuario / contraseña o una cookie de sesión o un número de tarjeta de crédito en la página, y en lugar de avisarle, vincule el botón enviar a una llamada ajax para que cuando el usuario presione enviar, envíe todos los datos secretos a Un servidor al que el atacante puede acceder.

Realmente no hay un peor escenario: cualquier acción que pueda hacer con javascript que debería poder hacer si existe una vulnerabilidad DOM-XSS.

    
respondido por el dr jimbob 10.03.2013 - 08:52
fuente
1

DOM XSS es tan peligroso como el XSS reflejado. Para explotarlo, el atacante siempre tiene que inducir a un cliente a crear una solicitud (por ejemplo, al hacer clic en un enlace que aún apunta al sitio considerado seguro). Una vez hecho esto, puede ejecutar JavaScript en el navegador del cliente. ¡Esto puede llevar a todo tipo de ataques en el navegador!

    
respondido por el DavidC 07.08.2014 - 15:17
fuente

Lea otras preguntas en las etiquetas