# Planejamento e Lógica

### 🎯 O que são Vulnerabilidades de Lógica?

Diferente de falhas técnicas clássicas (como injeção de SQL ou XSS), as **vulnerabilidades de lógica** exploram **erros de planejamento, design e fluxo de negócio** da aplicação.

> O código está tecnicamente correto, mas a lógica está errada.

#### Exemplo clássico

```python
# Código tecnicamente correto (não tem SQL injection, XSS, etc.)
if usuario.premium:
    preco = 10
else:
    preco = 100

# Mas a lógica permite:
# "O que acontece se eu mudar o parâmetro 'premium' na requisição?"
# "E se eu pular a etapa de pagamento?"
# "E se eu completar o fluxo em ordem diferente?"
```

> *"O computador faz exatamente o que você pede. O problema é o que você NÃO pediu."*

***

### ⚠️ Por que são perigosas?

| Característica                          | Impacto                                                |
| --------------------------------------- | ------------------------------------------------------ |
| **Ferramentas de scanner não detectam** | Automação falha; só análise manual encontra            |
| **Código parece correto**               | Revisão de código tradicional pode não pegar           |
| **Explora fluxos de negócio**           | Pode causar perda financeira, acesso indevido, fraudes |
| **Específicas da aplicação**            | Cada falha é única; não há "patch genérico"            |

> *"Falhas de lógica são os bugs mais criativos — e os mais difíceis de automatizar."*

***

### 📋 Vulnerabilidades neste Diretório

| Vulnerabilidade                       | Descrição Rápida                                                              |
| ------------------------------------- | ----------------------------------------------------------------------------- |
| **Broken Access Control**             | Usuário acessa recursos ou ações que não deveria (outro usuário, admin, etc.) |
| **Business Logic Vulnerabilities**    | Falhas no fluxo de negócio (preços, quantidades, etapas, aprovações)          |
| **Cross-Site Request Forgery (CSRF)** | Forçar o navegador da vítima a executar ações sem seu consentimento           |
| **Directory Traversal**               | Acessar arquivos fora do diretório permitido (`../../etc/passwd`)             |
| **File Upload Vulnerabilities**       | Upload de arquivos maliciosos (webshells, scripts, binários)                  |

***

### 🧠 Resumo Rápido por Categoria

#### 🔐 Controle de Acesso (Broken Access Control)

```http
GET /api/user/123/profile   # Usuário 123 vê seu perfil
GET /api/user/124/profile   # Usuário 123 consegue ver o perfil do 124? (falha!)
```

* **IDOR (Insecure Direct Object Reference)** : Manipular IDs para acessar dados de outros
* **Privilégios** : Usuário comum executa ação de administrador
* **Bypass de restrições** : Acessar URL diretamente sem passar pela interface

#### 🔄 Lógica de Negócio (Business Logic)

```python
# Carrinho de compras: adicionar item com quantidade negativa?
carrinho.adicionar(produto_id=1, quantidade=-5)  # Saldo aumenta? (falha!)
```

* **Manipulação de preços** : Mudar parâmetros de desconto, frete, moeda
* **Bypass de etapas** : Pular pagamento, aprovação, verificação
* **Limites** : Ultrapassar limites de quantidade, frequência, valor
* **Concorrência** : Explorar condições de corrida (race conditions)

#### 🎭 CSRF (Cross-Site Request Forgery)

```html
<!-- Site malicioso envia requisição para o site legítimo -->
<img src="https://banco.com/transferir?conta=123&valor=1000" width="0" height="0">
```

* Vítima está logada no site legítimo
* Atacante força ação sem o conhecimento da vítima
* **Prevenção** : Tokens anti-CSRF, SameSite cookies, reautenticação

#### 📁 Directory Traversal (Path Traversal)

```http
GET /download?file=documento.pdf           # Normal
GET /download?file=../../etc/passwd        # Traversal (falha!)
```

* Acessar arquivos fora do diretório base
* Ler configurações, senhas, código-fonte
* **Prevenção** : Sanitizar `..`, usar caminhos absolutos, whitelist

#### 📤 File Upload Vulnerabilities

```http
POST /upload
Content-Type: image/jpeg

<?php system($_GET['cmd']); ?>  # Webshell disfarçada de imagem
```

* Upload de **webshells** (código executável)
* Bypass de extensões, magic numbers, Content-Type
* **Prevenção** : Validar extensão, magic number, renomear arquivo, armazenar fora do webroot

***

### 🎯 Exemplo Rápido (Broken Access Control - IDOR)

```http
# Cenário: Aplicação de e-commerce

# Usuário comum (ID 12345) acessa seu próprio pedido
GET /api/orders/12345

# Ele tenta acessar pedido de outro usuário
GET /api/orders/12346

# Se funcionar → IDOR! O atacante pode ver dados de todos os usuários
```

***

### 🧪 Como Testar Falhas de Lógica?

| Técnica               | Descrição                                 |
| --------------------- | ----------------------------------------- |
| **Mudar parâmetros**  | Preço, quantidade, ID, status, moeda      |
| **Pular etapas**      | Acessar URL final sem passar pelo fluxo   |
| **Ordem diferente**   | Executar etapas em sequência não prevista |
| **Repetir ações**     | Enviar mesma requisição múltiplas vezes   |
| **Negativos e zeros** | Quantidade negativa, valor zerado         |
| **Concorrência**      | Duas requisições simultâneas              |

***

### 🛡️ Recomendações Gerais

| Problema                          | Solução                                                                   |
| --------------------------------- | ------------------------------------------------------------------------- |
| Acesso a recursos de outros       | Verificar permissão a CADA requisição (nunca confiar no front-end)        |
| Manipulação de preços/quantidades | Validar no servidor; usar dados internos, não parâmetros do cliente       |
| CSRF                              | Tokens anti-CSRF, SameSite=Lax/Strict, reautenticação para ações críticas |
| Directory Traversal               | Sanitizar `..` e caminhos absolutos; whitelist de arquivos permitidos     |
| File Upload                       | Validar extensão, magic number, renomear, armazenar fora do webroot       |
| Lógica de negócio                 | Testar TODOS os fluxos (positivos, negativos, borda, concorrência)        |

### 🔗 Links Úteis (Introdução)

* [OWASP – Broken Access Control](https://owasp.org/Top10/A01_2021-Broken_Access_Control/)
* [OWASP – Business Logic Vulnerabilities](https://owasp.org/www-community/vulnerabilities/Business_logic_vulnerability)
* [PortSwigger – Logic Flaws](https://portswigger.net/web-security/logic-flaws)
* [CSRF – OWASP](https://owasp.org/www-community/attacks/csrf)


---

# Agent Instructions: 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:

```
GET https://0xmorte.gitbook.io/bibliadopentestbr/tecnicas/web/planejamento-e-logica.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
