Detection rules › Sigma

Grafana Path Traversal Exploitation CVE-2021-43798

Status
test
Severity
critical
Log source
category webserver
Author
Florian Roth (Nextron Systems)
Source
github.com/SigmaHQ/sigma

Detects a successful Grafana path traversal exploitation

MITRE ATT&CK coverage

TacticTechniques
Initial AccessT1190 Exploit Public-Facing Application

Rule body yaml

title: Grafana Path Traversal Exploitation CVE-2021-43798
id: 7b72b328-5708-414f-9a2a-6a6867c26e16
status: test
description: Detects a successful Grafana path traversal exploitation
references:
    - https://grafana.com/blog/2021/12/07/grafana-8.3.1-8.2.7-8.1.8-and-8.0.7-released-with-high-severity-security-fix/
    - https://github.com/search?q=CVE-2021-43798
author: Florian Roth (Nextron Systems)
date: 2021-12-08
modified: 2023-01-02
tags:
    - attack.initial-access
    - attack.t1190
    - cve.2021-43798
    - detection.emerging-threats
logsource:
    category: webserver
detection:
    selection_traversal:
        cs-uri-query|contains: '/../../../../../../../'
        sc-status: 200
    selection_plugins:
        cs-uri-query|contains:
            - '/public/plugins/live'
            - '/public/plugins/icon'
            - '/public/plugins/loki'
            - '/public/plugins/text'
            - '/public/plugins/logs'
            - '/public/plugins/news'
            - '/public/plugins/stat'
            - '/public/plugins/mssql'
            - '/public/plugins/mixed'
            - '/public/plugins/mysql'
            - '/public/plugins/tempo'
            - '/public/plugins/graph'
            - '/public/plugins/gauge'
            - '/public/plugins/table'
            - '/public/plugins/debug'
            - '/public/plugins/zipkin'
            - '/public/plugins/jaeger'
            - '/public/plugins/geomap'
            - '/public/plugins/canvas'
            - '/public/plugins/grafana'
            - '/public/plugins/welcome'
            - '/public/plugins/xychart'
            - '/public/plugins/heatmap'
            - '/public/plugins/postgres'
            - '/public/plugins/testdata'
            - '/public/plugins/opentsdb'
            - '/public/plugins/influxdb'
            - '/public/plugins/barchart'
            - '/public/plugins/annolist'
            - '/public/plugins/bargauge'
            - '/public/plugins/graphite'
            - '/public/plugins/dashlist'
            - '/public/plugins/piechart'
            - '/public/plugins/dashboard'
            - '/public/plugins/nodeGraph'
            - '/public/plugins/alertlist'
            - '/public/plugins/histogram'
            - '/public/plugins/table-old'
            - '/public/plugins/pluginlist'
            - '/public/plugins/timeseries'
            - '/public/plugins/cloudwatch'
            - '/public/plugins/prometheus'
            - '/public/plugins/stackdriver'
            - '/public/plugins/alertGroups'
            - '/public/plugins/alertmanager'
            - '/public/plugins/elasticsearch'
            - '/public/plugins/gettingstarted'
            - '/public/plugins/state-timeline'
            - '/public/plugins/status-history'
            - '/public/plugins/grafana-clock-panel'
            - '/public/plugins/grafana-simple-json-datasource'
            - '/public/plugins/grafana-azure-monitor-datasource'
    condition: all of selection*
falsepositives:
    - Vulnerability scanners that scan a host that returns 200 status codes even in cases of a file not found or other error
level: critical

Stages and Predicates

Stage 0: condition

all of selection*

Stage 1: selection_traversal

selection_traversal:
    cs-uri-query|contains: '/../../../../../../../'
    sc-status: 200

Stage 2: selection_plugins

selection_plugins:
    cs-uri-query|contains:
        - '/public/plugins/live'
        - '/public/plugins/icon'
        - '/public/plugins/loki'
        - '/public/plugins/text'
        - '/public/plugins/logs'
        - '/public/plugins/news'
        - '/public/plugins/stat'
        - '/public/plugins/mssql'
        - '/public/plugins/mixed'
        - '/public/plugins/mysql'
        - '/public/plugins/tempo'
        - '/public/plugins/graph'
        - '/public/plugins/gauge'
        - '/public/plugins/table'
        - '/public/plugins/debug'
        - '/public/plugins/zipkin'
        - '/public/plugins/jaeger'
        - '/public/plugins/geomap'
        - '/public/plugins/canvas'
        - '/public/plugins/grafana'
        - '/public/plugins/welcome'
        - '/public/plugins/xychart'
        - '/public/plugins/heatmap'
        - '/public/plugins/postgres'
        - '/public/plugins/testdata'
        - '/public/plugins/opentsdb'
        - '/public/plugins/influxdb'
        - '/public/plugins/barchart'
        - '/public/plugins/annolist'
        - '/public/plugins/bargauge'
        - '/public/plugins/graphite'
        - '/public/plugins/dashlist'
        - '/public/plugins/piechart'
        - '/public/plugins/dashboard'
        - '/public/plugins/nodeGraph'
        - '/public/plugins/alertlist'
        - '/public/plugins/histogram'
        - '/public/plugins/table-old'
        - '/public/plugins/pluginlist'
        - '/public/plugins/timeseries'
        - '/public/plugins/cloudwatch'
        - '/public/plugins/prometheus'
        - '/public/plugins/stackdriver'
        - '/public/plugins/alertGroups'
        - '/public/plugins/alertmanager'
        - '/public/plugins/elasticsearch'
        - '/public/plugins/gettingstarted'
        - '/public/plugins/state-timeline'
        - '/public/plugins/status-history'
        - '/public/plugins/grafana-clock-panel'
        - '/public/plugins/grafana-simple-json-datasource'
        - '/public/plugins/grafana-azure-monitor-datasource'

Indicators

Each row is a field, operator, and value that the rule matches. The corpus column counts how many other rules in the catalog look for the same combination: high numbers point to widely-used, community-vetted indicators. Blank or 1 shows that the indicator is specific to this rule.

FieldKindValues
cs-uri-querymatch
  • /../../../../../../../
  • /public/plugins/alertGroups
  • /public/plugins/alertlist
  • /public/plugins/alertmanager
  • /public/plugins/annolist
  • /public/plugins/barchart
  • /public/plugins/bargauge
  • /public/plugins/canvas
  • /public/plugins/cloudwatch
  • /public/plugins/dashboard
  • /public/plugins/dashlist
  • /public/plugins/debug
  • /public/plugins/elasticsearch
  • /public/plugins/gauge
  • /public/plugins/geomap
  • /public/plugins/gettingstarted
  • /public/plugins/grafana
  • /public/plugins/grafana-azure-monitor-datasource
  • /public/plugins/grafana-clock-panel
  • /public/plugins/grafana-simple-json-datasource
  • /public/plugins/graph
  • /public/plugins/graphite
  • /public/plugins/heatmap
  • /public/plugins/histogram
  • /public/plugins/icon
  • /public/plugins/influxdb
  • /public/plugins/jaeger
  • /public/plugins/live
  • /public/plugins/logs
  • /public/plugins/loki
  • /public/plugins/mixed
  • /public/plugins/mssql
  • /public/plugins/mysql
  • /public/plugins/news
  • /public/plugins/nodeGraph
  • /public/plugins/opentsdb
  • /public/plugins/piechart
  • /public/plugins/pluginlist
  • /public/plugins/postgres
  • /public/plugins/prometheus
  • /public/plugins/stackdriver
  • /public/plugins/stat
  • /public/plugins/state-timeline
  • /public/plugins/status-history
  • /public/plugins/table
  • /public/plugins/table-old
  • /public/plugins/tempo
  • /public/plugins/testdata
  • /public/plugins/text
  • /public/plugins/timeseries
  • /public/plugins/welcome
  • /public/plugins/xychart
  • /public/plugins/zipkin
sc-statuseq
  • 200