CVE-2026-52881 json
MantisBT: Reflected XSS in admin/install.php via unescaped printf
published 2026-07-15 3 mo ago modified 2026-07-15 3 mo ago also GHSA-vcrw-4xvv-jh49
- cvss
- —
- not scored
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- —
- no EPSS score yet
- public exploits
- 0
- none known
Summary
MantisBT 2.28.3 and earlier contains six reflected XSS injection points in `/admin/install.php`. User-supplied parameters are echoed into HTML without escaping via an unescaped printf format string. No authentication is required.
A Content Security Policy (script-src 'self') prevents inline JavaScript execution, but the CSP is missing a form-action directive, allowing exploitation via credential-phishing form injection and <meta> open redirects.
### Impact - Credential phishing: Attacker crafts a URL that renders a fake login form on the real MantisBT admin page. Admin credentials are submitted to an attacker-controlled server. - Open redirect: Victim is silently redirected to a phishing or malware site. - UI manipulation: CSS injection can hide legitimate page content and overlay attacker-controlled HTML, enabling social engineering.
### Patches - https://github.com/mantisbt/mantisbt/commit/297773fbb238c39a153bd888431b41a176132098
### Workarounds Remove the `/admin` directory, as [recommended in the Admin Guide](https://mantisbt.org/docs/master/en-US/Admin_Guide/html-desktop/#admin.install.postcommon)
### Resources - https://mantisbt.org/bugs/view.php?id=37103 - related advisory [GHSA-77x8-3v3h-hrhv](https://github.com/mantisbt/mantisbt/security/advisories/GHSA-77x8-3v3h-hrhv)
### Credits McCaulay Hudson (@_McCaulay) of watchTowr
Patch / fix
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| packagist | mantisbt/mantisbt | <2.28.4 |
2.28.4 |
Classification
- Weakness
-
- CWE-79 Improper Neutralization of Input During Web Page Generation
References
Sources
- GitHub Advisory GHSA-vcrw-4xvv-jh49
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.