
Apache CVE-2021-41773 경로 탐색 및 RCE 악용을 위한 Docker 기반 랩으로, Python 익스플로잇 스크립트를 포함하여 취약점 분석 및 완화 전략을 시연합니다.
이 저장소는 교육 및 연구 목적을 위해 통제된 Docker 실습 환경에서 공개적으로 공개되었고 패치된 취약점을 재현합니다.
이 환경은 의도적으로 취약하게 구성되어 있으며, 반드시 격리된 테스트 환경에서만 배포해야 합니다. 명시적인 승인 없이 시스템을 악용하려 시도하지 마십시오.
이 프로젝트의 목표는 취약점 분석, 악용, 및 완화 전략을 시연하는 것입니다.
경로 순회 및 원격 코드 실행
# Navigate to the project folder
cd Apache-CVE-2021-41773
# Validate compose syntax
docker compose config
# Start the lab
docker compose up -d --build
# Check that everything is running
docker compose ps
Apache 2.4.49는 URL 경로 정규화에 버그를 도입했습니다. .%2e(..와 동일)와 같은 인코딩된 시퀀스가 제대로 검사되지 않아, 공격자가 DocumentRoot를 벗어나 디렉터리 트리를 탐색할 수 있습니다.
mod_cgi가 활성화되어 있고 루트 디렉터리(/)가 Require all granted로 구성된 경우, 공격자는 다음을 수행할 수 있습니다:
/bin/sh 인터프리터를 통해 명령 실행 (RCE)exploit.py)외부 종속성 없음 — Python 표준 라이브러리만 사용합니다.
자동 python exploit.py 취약점 확인 + 데모로 id 실행
파일 읽기 python exploit.py -f /etc/shadow RCE를 통해 임의 파일 읽기
RCE python exploit.py -c "whoami" 단일 명령 실행
셸 python exploit.py -i 대화형 유사 셸
사용자 지정 대상 python exploit.py -u http://target:8888 원격 호스트 대상 지정
먼저, 환경이 취약한지 확인합니다.
예상대로 명령은 uid=0(root) gid=0(root) groups=0(root)를 반환합니다.
리버스 셸을 만들어 보겠습니다:
root로 로그인되었습니다.
보시다시피 /proc/1/environ에 설정 오류가 있어 SQL 비밀번호를 얻었습니다. 이는 안전하지 않은 컨테이너 구성으로 인해 노출된 비밀 정보를 드러냅니다.
추출된 자격 증명을 사용하여 MySQL 데이터베이스에 연결하고 저장된 데이터를 출력합니다.
프로덕션 환경에서는 이러한 구성을 절대 재현하지 마십시오.