> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/es/web/business-logic/logical-flaw-allowing-you-to-generate-infinite-money.md).

# Fallo lógico que permite generar dinero infinito

### Fallo lógico de dinero infinito

**Descripción del laboratorio**

Este laboratorio contiene un fallo lógico en el proceso de compra. Mediante una mala interacción entre \*\* las tarjetas regalo\*\*, \*\* los cupones promocionales\*\* y **confirmación del pedido**, es posible generar crédito ilimitadamente y luego comprar la chaqueta de cuero Lightweight l33t.

Identificador proporcionado:

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

<figure><img src="/files/16e57fa57cfc9d09376c9bbe6e7d634f8994c5a0" alt=""><figcaption></figcaption></figure>

### Principio del fallo

Después de registrarse en el boletín, se otorga un cupón promocional:

* **Cupón** : `SIGNUP30`

<figure><img src="/files/f8a7d96913c1b2200be5585215e38ae63a66bbf0" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/3b2ed1c0bbd630a3064c59e8dc84c27ccd883ef5" alt=""><figcaption></figcaption></figure>

En la tienda es posible comprar \*\* tarjetas regalo\*\*.

El problema es que el cupón puede aplicarse al comprar estas tarjetas.

<figure><img src="/files/bb62514c7cd2f29b765b4a04f4e87a451212a396" alt=""><figcaption></figcaption></figure>

#### Ejemplo de explotación inicial

* Compra de una tarjeta regalo de **$10**
* Aplicación del cupón `SIGNUP30`
* Precio final pagado: **$7**

<figure><img src="/files/bc5524e8f1ea7a55e9ec7ea840509b2e73ac2a25" alt=""><figcaption></figcaption></figure>

* Recepción de un **código de tarjeta regalo** (ejemplo: `DbWseYFi2v`)

<figure><img src="/files/5fa37180d6b75f51231dcb8ffc5fbe182ddbac72" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/eec667b8b58825769c71c00033b964a9889e12ed" alt="" width="563"><figcaption></figcaption></figure>

Cuando se utiliza este código en la sección de Tarjetas regalo, el saldo de la cuenta aumenta en **10$** mientras que solo **7$** se gastó.

La ganancia neta es por tanto **$3**, aumentando el crédito total a **$103**.

<figure><img src="/files/41d335200ffb21d9c9add9a7ca04c60582aedb0b" alt=""><figcaption></figcaption></figure>

### Problemas lógicos identificados

1. El cupón puede usarse **varias veces** para comprar tarjetas regalo.
2. El crédito para tarjetas regalo es **todavía se aplica por su valor total**, independientemente del precio realmente pagado.
3. Confirmación del pedido a través del endpoint:

   ```bash
   /cart/order-confirmation?order-confirmed=true
   ```

permite recuperar dinámicamente el código de la tarjeta regalo.

No existe ninguna limitación que impida automatizar este proceso.

<figure><img src="/files/6ae786e906eff75238f7db4547664b52915704d4" alt=""><figcaption></figcaption></figure>

### Automatización del ataque (macro)

Para explotar el fallo a gran escala, una **macro de Burp Suite** se implementa.

<figure><img src="/files/5efce687b7b49b2e1c7d50182c0e246331c2e013" alt=""><figcaption></figcaption></figure>

#### Solicitudes interceptadas en la macro

1. Añadir un producto **Tarjeta regalo** a la cesta
2. Aplicación del cupón del boletín (`SIGNUP30`)
3. Validación del pedido (`realizar pedido`)
4. Recuperación de la respuesta de confirmación del pedido
5. Registro de la tarjeta regalo en la cuenta de usuario

<figure><img src="/files/3e72a4e5373a6d5694ca2b86a3234644889757c0" alt=""><figcaption></figcaption></figure>

#### Puntos clave de la macro

* El **código de tarjeta regalo** se extrae dinámicamente de la `carrito/confirmación-del-pedido` respuesta.

<figure><img src="/files/88e031ccea8d8e554349c2e291ea8a290bb0bb5b" alt=""><figcaption></figcaption></figure>

* Este código se reinserta luego mediante una solicitud POST al endpoint de gestión de tarjetas regalo.
* Un parámetro personalizado **parámetro** se establece en la consulta GET para almacenar el valor del código.

<figure><img src="/files/eb88d68ca5dd38a2b7a3a4c2322213230f909cba" alt=""><figcaption></figcaption></figure>

El cupón aplicado recupera su valor de una consulta previa, lo que permite su reutilización automática.

<figure><img src="/files/3c40e492239405d51f86c62f6f43c3ebd81faec2" alt=""><figcaption></figcaption></figure>

### Ejecución masiva

Una vez configurada la macro:

Todas las solicitudes para la **alcance de la URL** activan automáticamente la macro.

* Un **Intruder** la consulta se envía a la raíz del sitio.
* Configuración:
* **500 solicitudes**
* **carga útil nula**

<figure><img src="/files/1460a3d1fcb61eb8002a2742e5936de2a405e733" alt=""><figcaption></figcaption></figure>

**Grupo de recursos** limitado a **1 solicitud concurrente**

<figure><img src="/files/c5427ea015611518f4ab846b0219094005f4ae6b" alt="" width="364"><figcaption></figcaption></figure>

Este enfoque hace posible encadenar compras, confirmaciones y créditos de tarjetas regalo sin interrupción.

#### Resultado

El saldo de la cuenta aumenta indefinidamente. / Una vez que se acumula suficiente crédito, la compra de la **chaqueta de cuero Lightweight l33t** se vuelve posible sin restricción financiera.

<figure><img src="/files/3ffe7a1bbc1674d49e3e90249fd22b6444b5df35" alt="" width="375"><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://hacking-notes.jord4n.pro/es/web/business-logic/logical-flaw-allowing-you-to-generate-infinite-money.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
