> For the complete documentation index, see [llms.txt](https://beafn28.gitbook.io/beafn28/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://beafn28.gitbook.io/beafn28/web-security/laboratorios-portswigger/business-logic-vulnerabilities.md).

# Business logic vulnerabilities

## Lab: Excessive trust in client-side controls

### Enunciado

Este laboratorio **no valida adecuadamente la entrada del usuario**. Puedes explotar una **falla lógica** en el flujo de compra para adquirir artículos por un precio no previsto. Objetivo: **Comprar una "Lightweight l33t leather jacket".**

Credenciales disponibles:

* **Usuario:** `wiener`
* **Contraseña:** `peter`

### Resolución

Nos logueamos y claro no tenemos dinero para comprar esa chaqueta. Vamos a comprarla como si podríamos de momento pero nos salta error.

Comprobamos mandando la petición al **Repeater** que cada vez que enviamos aumenta la cantidad de chaquetas y por lo tanto de precio. Volvamos a borrar el carrito para cambiar el precio.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FWei4mZjH0tOFQGnzJi1b%2Fimage.png?alt=media&amp;token=421ec119-8217-4267-b65b-67989e8289d9" alt=""><figcaption></figcaption></figure>

No nos da error sino que redirige como antes por lo que al actualizar la página vemos que ha cambiado precio.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FCTv6Q6QVSNNXe5jG6SeB%2Fimage.png?alt=media&amp;token=11d75435-6811-4d14-b0e6-a68b35fc0958" alt=""><figcaption></figcaption></figure>

Por lo que ahora ya podemos comprar la chaqueta.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FpYmo8hntAZPpqE7Rt61v%2Fimage.png?alt=media&amp;token=d021a34d-6d9e-4ecf-add9-9f7538874494" alt=""><figcaption></figcaption></figure>

## Lab: High-level logic vulnerability

### Enunciado

Este laboratorio **no valida adecuadamente la entrada del usuario**. Puedes explotar una **falla lógica** en el flujo de compra para adquirir artículos a un **precio no previsto**. **Comprar una "Lightweight l33t leather jacket"** (una chaqueta de cuero l33t ligera).

Credenciales disponibles:

* **Usuario:** `wiener`
* **Contraseña:** `peter`

### Resolución

Nos logueamos con las credenciales y volvemos a intentar comprar esa chaqueta y nos sale error. Con respeto al anterior en la petición no sale el precio por lo que no lo podemos modificar.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2Fcs3GL8f2moTLoQgxlHaK%2Fimage.png?alt=media&amp;token=5fcac60c-da2b-4b73-a089-c61e0eae5c3d" alt=""><figcaption></figcaption></figure>

Eliminamos la chaqueta añadida y miramos la petición siguiente en el que hay un número negativo. Lo mandamos a **Repeater**.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FYNV2I5VcFSxn9wj8EWj8%2Fimage.png?alt=media&amp;token=da885a90-f5cb-4fa8-97b1-5afe84936e07" alt=""><figcaption></figcaption></figure>

Lo enviamos pero nos dice que no debe ser menor que 0 ya que nos salía que el precio es negativo por lo que vamos a añadir un producto para aplicar la resta y así poder comprarla.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FDyeMCRTnwmA2lGzRHibC%2Fimage.png?alt=media&amp;token=41eb8c68-6f13-4943-986b-c686c228f270" alt=""><figcaption></figcaption></figure>

Enviamos la petición de manera que la cantidad sea negativa y recargamos la página.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FCnjYcgsaOVmDb4vVjGpS%2Fimage.png?alt=media&amp;token=205d9cf0-8ac2-4139-811c-8397c98a41de" alt=""><figcaption></figcaption></figure>

Al volverla a enviar y recargar.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FiGvRTwCKw15Yv4lzbGiQ%2Fimage.png?alt=media&amp;token=bd548f2d-a27f-481d-8000-637534cd3f76" alt=""><figcaption></figcaption></figure>

Vemos que se nos ha restado el precio por lo que aumentamos esa cantidad y va disminuyendo.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FevuntrglBGrj3oaVmd1X%2Fimage.png?alt=media&amp;token=735c968e-9014-4302-80d6-ea967233f004" alt=""><figcaption></figcaption></figure>

Ya la podemos comprar.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FEUDe1LLt4IwyACjsr6Q4%2Fimage.png?alt=media&amp;token=833f4405-eec2-42c4-a937-7cbbc3035475" alt=""><figcaption></figcaption></figure>

## Lab: Inconsistent security controls

### Enunciado

La lógica defectuosa de este laboratorio permite que **usuarios arbitrarios accedan a funcionalidades administrativas** que deberían estar disponibles solo para empleados de la empresa. **Acceder al panel de administración y eliminar al usuario `carlos`.**

### Resolución

Nos copiamos el correo.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FSlb2HUoNLCpdQ4ERkmnX%2Fimage.png?alt=media&amp;token=fe87ff3e-163c-4449-94a7-bc319261fa8a" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Se podría usar si se tiene la versión de pago para descubrir las URLs en Target -> Engagement Tools -> Discovery Content pero no hace falta.
{% endhint %}

Usamos **dirbuster** para encontrar más enlaces.

```bash
dirb https://0a4000c70468f41e81f92b91005c008b.web-security-academy.net/
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FU3Ymkdelqg3J8nU23IEH%2Fimage.png?alt=media&amp;token=e80becef-3f12-486f-ba1c-e4f12918b789" alt=""><figcaption></figcaption></figure>

Nos llama la atención este enlace.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FtQiXfLoYJ8w59squfjCF%2Fimage.png?alt=media&amp;token=85677463-5930-4b61-929b-ceaec1736322" alt=""><figcaption></figcaption></figure>

No tenemos ningún user así por lo que nos registramos.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2Ffc6ppvC1xrih49FfIiA4%2Fimage.png?alt=media&amp;token=41e59804-7e10-41d1-a425-332a87e0618d" alt=""><figcaption></figcaption></figure>

Activamos la cuenta e iniciamos sesión. Como podemos observar podemos actualizar el correo y en el panel de registro se nos dice como debe ser ese correo y claro así podemos entrar en la URL de admin.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FQ1p3ejmTpl5UkQiD8KUU%2Fimage.png?alt=media&amp;token=352ff972-ab67-4c7e-8fc6-5bc69277fef8" alt=""><figcaption></figcaption></figure>

Se actualiza perfectamente y se nos muestra el panel de admin que antes no se nos mostraba. Ya podemos eliminar al usuario carlos.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FqC5uZ66EjVVJWvdtYbHm%2Fimage.png?alt=media&amp;token=1b8d705f-ae25-4783-9e76-691b936647c2" alt=""><figcaption></figcaption></figure>

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FXwbEcl3OLpqtJiLh8ZR0%2Fimage.png?alt=media&amp;token=97f099de-bcae-4b08-92bf-d70a55a8a72f" alt=""><figcaption></figcaption></figure>

## Lab: Flawed enforcement of business rules

### Enunciado

Este laboratorio contiene una **falla lógica** en su flujo de compra. **Explotar esta falla para comprar una “Lightweight l33t leather jacket”.**

Credenciales disponibles:

* **Usuario:** `wiener`
* **Contraseña:** `peter`

### Resolución

Vemos que es la misma página pero nos sale un descuento. Nos lo copiamos y nos logueamos con las credenciales dadas. Compramos y metemos el cupón que se nos ha descontado 5 dolares.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2F5q4uSSYnQSjmjlrZECXk%2Fimage.png?alt=media&amp;token=50dce2e4-3493-4dd2-bc99-cc7b78d2fb6d" alt=""><figcaption></figcaption></figure>

La petición tiene un token, claramente tiene sentido para no usar ese descuento otra vez. Lo comprobamos y no se puede. Mientras revisamos la web nos podemos suscribir a una newsletter.&#x20;

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FxyLI9kUY0x0taVtL6ptw%2Fimage.png?alt=media&amp;token=5a56f813-7c39-4bd6-9f7d-513241440dda" alt=""><figcaption></figcaption></figure>

Nos sale otro cupón al suscribirnos. Se nos aplica pero solo una vez.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2F1HGHpjyQrW6vH9oEt4um%2Fimage.png?alt=media&amp;token=132d35a4-e504-415a-8c5a-4b969b1a64cc" alt=""><figcaption></figcaption></figure>

Por lo que si observamos el error sale solo si metes otra vez el descuento que acabas de meter, es decir, si metes el otro se te vuelve a descontar. En resumen, vamos a ir metiendo intermitentemente uno y otro hasta poder comprar la chaqueta.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2F3IsL4v2qkYDEh7ClM4YN%2Fimage.png?alt=media&amp;token=bdd4bfec-4e1b-49fe-844d-091b239c799c" alt=""><figcaption></figcaption></figure>

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FT5mwRWVJvlM6MYo4RkLt%2Fimage.png?alt=media&amp;token=d76cf337-76cb-49ae-b607-3e056091cd2f" alt=""><figcaption></figcaption></figure>
