(o como se le llama en algunos textos, “type-0 XSS”) es un ataque XSS en el que la carga útil de ataque se ejecuta como resultado de modificar el “entorno” DOM en el navegador de la víctima utilizado por el script original del lado del cliente, de modo que el código del lado del cliente se ejecuta de una manera “inesperada”. Es decir, la página en sí (la respuesta HTTP que es) no cambia, pero el código del lado del cliente contenido en la página se ejecuta de manera diferente debido a las modificaciones maliciosas que se han producido en el entorno DOM.
Esto contrasta con otros ataques XSS (almacenados o reflejados), en los que la carga útil de ataque se coloca en la página de respuesta (debido a un defecto del lado del servidor).
VIDEO POC
Escape HTML luego Escape JavaScript Antes de Insertar Datos No Confiables en Subcontexto HTML dentro del Contexto de Ejecución
Ejemplo Métodos HTML peligrosos
Atributos
elemento.innerHTML = “< HTML> Etiquetas y marcado”; elemento
.outerHTML = “< HTML> Etiquetas y marcado”;
Métodos
documento.escribir (“< HTML > Etiquetas y marcado”);
documento.writeln (“<HTML> Etiquetas y marcado”);
Directriz
Para realizar actualizaciones dinámicas de HTML en DOM safe, OWASP recomienda
a) codificación HTML, y luego
b) Codificación JavaScript para todas las entradas no confiables, como se muestra en estos ejemplos: elemento
.innerHTML= ” <% = Codificador.encodeForJS (Codificador.encodeForHTML (Datos no confiables))%>”;
elemento.outerHTML= ” <% = Codificador.encodeForJS (Codificador.encodeForHTML (Datos no confiables))%>”;
documento.escribir (“< % = Codificador.encodeForJS(Encoder.encodeForHTML(untrustedData))%>”);
document.writeln(“<%=Encoder.encodeForJS(Encoder.encodeForHTML(untrustedData))%>”);