← Tutti i cheatsheet

eJPT · Exploitation & Post-Ex

Manual Exploitation e Searchsploit

Difficoltà: Intermediate Time to Master: 2h Prerequisiti: 04-Vulnerability-Assessment/03-CVE-CVSS-Scoring.md Lab: INE PTS labs / TryHackMe, Vulnversity


Obiettivo

Prima o poi capita: cerchi l’exploit su Metasploit e non c’è, oppure c’è ma non fa esattamente quello che ti serve. È il momento in cui passi da “uso uno strumento già pronto” a “leggo codice scritto da qualcun altro e lo adatto al mio target esatto” — path, versione, LHOST/LPORT, a volte un offset. Suona più complicato di quanto sia: la parte tecnica di solito è alla portata, la vera competenza è la disciplina di leggere il PoC per intero prima di lanciarlo alla cieca.


Concetti chiave

Perché non basta sempre Metasploit

Molti CVE non hanno un modulo Metasploit ufficiale, o il modulo esiste ma richiede opzioni non standard. Saper leggere ed adattare un PoC da Exploit-DB è una competenza richiesta nell’eJPTv2: il candidato deve dimostrare di capire cosa fa uno script, non solo di saperlo lanciare.

Anatomia di un PoC pubblico

Sezione tipica Cosa contiene
Header commento CVE, autore, versione software target
Variabili configurabili IP/porta target, path, offset, shellcode
Funzione di exploit payload costruito ed inviato al target
Note d’uso come compilare/lanciare (es. python3 exploit.py <target>)

Strumenti

Tool Comando base Output Note
searchsploit searchsploit <software> <versione> lista PoC locali (mirror Exploit-DB) database offline, si aggiorna con searchsploit -u
searchsploit -m searchsploit -m <id> copia il PoC nella cartella corrente comodo per editarlo senza toccare il mirror
searchsploit -x searchsploit -x <id> mostra il PoC a schermo utile per leggere prima di copiare
gcc gcc exploit.c -o exploit binario compilato per PoC in C, spesso serve -m32 su target 32-bit
Exploit-DB (web) ricerca online PoC più aggiornati del mirror locale usa quando searchsploit non trova nulla

Payload / Esempi

Esempio 1: ricerca e copia di un PoC noto (vsftpd 2.3.4)

searchsploit vsftpd
searchsploit -m unix/remote/49757.py
cat 49757.py

Output atteso:

-------------------------------------------------------------- ---------------------------------
 Exploit Title                                                |  Path
-------------------------------------------------------------- ---------------------------------
vsftpd 2.3.4 - Backdoor Command Execution                     | unix/remote/49757.py
-------------------------------------------------------------- ---------------------------------

Spiegazione: il PoC per vsftpd 2.3.4 sfrutta una backdoor inserita deliberatamente nel codice sorgente compromesso (non una vulnerabilità di memoria): l’invio di uno username contenente :) apre una shell sulla porta 6200/tcp. È l’esempio da manuale di “leggi il PoC prima di lanciarlo”.

Esempio 2: adattare offset/target in un PoC Python

# apri il file e modifica le variabili in alto
python3 -c "print(open('49757.py').read()[:400])"
# tipiche righe da adattare
target = "10.10.10.5"
port   = 21

Spiegazione: quasi ogni PoC ha un blocco di configurazione iniziale con IP/porta target da cambiare a mano; PoC per buffer overflow hanno anche offset/badchars che vanno ricalcolati per l’ambiente specifico (fuori scope eJPTv2 in dettaglio, ma va riconosciuto quando serve).

Esempio 3: compilare un exploit C locale

gcc -o exploit exploit.c
./exploit
# se il target e 32-bit e la macchina d'attacco e 64-bit
gcc -m32 -o exploit exploit.c

Output atteso:

[+] Exploit compilato con successo
[+] Eseguo contro target locale, attendo shell...

Spiegazione: molti PoC per privilege escalation locale sono scritti in C: vanno compilati sulla macchina target (o con architettura compatibile) prima dell’esecuzione.


Evasion / Bypass Techniques

Non applicabile in senso stretto: la difficoltà qui è adattare correttamente il PoC, non evadere difese. Presta attenzione ad AV/EDR se il PoC genera un binario che viene droppato su un endpoint Windows moderno: in ambito eJPTv2 i lab sono generalmente senza AV avanzato.


Lab Hands-On

Lab 1: TryHackMe, Vulnversity

Obiettivo: enumerare, trovare un file upload vulnerabile ed ottenere una shell, poi cercare un PoC per l’escalation successiva Difficulty: Facile Time: 1h

Walkthrough breve:

  1. Enumera i servizi con nmap -sV -sC
  2. Identifica la versione software esatta di ogni servizio esposto
  3. Cerca PoC con searchsploit per ogni versione trovata
  4. Adatta e lancia il PoC più pertinente, verifica la shell ottenuta

Common Mistakes

  • Lanciare un PoC senza leggerlo -> rischio di eseguire codice non compreso o addirittura dannoso per il proprio sistema
  • Non aggiornare il mirror locale (searchsploit -u) -> PoC recenti mancanti
  • Ignorare la compatibilità di architettura (32 vs 64 bit) -> exploit che fallisce senza un motivo chiaro


Connessioni


Checklist di padronanza

  • So cercare e leggere un PoC con searchsploit
  • So adattare IP/porta/path in un PoC prima di lanciarlo
  • So compilare un exploit C semplice
  • Capisco quando serve un PoC manuale invece di un modulo Metasploit