
공개된 모든 CVE를 한 스크립트에 모아 Grafana 테스트를 더 쉽게 만들어주는 Grafana 스캐너
Grafana용 명령줄 취약점 스캐너입니다. 설치된 Grafana 버전을 식별하고, 버전별 CVE 검사를 실행하며, 일반적인 구성 약점을 감사하고, 결과를 로컬 데이터베이스에 저장하며, 작은 웹 대시보드를 통해 결과를 제공할 수 있습니다.
이 도구는 Grafana 인스턴스에 요청을 보내며, 일부 검사에서는 알려진 익스플로잇 경로(경로 탐색, SQL 인젝션, SSRF)를 시도합니다. 소유하고 있거나 테스트에 대한 서면 허가를 받은 시스템에 대해서만 실행하십시오. 무단 스캔은 해당 국가의 컴퓨터 오용 법률을 위반할 수 있습니다.
requestsflask (--serve에만 필요)pip install -r requirements.txt
# 단일 대상 스캔
python scanner.py -u https://grafana.example.com
# 파일에서 URL 목록 스캔
python scanner.py -f targets.txt -o report
# 혼합 URL 목록에서 Grafana 인스턴스 감지 후 스캔
python scanner.py --auto-search urls.txt -o discovery
# 데이터베이스에 결과 저장 후 대시보드에서 보기
python scanner.py -f targets.txt --db vulndb.json
python scanner.py --serve --db vulndb.json
--no-ssl-verify를 전달하세요. 그렇게 하면 자격 증명이 가로채기에 노출될 수 있으므로 경고가 출력됩니다.--dashboard-token을 설정하지 않으면 대시보드는 인증되지 않습니다. 대시보드가 로컬이 아닌 인터페이스에 바인딩된 경우 토큰을 설정해야 합니다. 모든 상태 변경 요청에는 CSRF 토큰도 필요합니다.-o 옵션을 사용하면 스캐너가 BASE.json, BASE.html, BASE.csv를 작성합니다. HTML 보고서는 악성 대상 응답에서 올 수 있는 javascript:/data:/vbscript: URI를 무력화합니다.
--db 옵션을 사용하면 결과가 원자적으로 기록되는 JSON 파일에 저장됩니다. 이전 상태의 .bak 복사본이 유지되며, 구문 분석에 실패한 파일은 자동으로 폐기되지 않고 .corrupt-<timestamp>로 이동됩니다.
스캐너는 버전별 CVE 검사와 구성 감사(보안 헤더, CORS, 익명 액세스, 자체 가입, 플러그인 분석, 노출된 메트릭)를 실행합니다. 전체 CVE 목록 및 탐지 방법 노트는 docs/vulnerabilities.md에 있습니다.
scanner.py — 엔진, 검사, 데이터베이스, 웹 대시보드, CLIdocs/usage.md — 스캔 모드 및 워크플로docs/vulnerabilities.md — CVE 참조docs/architecture.md — 내부 구조 및 데이터 흐름tests/ — 테스트 스위트make test # 테스트 스위트 실행
make lint # ruff + flake8
CI 파이프라인은 Python 3.9–3.12에서 테스트와 린터를 실행하고 Docker 이미지를 빌드합니다.
MIT. LICENSE 참조.
| 옵션 | 설명 |
|---|
-u, --url | 단일 대상 URL 스캔 |
-f, --file | 파일에 한 줄에 하나씩 나열된 대상 스캔 |
--auto-search FILE | URL 목록에서 Grafana를 감지한 후 감지된 인스턴스 스캔 |
-o, --output BASE | JSON/HTML/CSV 보고서 파일의 기본 이름 |
--timeout N | 요청당 제한 시간(초) (기본값 10) |
--threads N | 동시 스캔 스레드 수 (기본값 5) |
--db FILE | 지정된 경로에서 JSON 취약점 데이터베이스 활성화 |
--serve [PORT] | Flask 웹 대시보드 시작 (기본 포트 8080) |
--host | 대시보드가 바인딩되는 주소 (기본값 127.0.0.1) |
--dashboard-token TOKEN | 모든 대시보드 경로에서 이 Bearer 토큰 요구 |
--auth-token | 인증된 엔드포인트 스캔을 위한 Bearer 토큰 |
--auth-user / --auth-pass | 스캔을 위한 기본 인증 |
--no-ssl-verify | TLS 인증서 확인 비활성화 (경고 출력) |
-v, --verbose | 각 검사 세부 정보 출력 |
--no-banner | 시작 헤더 숨김 |