# Back-End

## ⚙️ O que é Back-End?

**Back-End** é a parte da aplicação web que o usuário **não vê** — tudo que acontece no servidor, antes do front-end receber a resposta.

```
Usuário → Navegador → Front-End → Back-End (servidor, banco de dados, APIs)
                                    ↑
                            (você não vê isso)
```

### Componentes básicos do Back-End

| Componente              | Função                    | Exemplo                        |
| ----------------------- | ------------------------- | ------------------------------ |
| **Servidor**            | Processa requisições      | Apache, Nginx, IIS             |
| **Linguagem**           | Lógica da aplicação       | PHP, Python, Java, C#, Node.js |
| **Banco de Dados**      | Armazena dados            | MySQL, PostgreSQL, MongoDB     |
| **APIs**                | Comunicação com front-end | REST, GraphQL                  |
| **Sistema Operacional** | Base do servidor          | Linux, Windows Server          |

### Onde roda?

* ✅ **No servidor** (controlado pela empresa/organização)
* ✅ **Em infraestrutura** (datacenter, nuvem, on-premise)

{% hint style="info" %}
**Diferença crucial:** Back-End é **privado** — o código não é visível para o usuário comum. Isso torna as vulnerabilidades de back-end **potencialmente mais graves**, pois o atacante pode ter acesso a dados ou comandos privilegiados.
{% endhint %}

***

## ⚠️ Por que o Back-End é um alvo valioso?

Diferente do front-end (que roda no dispositivo do usuário), o back-end **controla toda a lógica de negócio, dados e regras da aplicação**.

### Consequências de uma falha no back-end

* 🔴 Acesso a dados sensíveis de **todos os usuários**
* 🔴 Execução de comandos no **servidor**
* 🔴 Assunção de **identidade privilegiada**
* 🔴 **Comprometimento total** da aplicação e infraestrutura
* 🔴 Acesso a **outros sistemas** da rede interna

> *"O back-end é o cofre. O front-end é a vitrine."*

***

## 📋 Vulnerabilidades de Back-End (Neste Diretório)

Este diretório documenta as principais falhas que afetam o lado servidor (back-end) das aplicações web.

| Vulnerabilidade           | Descrição Rápida                                                                   |
| ------------------------- | ---------------------------------------------------------------------------------- |
| **Open Redirects**        | O servidor redireciona o usuário para qualquer URL externa sem validação           |
| **OS Command Injection**  | Injeção de comandos do sistema operacional no servidor                             |
| **Shell Shock**           | Vulnerabilidade no Bash (Unix/Linux) que permite execução remota de comandos       |
| **Autenticação**          | Falhas em processos de login, sessão, recuperação de senha, etc. *(subdiretório)*  |
| **Planejamento e Lógica** | Falhas de fluxo de negócio, validação de regras, bypass de etapas *(subdiretório)* |

***

## 🧠 Resumo Rápido por Categoria

### 🔐 Falhas de Autenticação (subdiretório)

* Login fraco ou sem proteção
* Sessões mal gerenciadas
* Recuperação de senha vulnerável
* Falhas em JWT, OAuth, SSO

> O atacante assume a identidade de outro usuário (geralmente um administrador).

### 🧩 Falhas de Lógica e Planejamento (subdiretório)

* Bypass de fluxos de compra
* Manipulação de preços ou quantidades
* Escalonamento vertical de privilégios
* Falhas em workflows de aprovação

> O atacante explora a **regra de negócio mal implementada**, não uma falha técnica tradicional.

### 🔀 Open Redirects

```http
GET /redirect?url=https://site-malicioso.com
HTTP/1.1 302 Found
Location: https://site-malicioso.com
```

* O servidor aceita qualquer URL no parâmetro de redirecionamento
* Usado em ataques de phishing (o link parece legítimo, mas redireciona para o site do atacante)

### 💻 OS Command Injection

```python
# Código vulnerável
import os
arquivo = request.GET.get('arquivo')
os.system(f'cat {arquivo}')  # usuário pode passar "; rm -rf /"
```

* O atacante insere comandos do sistema no parâmetro
* Pode ler arquivos, instalar backdoors, desligar o servidor

### 🐚 Shell Shock (CVE-2014-6271)

```bash
# Vulnerabilidade no Bash
env x='() { :;}; echo vulneravel' bash -c "echo test"
```

* Permite execução de código remoto em servidores que usam Bash
* Afetou CGI (Common Gateway Interface) em servidores web

***

## 🎯 Exemplo Rápido (OS Command Injection)

```bash
# Requisição normal
GET /ping?ip=192.168.1.1

# Comando executado no servidor
ping -c 4 192.168.1.1

# Requisição maliciosa
GET /ping?ip=192.168.1.1; cat /etc/passwd

# Comando executado
ping -c 4 192.168.1.1; cat /etc/passwd
# O segundo comando também executa!
```

***

## 🛡️ Recomendações Gerais para Back-End

| Problema          | Solução                                                        |
| ----------------- | -------------------------------------------------------------- |
| Open Redirects    | Validar URLs de redirecionamento (lista branca de domínios)    |
| Command Injection | Evitar `system()`, `exec()`, `eval()`; usar APIs seguras       |
| Shell Shock       | Atualizar Bash e evitar uso de CGI vulnerável                  |
| Autenticação      | Implementar MFA, logout adequado, proteção contra brute force  |
| Lógica de negócio | Testar todos os fluxos (limites de quantidade, preços, etapas) |
| Validação         | **Nunca** confiar em dados enviados pelo cliente               |

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

* [OWASP Top 10 – Back-End](https://owasp.org/www-project-top-ten/)
* [OWASP Command Injection](https://owasp.org/www-community/attacks/Command_Injection)
* [Shell Shock – CVE-2014-6271](https://nvd.nist.gov/vuln/detail/CVE-2014-6271)
* [Open Redirects – OWASP](https://owasp.org/www-community/vulnerabilities/Unvalidated_Redirects_and_Forwards)


---

# 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/back-end.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.
