CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2025-58048

CVE-2025-58048: Remote Code Execution via Unrestricted Ticket Attachment Uploads in Paymenter

Amit Schendel
Amit Schendel
Senior Security Researcher

Jun 22, 2026·5 min read·2 visits

Executive Summary (TL;DR)

Paymenter versions prior to 1.2.11 allow low-privilege authenticated users to execute arbitrary system commands by uploading malicious PHP scripts through the support ticket attachment feature.

An unrestricted file upload vulnerability in Paymenter's support ticket system (prior to version 1.2.11) allows authenticated users to upload arbitrary PHP scripts to a web-accessible directory. The application fails to validate file extensions or MIME types before storing the files, enabling remote code execution under the web server's privilege context.

Vulnerability Overview

Paymenter is an open-source hosting webshop solution designed to streamline billing and support operations. The application architecture leverages the Laravel framework and integrates Livewire to provide reactive user interfaces.

The vulnerability exists in the support ticketing system of Paymenter. Specifically, the component managing ticket creation and view operations allowed authenticated users to upload files as attachments. The underlying implementation failed to restrict file extensions or evaluate the payload contents.

Because the uploads are mapped directly to a publicly reachable web directory, this configuration introduces a significant attack surface. An attacker with standard client privileges can place executable scripts on the host filesystem and run them remotely. The security boundary between low-privilege application access and server system execution is bypassed.

Root Cause Analysis

The root cause of CVE-2025-58048 is an unrestricted file upload flaw classified under CWE-434. The flaw lies within the completeUpload method implemented in the Livewire components for creating and viewing tickets. This method uses Laravel's local storage driver to persist temporary files uploaded via the frontend editor.

When processing a ticket attachment, the code invokes the standard $attachment->store('public/ticket-attachments') function. This operation saves the uploaded file while retaining its original user-supplied file extension. The server does not perform validation checks on the file extension, MIME type, or file header signature.

Laravel's file storage structure maps the storage/app/public directory directly to the web-accessible public/storage folder via a symbolic link. As a result, any file written to public/ticket-attachments is accessible over HTTP. This design lets a client request the file directly, forcing the web server to interpret the resource.

Code Analysis and Comparison

The vulnerability was patched in commit 87c3db42282ada1e3cda54b9a01f846926c0669b by completely removing the ticket attachment capability. This strategy eliminates the file upload attack surface.

In the vulnerable version, the completeUpload method stored attachments without verification:

public function completeUpload($filename)
{
    foreach ($this->attachments as $key => $attachment) {
        if ($attachment->getFilename() === $filename) {
            // Vulnerable: stores the file with its original extension
            $url = $attachment->store('public/ticket-attachments');
            $url = Storage::url($url);
            return url($url);
        }
    }
}

The fix completely deleted this block from both app/Livewire/Tickets/Create.php and app/Livewire/Tickets/Show.php. The WithFileUploads trait was also removed from the classes.

Additionally, the frontend EasyMDE editor configuration in themes/default/views/components/easymde-editor.blade.php was updated to disable the image upload capability. The uploadImage option was set from true to false, and the imageUploadFunction which triggered the Livewire upload sequence was removed. This complete deprecation of the feature ensures that no variant attacks can exploit the same file path, making the fix highly effective.

Exploitation Methodology

Exploitation requires standard authenticated user credentials. The attacker must navigate to the support ticket area of the client portal, where the EasyMDE markdown editor is active. This interface provides the channel for uploading attachment resources.

An attacker can construct a payload containing PHP code, such as a basic backdoor. Using the markdown editor's image upload function, the attacker sends the PHP file to the server. The client-side framework handles the initial chunked transport, placing the file in a temporary Laravel folder.

The editor then invokes the completeUpload method via a Livewire event payload, which moves the file to the web-exposed storage directory. The server returns the final storage URL to the client.

To execute the payload, the attacker makes a direct HTTP GET request to the returned URL. Because the default configuration of the web server parses any file with a .php extension through PHP-FPM, the shell executes with the permissions of the www-data or equivalent web user. This allows command execution and system access.

Detailed Impact Assessment

Successful exploitation allows an authenticated attacker to achieve full remote code execution on the server. The execution context is defined by the privileges of the system user running the PHP-FPM process.

From this position, the attacker can access the system filesystem. This enables the theft of sensitive configuration files, including the .env file containing application keys, mail credentials, and database passwords. With database access, the attacker can extract client data, billing histories, and hosting account details.

Furthermore, the attacker can use the compromised container to pivot into the internal network or the virtualization hypervisors managed by Paymenter. Since Paymenter orchestrates hosting nodes (such as Pterodactyl or Virtualizor), a compromise of the main portal can lead to unauthorized control over downstream virtual machines and infrastructure environments.

Detection and Remediation

The most effective resolution is upgrading Paymenter to version 1.2.11 or later. This release applies the complete removal of the ticket file-upload component.

If upgrading immediately is not feasible, administrators must apply Nginx configuration rules to prevent the execution of PHP scripts within the storage directory. This rule denies requests trying to run PHP files inside the public storage folders:

location ~* ^/storage/.*\.php$ {
    deny all;
    return 404;
}

Additionally, administrators can enforce download behavior for all static assets served from the ticket attachments directory. This forces the web server to treat the files as octet streams instead of rendering or executing them:

location /storage/ticket-attachments/ {
    add_header Content-Disposition "attachment";
    add_header Content-Type "application/octet-stream";
}

Fix Analysis (2)

Technical Appendix

CVSS Score
10.0/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
EPSS Probability
0.37%
Top 71% most exploited

Affected Systems

Paymenter open-source hosting webshop solution

Affected Versions Detail

Product
Affected Versions
Fixed Version
Paymenter
Paymenter
< 1.2.111.2.11
AttributeDetail
CWE IDCWE-434
Attack VectorNetwork
CVSS v3.110.0 (Critical)
EPSS Score0.00374
Exploit StatusNone (No public functional exploit scripts)
KEV StatusNot Listed
ImpactRemote Code Execution (RCE)

MITRE ATT&CK Mapping

T1105Ingress Tool Transfer
Command and Control
T1059Command and Scripting Interpreter
Execution
CWE-434
Unrestricted Upload of File with Dangerous Type

The product allows the attacker to upload or transfer files of dangerous types that can be executed within the product's environment.

Vulnerability Timeline

Fix commit applied to Paymenter repository
2025-08-27
GitHub Security Advisory GHSA-5pm9-r2m8-rcmj published
2025-08-28
CVE-2025-58048 published
2025-08-28
Paymenter Release v1.2.11 issued containing the patch
2025-08-28

References & Sources

  • [1]Official GitHub Security Advisory (GHSA-5pm9-r2m8-rcmj)
  • [2]Code Fix Commit
  • [3]Official Release Tag

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•34 minutes ago•CVE-2024-37155
6.5

CVE-2024-37155: Security Bypass in OpenCTI GraphQL Introspection via Whitespace and Control Character Manipulation

OpenCTI versions prior to 6.1.9 fail to properly restrict GraphQL schema introspection queries due to a weak pattern-matching implementation. An unauthenticated attacker can bypass the introspection block list by stripping whitespace and carriage returns, enabling complete reconnaissance of the GraphQL schema.

Amit Schendel
Amit Schendel
1 views•5 min read
•about 3 hours ago•CVE-2026-21887
7.7

CVE-2026-21887: Server-Side Request Forgery in OpenCTI Data Ingestion Component

A technical analysis of CVE-2026-21887, a Server-Side Request Forgery (SSRF) vulnerability in OpenCTI. The flaw occurs in the platform's data ingestion mechanism, which processes user-supplied feed URLs via Axios under a default configuration. Authenticated users with low privileges can exploit this to pivot into internal infrastructure, target metadata services, and scan private networks.

Amit Schendel
Amit Schendel
2 views•7 min read
•about 15 hours ago•GHSA-6GQW-JQV7-V88M
7.2

GHSA-6GQW-JQV7-V88M: Multi-Tenant Isolation Bypass in stigmem-node via Missing SQL Tenant Predicates

A critical vulnerability exists in the stigmem-node package when running the opt-in stigmem-plugin-multi-tenant plugin. Due to a failure to enforce tenant-scoping filters on database queries within the decay sweep, quarantine moderation, and right-to-be-forgotten (RTBF) subsystems, an authorized caller belonging to one tenant can access, modify, and delete facts belonging to all other tenants. This broken object level authorization (BOLA) vulnerability allows cross-tenant data manipulation and information leakage.

Amit Schendel
Amit Schendel
6 views•6 min read
•about 15 hours ago•GHSA-V3F4-W7R7-V3HM
8.6

GHSA-v3f4-w7r7-v3hm: Remote Command Execution via Origin Validation Error in Uni-CLI Legacy HTTP Transport

An origin validation error and cross-site request forgery vulnerability in @zenalexa/unicli prior to version 0.225.2 allows cross-origin web applications to execute arbitrary tools on a user's local machine via the legacy stateless HTTP transport.

Amit Schendel
Amit Schendel
6 views•7 min read
•about 16 hours ago•GHSA-C795-2G9C-J48M
8.2

GHSA-C795-2G9C-J48M: Remote Path Traversal and Arbitrary File Write in EverOS Memory Ingestion

EverOS versions 1.0.0 and earlier contain a path traversal vulnerability in the user memory ingestion endpoint. By exploiting this flaw, unauthenticated network attackers can escape the designated database memory root and write arbitrary Markdown files to target directories on the local system.

Alon Barad
Alon Barad
6 views•6 min read
•about 16 hours ago•GHSA-X975-RGX4-5FH4
8.2

GHSA-X975-RGX4-5FH4: Unescaped Locator Data Cross-Site Scripting in appium-mcp MCP-UI Resource

GHSA-X975-RGX4-5FH4 is a high-severity Cross-Site Scripting (XSS) vulnerability residing in the Model Context Protocol (MCP) User Interface (UI) component of appium-mcp, an NPM package integrating Appium with MCP clients. The flaw exists within the createLocatorGeneratorUI utility function, which renders UI metadata directly into an HTML template page without performing sanitization or encoding. Because MCP clients use window.parent.postMessage to send commands from the UI to the host, this XSS can be escalated to trigger arbitrary MCP tool calls, potentially leading to Remote Code Execution (RCE) on the host running the MCP client.

Alon Barad
Alon Barad
8 views•6 min read