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.
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.
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.