# Lab 1: Client-side prototype pollution via browser APIs

Primero ejecutamos el siguiente script de js en la consola:

```
Object.prototype
```

<figure><img src="https://1990863415-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCohdns2VDWfowigRKoD0%2Fuploads%2FJ4LiuruGLLfjwOK6LFJV%2Fimage.png?alt=media&#x26;token=828b95ba-c4a7-42d5-9fd2-9316669a04e6" alt=""><figcaption></figcaption></figure>

Luego de lo anterior, se procede a realizar un GET concatenando lo siguiente:

{% code overflow="wrap" %}

```
/?__proto__[variable]=gerhishere
```

{% endcode %}

Y al ejecutar nuevamente el script previo, sale lo siguiente:

<figure><img src="https://1990863415-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCohdns2VDWfowigRKoD0%2Fuploads%2FzDnj85nHMG3apYNJGXcz%2Fimage.png?alt=media&#x26;token=a722ff8b-cc83-4f1d-bb3b-458f2dd69785" alt=""><figcaption></figcaption></figure>

Y luego de lo anterior, validamos el codigo fuente para analizarlo:

<figure><img src="https://1990863415-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCohdns2VDWfowigRKoD0%2Fuploads%2FzoXWHhIvjoSbRCkLT9Fn%2Fimage.png?alt=media&#x26;token=8046466a-6a25-4964-ab97-6b97305c2125" alt=""><figcaption></figcaption></figure>

El ataque de prototype pollution ocurre cuando un atacante puede modificar el prototipo de objetos base en JavaScript, como `Object.prototype`, lo que permite inyectar propiedades maliciosas que pueden ser utilizadas en todo el código que se basa en estos objetos.

En este caso, la función `deparam` podría ser explotada si los parámetros de la URL incluyen claves como `__proto__`. Por ejemplo, un atacante podría pasar una URL como esta:

Teniendo en cuenta lo anterior, se procede a modificar nuestro payload para desplegar una alerta en JS:

<figure><img src="https://1990863415-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCohdns2VDWfowigRKoD0%2Fuploads%2Fs4q3IVo17655IT5EWREm%2Fimage.png?alt=media&#x26;token=83de77fc-7041-403b-9ac7-1d9d7bc1c2f7" alt=""><figcaption></figcaption></figure>
