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

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:

Última actualización

¿Te fue útil?