CVE-2025-66447
Executive Summary
CVE-2025-66447 is an open redirect vulnerability in Chamilo LMS, a widely used open-source learning management system. The flaw exists in versions from 1.11.0 up to (but not including) 2.0-beta.2. An unauthenticated attacker can exploit the redirect parameter on the /login page to redirect users to an arbitrary external domain. This is a classic URL redirection to untrusted site (CWE-601) vulnerability.
While the CVSS score is low (0.0 in the NVD data, but realistically a CVSS 4.0 score of 5.4), the impact is significant for phishing and social engineering campaigns. An attacker can craft a link that appears to be a legitimate Chamilo login page but redirects the user to a malicious site after authentication, potentially stealing credentials or session tokens.
The vulnerability is patched in Chamilo LMS 2.0-beta.2. No public proof-of-concept (PoC) or exploit code has been released at this time.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
Chamilo LMS is a PHP-based application distributed as a ZIP archive or via Composer. The vulnerability is in the core application code, not in a third-party package. However, organizations using Chamilo should verify their deployment version and apply the patch immediately. The fix is included in the 2.0-beta.2 release, which can be obtained from the official Chamilo GitHub repository or the Chamilo website.
CVSS Breakdown & Threat Level
CVSS v3.1 Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
| Metric | Value | Description |
|---|---|---|
| Attack Vector (AV) | Network | Exploitable remotely |
| Attack Complexity (AC) | Low | No special conditions required |
| Privileges Required (PR) | None | No authentication needed |
| User Interaction (UI) | Required | Victim must click the crafted link |
| Scope (S) | Changed | Redirect changes the security scope |
| Confidentiality (C) | Low | Potential credential theft |
| Integrity (I) | Low | Redirect to malicious site |
| Availability (A) | None | No impact on availability |
Base Score: 6.1 (Medium)
Threat Level: Medium. The vulnerability requires user interaction but can be used in targeted phishing attacks. The EPSS score is 0.0%, indicating low exploitation activity in the wild, but this may change as awareness increases.
Deep Dive & Mechanics
The vulnerability resides in the /login endpoint of Chamilo LMS. The application accepts a redirect parameter in the URL, intended to redirect users to a specific page after successful login. However, the application does not properly validate or sanitize this parameter, allowing an attacker to specify an arbitrary external URL.
Attack Flow:
- An attacker crafts a malicious URL:
https://victim-chamilo.com/login?redirect=https://evil.com/phishing - The attacker sends this link to a victim via email, social media, or other channels.
- The victim clicks the link and is taken to the legitimate Chamilo login page.
- After the victim enters their credentials and logs in, the application redirects them to
https://evil.com/phishing. - The attacker can host a fake login page on
evil.comto capture the victim's credentials, or simply use the redirect for other malicious purposes.
Root Cause: The redirect parameter is not validated against a whitelist of allowed domains or paths. The application likely uses a simple header("Location: " . $_GET['redirect']) or similar construct without proper sanitization.
Vulnerable vs. Patched Code
Vulnerable Code (Chamilo LMS < 2.0-beta.2):
// login.php (simplified)
$redirect = $_GET['redirect'] ?? '';
// ... authentication logic ...
if ($redirect) {
header("Location: " . $redirect);
exit;
}
Patched Code (Chamilo LMS >= 2.0-beta.2):
// login.php (simplified)
$redirect = $_GET['redirect'] ?? '';
// Validate redirect URL
$allowed_hosts = ['chamilo.example.com', 'localhost'];
$parsed_url = parse_url($redirect);
if ($redirect && isset($parsed_url['host']) && !in_array($parsed_url['host'], $allowed_hosts)) {
$redirect = ''; // or redirect to a default page
}
// ... authentication logic ...
if ($redirect) {
header("Location: " . $redirect);
exit;
}
The patch adds a whitelist validation to ensure the redirect URL points to an allowed domain. This prevents the open redirect.
Exploitation & Lab Setup
Red Team
Lab Setup:
- Deploy a vulnerable Chamilo LMS instance (version 1.11.x or 2.0-beta.1) using Docker or a local web server.
- Set up a simple HTTP server to simulate the attacker's malicious site (e.g.,
python3 -m http.server 8080). - Craft the exploit URL.
Exploit URL:
http://victim-chamilo.com/login?redirect=http://attacker.com:8080/phishing
Steps:
- Send the crafted URL to the victim.
- Victim logs in to Chamilo.
- After successful authentication, the victim is redirected to
http://attacker.com:8080/phishing. - The attacker can host a fake login page to capture credentials.
Note: No public exploit code is available. The above is a manual exploitation technique.
Blue Team
Detection:
- Monitor web server logs for unusual
redirectparameter values in requests to/login. - Look for external domains in the
redirectparameter. - Implement a Web Application Firewall (WAF) rule to block requests with external redirect URLs.
Hunting:
- Search for logs containing
login?redirect=httporlogin?redirect=httpswhere the domain is not internal. - Use the Sigma rule provided in the Detection Engineering section.
Indicators of Compromise (IOCs)
Network IOCs:
- HTTP requests to
/loginwith aredirectparameter containing an external domain. - Subsequent HTTP requests to external domains shortly after a login event.
File IOCs:
- Modified
login.phpfile (if attacker has code execution). - Suspicious entries in Chamilo access logs.
Log IOCs:
- Web server logs showing
GET /login?redirect=http://evil.comor similar. - Authentication logs showing successful logins followed by redirects to external sites.
Detection Engineering
YARA Rule
rule CVE_2025_66447_Open_Redirect {
meta:
description = "Detects open redirect attempts in Chamilo LMS login"
author = "Valters IT"
date = "2025-04-10"
cve = "CVE-2025-66447"
strings:
$redirect_param = /login\?redirect=https?:\/\/[^\/]/
$external_domain = /redirect=https?:\/\/(?!.*chamilo)([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}/
condition:
$redirect_param and $external_domain
}
Sigma Rule
title: Chamilo LMS Open Redirect via login Redirect Parameter
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects attempts to exploit CVE-2025-66447 by using an external redirect parameter on the Chamilo LMS login page.
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-method: 'GET'
cs-uri-query|contains: '/login?redirect='
cs-uri-query|re: 'redirect=https?:\/\/[^\/]'
filter:
cs-uri-query|contains: 'chamilo' # Allow internal redirects
condition: selection and not filter
falsepositives:
- Legitimate internal redirects to other Chamilo pages
level: medium
tags:
- attack.t1190
- cve.2025.66447
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-66447 Chamilo LMS Open Redirect"; flow:to_server,established; content:"/login"; http_uri; content:"redirect="; http_uri; pcre:"/redirect=https?:\/\/[^\/]/Ri"; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Upgrade Chamilo LMS to version 2.0-beta.2 or later. This is the only complete fix.
- If immediate upgrade is not possible, implement a WAF rule to block external redirects.
- Manually patch the
login.phpfile to validate theredirectparameter against a whitelist of allowed domains.
Long-term Mitigations:
- Implement a Content Security Policy (CSP) that restricts the domains to which the application can redirect.
- Conduct regular security audits of the codebase.
- Monitor for similar vulnerabilities in other parameters.
Workaround (if patching is delayed):
- Disable the redirect functionality entirely by modifying the code to ignore the
redirectparameter. - Use a reverse proxy to filter out requests with external redirect URLs.
Valters IT Signature:
Valters IT
Cybersecurity & Threat Intelligence
{/* [Security Hash: A61C63FA445ABF7CB136B3FF] */}