Questo repository contiene il materiale per il workshop "Python e Cybersecurity: Caccia alle vulnerabilità" presentato al PyCon Italia 2025. Un'esperienza pratica di ethical hacking usando Python contro un'applicazione web vulnerabile.
Imparare le basi dell'ethical hacking attraverso un approccio pratico:
- Scoprire vulnerabilità comuni nelle web application
- Sfruttare le vulnerabilità usando Python
- Implementare difese efficaci
- Sviluppare una mentalità di sicurezza
app.py- Applicazione Flask con vulnerabilità intenzionaliviaggio_italia.db- Database SQLite preconfiguratorequirements.txt- Dipendenze Python essenziali
templates/- Template HTML (login, profili, admin, etc.)static/- CSS, immagini e assetsuploads/- Directory per upload di file
# 1. Clona il repository
git clone https://github.com/giovannipedroncelli/workshop_PyConIT25.git
cd workshop_PyConIT25
# 2. Installa le dipendenze
pip install -r requirements.txt
# 3. Avvia l'applicazione vulnerabile
python app.py
# 4. Apri il browser
# http://localhost:5000# Verifica che l'app sia raggiungibile
curl http://localhost:5000Il workshop segue un approccio pratico strutturato in 5 fasi:
- Configurazione dell'ambiente
- Comprensione delle basi HTTP
- Presentazione del target "Viaggio Italia Blog"
- Mappatura dell'applicazione
- Identificazione della superficie di attacco
- Tool:
scripts/recon.py
- Analisi delle vulnerabilità presenti
- Testing manuale e automatico
- Tools: Scripts di exploitation specifici
- Demonstration pratica degli attacchi
- Automation con Python
- Tools: Tutti gli script in
scripts/
- Implementazione delle difese
- Best practices di sicurezza
- Principi OWASP
L'applicazione "Viaggio Italia Blog" contiene le seguenti vulnerabilità intenzionali:
- Endpoint:
/login(POST),/search(GET) - Causa: Input utente direttamente nelle query SQL
- Endpoint:
/post/<id>/comment(POST) - Tipo: Stored XSS nei commenti
- Endpoint:
/profile/<user_id>(GET) - Causa: Nessun controllo di accesso sui profili
- Test: Accesso diretto a profili di altri utenti
- Endpoint:
/admin/system(POST) - Causa: shell=True con input utente non validato
- Endpoint:
/download(GET) - Causa: Nessuna validazione dei percorsi file
- Test:
../../../etc/passwd
- Endpoint:
/settings/password(POST) - Causa: Nessun token CSRF
👑 Admin: admin / admin123
👤 User: maria / password123
👤 User: luca / password123
👤 User: giulia / password123
🏠 Home: /
🔍 Search: /search
👤 Login: /login
🏛️ Admin Panel: /admin
⚙️ System Tools: /admin/system
📁 File Download: /download
🔧 Settings: /settings/password
👥 Profiles: /profile/<id>
Durante il workshop imparerai a implementare:
- Prepared Statements per prevenire SQL Injection
- Input Sanitization per prevenire XSS
- Access Control per prevenire IDOR
- Input Validation per prevenire Command Injection
- Path Validation per prevenire Path Traversal
- CSRF Tokens per prevenire CSRF
- 🎓 Solo scopi educativi: Questa applicazione è creata esclusivamente per formazione
- 🎯 Ethical Hacking: Le tecniche mostrate devono essere usate solo su sistemi autorizzati
- 🔒 Ambiente controllato: Non utilizzare mai questi attacchi su sistemi di produzione
- 📖 Apprendimento responsabile: L'obiettivo è imparare a difendere, non ad attaccare
👨💻 Autore: Giovanni Pedroncelli
📧 Contatto: gi.pedroncelli@gmail.com
🐙 GitHub: github.com/giovannipedroncelli
🎓 Evento: PyCon Italia 2025