Lab 4: Client-side prototype pollution via flawed sanitization
https://portswigger.net/web-security/prototype-pollution/client-side/lab-prototype-pollution-client-side-prototype-pollution-via-flawed-sanitization
Última actualización
https://portswigger.net/web-security/prototype-pollution/client-side/lab-prototype-pollution-client-side-prototype-pollution-via-flawed-sanitization
Última actualización
Al probar diferentes cargas, se detecta que no funcionan:
Tampoco esta:
Y tampoco esta:
Las cargas utilizadas fueron:
Se procede a revisar el codigo fuente y se detecta la siguiente funcion que probablemente esta filtrando las entradas maliciosas:
La función sanitizeKey
está diseñada para eliminar ciertas cadenas específicas de una clave. Sin embargo, no aborda adecuadamente las variaciones o fragmentaciones de estas cadenas. Vamos a analizar por qué:
La función sanitizeKey
depende de coincidencias exactas para reemplazar. Cuando la cadena __proto__
está incrustada dentro de otra cadena (como en el siguiente payload), la función no la reconoce como un mal atributo y no la elimina.
Las cargas anteriores son funcionales.
Ahora si analizamos el codigo fuente:
Se detecta que la inyeccion o el payload debe abordar a transport_url.
Por lo anterior, la carga quedaria de la siguiente manera:
Pero al utilizarla obtenemos un error:
Y al analizar el codigo fuente se puede apreciar la inclusion de foo:
La carga final para desplegar un XSS seria la siguiente:
Y la salida de lo anterior es lo siguiente: