grafana-unauth-access: Grafana Unauthenticated Access

2026-01-09 Grafana PoC Public

Description

Detects Grafana instances configured with anonymous access enabled, allowing unauthenticated users to access dashboards, data sources, organization info, and potentially sensitive monitoring data without any credentials.

PoC

id: grafana-unauth-access

info:
  name: Grafana Unauthenticated Access
  author: ritikchaddha
  severity: high
  description: |
    Detects Grafana instances configured with anonymous access enabled, allowing unauthenticated users to access dashboards, data sources, organization info, and potentially sensitive monitoring data without any credentials.
  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
    cwe-id: CWE-306
  metadata:
    verified: true
    max-request: 7
    shodan-query: title:"Grafana"
    fofa-query: title="Grafana"
  tags: grafana,misconfig,unauth,exposure,dashboard,vuln

http:
  - method: GET
    path:
      - "{{BaseURL}}/api/search?type=dash-db"
      - "{{BaseURL}}/api/dashboards/home"
      - "{{BaseURL}}/dashboard"
      - "{{BaseURL}}/api/org"
      - "{{BaseURL}}/api/users"
      - "{{BaseURL}}/api/datasources"
      - "{{BaseURL}}/api/frontend/settings"

    stop-at-first-match: true
    matchers-condition: or
    matchers:
      - type: dsl
        name: dashboards-exposed
        dsl:
          - 'status_code == 200'
          - 'contains_all(body, "dashboards:read", "name\":\"Dashboard list")'
        condition: and

      - type: dsl
        name: dashboard-search-exposed
        dsl:
          - 'status_code == 200'
          - 'contains(content_type, "application/json")'
          - 'contains_all(body, "\"uid\"", "\"title\"")'
          - 'contains_any(body, "\"type\":\"dash-db\"", "\"folderTitle\"")'
        condition: and

      - type: dsl
        name: home-dashboard-exposed
        dsl:
          - 'status_code == 200'
          - 'contains(content_type, "application/json")'
          - 'contains_all(body, "\"dashboard\"", "\"meta\"")'
        condition: and

      - type: dsl
        name: organization-info-exposed
        dsl:
          - 'status_code == 200'
          - 'contains(content_type, "application/json")'
          - 'contains_all(body, "\"id\"", "\"name\"")'
          - 'contains_any(body, "\"address\"", "\"orgId\"")'
        condition: and

      - type: dsl
        name: users-list-exposed
        dsl:
          - 'status_code == 200'
          - 'contains(content_type, "application/json")'
          - 'contains_any(body, "\"login\"", "\"email\"")'
          - 'contains_any(body, "\"isAdmin\"", "\"authLabels\"")'
        condition: and

      - type: dsl
        name: datasources-exposed
        dsl:
          - 'status_code == 200'
          - 'contains(content_type, "application/json")'
          - 'contains_all(body, "\"type\"", "\"url\"")'
          - 'contains_any(body, "\"database\"", "\"access\"")'
        condition: and

      - type: dsl
        name: frontend-settings-exposed
        dsl:
          - 'status_code == 200'
          - 'contains(content_type, "application/json")'
          - 'contains_any(body, "\"allowOrgCreate\"", "\"authProxyEnabled\"")'
          - 'contains_any(body, "\"buildInfo\"", "\"datasources\"")'
        condition: and
# digest: 4a0a004730450221009495779a49071a13b9c789ac22b6c19baaf5805e9548bdb824ca8f13b04ffdaf022059a59cf03c846aeaf3c8684e7d4d613432aa7456e14b690832e1eb5d9807c944:922c64590222798bb761d5b6d8e72950

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

References

Related Vulnerabilities