Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
CVE-2026-19632 — Unauthenticated account takeover PoC for TranslatePress Multilingual <= 3.3.1 (WordPress) | Kitploit
Tools/GitHubGitHub/ghostpels/cve-2026-19632
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingAuthenticationRed Teaming
GitHubghostpels/cve-2026-19632

CVE-2026-19632

Unauthenticated account takeover PoC for TranslatePress Multilingual <= 3.3.1 (WordPress)

View Repository
5h 14m agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

CVE-2026-19632 — TranslatePress ≤ 3.3.1 Unauthenticated Account Takeover PoC

CVE CVSS Affected Patched Python License

Mass account-takeover tool for CVE-2026-19632, an unauthenticated account takeover in the TranslatePress – Multilingual WordPress plugin (≤ 3.3.1) caused by password reset link disclosure. One command per target list — the full chain runs automatically, and every successful takeover is written to the output file the moment it happens.

Disclaimer — authorized use only. This tool changes real account passwords and triggers real password-reset emails. Use it exclusively against systems you own or have explicit written permission to test. The author is not responsible for any misuse.


Vulnerability summary

CVECVE-2026-19632
ProductTranslatePress – Multilingual (WordPress plugin, slug translatepress-multilingual), by Cozmoslabs
AffectedAll versions ≤ 3.3.1 (400,000+ active installations)
Patched3.3.2 (fix: current_user_can check on the public dictionary AJAX handler)
CVSS 3.19.8 CRITICAL — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H (CNA: Wordfence)
CWECWE-200 (Sensitive Information Exposure) + CWE-640 (Weak Password Recovery Mechanism)
ImpactUnauthenticated admin account takeover

The chain

  1. Public AJAX nonce — every secondary-language page prints trp_data including the get_translations nonce. Nonces for logged-out visitors are public by design; the plugin relies on them for security.
  2. Reset URL stored in the translation dictionary — the plugin hooks wp_mail and translates outgoing emails in the recipient's locale. When an anonymous attacker triggers wp-login.php?action=lostpassword for an admin whose profile locale is a published secondary language, the entire reset email — including the plaintext wp-login.php?action=rp URL with the valid reset key — is inserted into wp_trp_dictionary_<default>_<locale> synchronously inside the attacker's request. SMTP does not even need to work.
  3. Public dictionary read — trp_get_translations_regular is registered as wp_ajax_nopriv and, before 3.3.2, only verified the public nonce. Anyone can enumerate the dictionary by string_ids and extract the key.

Full technical write-up: CVE-2026-19632-REPORT.md


Tool — cve-2026-19632.py

A single self-contained script that executes the complete chain for every target in a list:

  1. Detect TranslatePress (page signature + readme.txt fallback)
  2. Extract the public nonce and all published secondary languages (trp_data + language-switcher probing)
  3. Verify the unpatched public AJAX handler answers unauthenticated
  4. Discover usernames (REST API → author redirect → common guesses, each verified through the wp-login error oracle)
  5. Harvest already-stored reset URLs first — no trigger needed
  6. Otherwise trigger a password reset per candidate until the URL leaks
  7. Reset the password (WP ≤ 6.x and WP 7.0 flows), log in, and — the second it succeeds — append url|username|password to the output file (flush, thread-safe, no waiting for the run to finish)

Robustness built in:

  • Stale-key fallback — harvested keys that were already used/expired are detected and a fresh reset is triggered automatically.
  • Multi-language coverage — the leak is looked up in every secondary language dictionary, not just the first one.
  • Network retry, proxy support, colorized logs (colorama with plain fallback).
  • Random strong password per target (or a fixed one via --new-password).

Requirements

root@kitploit:~
pip install -r requirements.txt

Usage

root@kitploit:~
# full execution against a list of targets, 20 threads
python cve-2026-19632.py -l targets.txt -o vuln.txt -t 20

# fixed password for every target
python cve-2026-19632.py -l targets.txt -o vuln.txt -t 10 --new-password 'Pwn3d!2026'

# through a proxy
python cve-2026-19632.py -l targets.txt -o vuln.txt -t 10 --proxy http://127.0.0.1:8080
OptionDescription
-l, --listFile with one target URL per line (# comments allowed)
-o, --outputResults file, format url|username|password (default vuln.txt)
-t, --threadsConcurrent workers (default 10)
--new-passwordFixed password for all targets (default: random 14-char per target)
--timeoutPer-request timeout in seconds (default 15)
--proxyHTTP proxy, e.g. http://127.0.0.1:8080
--no-colorDisable colored output

Demo

Terminal log against a lab instance (WordPress 7.0.4 + TranslatePress 3.3.1, ar default → en_US secondary) — values sanitized:

root@kitploit:~
[00:09:06] [INFO] CVE-2026-19632 takeover tool - 3 target(s), 3 thread(s)...
[00:09:06] [SKIP]    http://example.com (no TranslatePress)
[00:09:07] [INFO]   http://TARGET TP found - langs: ar->en_US, nonce=a1b2c3d4e5
[00:09:09] [INFO]   username candidates: ['admin', ...]
[00:09:09] [WARN]   attempt 1/3 failed (stale key)
[00:09:09] [WARN]   attempt 2/3 failed (stale key)
[00:09:09] [WARN]   attempt 3/3 failed (stale key)
[00:09:09] [INFO]   all keys stale - fresh reset trigger...
[00:09:15] [TAKEOVER] http://TARGET SUCCESS - user='admin' password='Pwn3d!2026'
[00:09:15] [INFO]   done. summary: ERROR=1 | SKIP=1 | TAKEOVER=1

vuln.txt (written live, at the moment of success):

root@kitploit:~
http://TARGET|admin|Pwn3d!2026

Treat vuln.txt as a sensitive artifact — it contains live credentials and/or valid reset keys. Add it to .gitignore.

Conditions required for a target to be exploitable

  • TranslatePress ≤ 3.3.1 with at least one published secondary language
  • Automatic string saving ON (advanced setting "Manual Translation Only" OFF — the default)
  • The target account's profile locale = a secondary language
  • A discoverable username
  • Password reset not otherwise blocked

Not required: a working mail server (the URL is stored inside the wp_mail filter, before the send attempt).


Mitigation

  1. Update TranslatePress to 3.3.2 or later (official fix).
  2. Defense in depth: enable "Manual Translation Only", keep admin profile locales on the site default language, rotate credentials on any installation that ran ≤ 3.3.1 with a secondary language.
  3. Monitor admin-ajax.php logs for sequential string_ids enumeration with a public security nonce.

Disclosure timeline

DateEvent
2026-08-12CVE-2026-19632 reserved
2026-08-13TranslatePress 3.3.2 released with the fix
2026-08-25/26Wordfence publishes the advisory; 8,618 exploitation attempts blocked within 24h
2026-08-28ThaiCERT advisory

Credits

  • Vulnerability discovery: Yuto Hyakumoto (momopon1415) and the Wordfence team, credited in the 3.3.2 changelog.
  • Proof of concept: ghostpel

References

  • Wordfence advisory
  • TranslatePress 3.3.2 changelog
  • ThaiCERT advisory
  • IONIX Threat Center
  • CIRCL vulnerability-lookup

License

MIT © 2026 ghostpel

Download Tool