Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2021-41773 — CVE-2021-41773 Apache 경로 순회 및 RCE 악용에 대한 상세 분석서, TryHackMe 실습 환경에서의 단계별 명령어와 근본 원인 분석 포함. | Kitploit
도구/GitHubGitHub/johnwickakash12/cve-2021-41773
Vulnerability AnalysisExploitationWeb Application ExploitationCTFLearning & EducationLabs & Practice
GitHubjohnwickakash12/cve-2021-41773

CVE-2021-41773

CVE-2021-41773 Apache 경로 순회 및 RCE 악용에 대한 상세 분석서, TryHackMe 실습 환경에서의 단계별 명령어와 근본 원인 분석 포함.

저장소 보기
32개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2021-41773 — Apache 경로 탐색 및 RCE 익스플로잇

TryHackMe 'Modern Web Stacks' 룸에 대한 분석으로, Apache HTTP Server 2.4.49의 경로 탐색 취약점인 CVE-2021-41773을 익스플로잇하는 데 초점을 맞추며, mod_cgi가 활성화된 경우 원격 코드 실행으로 이어집니다.

요약

항목세부사항
취약점CVE-2021-41773 — Apache 2.4.49 경로 탐색 / RCE
대상 서비스포트 8080의 Apache HTTP Server
취약한 버전Apache/2.4.49 (Unix)
근본 원인ap_normalize_path()의 잘못된 정규화 순서
영향임의 파일 읽기 → mod_cgi를 통한 원격 코드 실행
사용된 도구curl

취약점 개요

Apache 2.4.49는 ap_normalize_path()가 URL을 처리하는 방식을 변경했습니다. Apache는 파일 시스템에 도달하기 전에 ../를 포함하는 요청 경로를 차단해야 하지만, 경로 탐색 필터는 전체 URL 디코딩이 완료되기 전에 실행됩니다.

즉, 이중 인코딩된 시퀀스 .%2e/를 사용하는 요청은 필터가 ../로 인식하지 못합니다. 그러나 Apache가 경로를 OS에 전달하면 .%2e/가 ../로 해석되며 경로 탐색 필터는 이미 우회된 상태입니다.

이 자체만으로 웹 루트 외부의 임의 파일 읽기가 가능합니다. mod_cgi와 결합되면 영향이 심각해집니다. 경로 탐색 결과가 CGI가 활성화된 디렉터리(예: /cgi-bin/) 내의 /bin/sh와 같은 실행 파일로 이어지는 경우, Apache는 이를 CGI 스크립트로 실행하고 HTTP POST 본문을 표준 입력으로 전달하여 원격 명령 실행을 가능하게 합니다.

단계

1. 취약한 Server 헤더 확인

대상의 Server 응답 헤더가 다음과 같이 확인되었습니다:

root@kitploit:~
Apache/2.4.49 (Unix)

이 버전은 CVE-2021-41773의 직접적인 영향을 받습니다.

2. /cgi-bin/ 사용 가능 여부 확인

/cgi-bin/을 요청했을 때 403 Forbidden 응답을 받았습니다(404가 아님). 이는 디렉터리가 존재하고 mod_cgi가 활성화되어 있을 가능성이 높다는 것을 의미하며, 이 CVE를 통한 RCE의 전제 조건입니다.

3. RCE를 위한 경로 탐색 익스플로잇

curl에 --path-as-is 플래그를 사용하여 인코딩된 경로 탐색 시퀀스를 정확히 입력한 대로 전송했습니다. curl이 클라이언트 측에서 먼저 정규화하지 않도록 합니다.

root@kitploit:~
curl -s --path-as-is "http://<TARGET_IP>:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh" \
  --data 'echo Content-Type: text/plain; echo; cat /flag.txt'

--path-as-is가 필요한 이유: 기본적으로 curl은 요청이 전송되기 전에 URL을 정규화하여 .%2e/ 시퀀스를 제거합니다. --path-as-is는 curl에게 URL을 작성된 그대로 보내도록 지시하여 인코딩된 경로 탐색이 서버에 온전히 도달하도록 합니다.

4. 플래그 읽기

페이로드는 /cgi-bin/을 빠져나와 루트 파일 시스템으로 이동하고, 삽입된 POST 본문을 통해 /bin/sh를 CGI 스크립트로 실행하여 /flag.txt의 내용을 반환했습니다.

root@kitploit:~
플래그 형식 확인: THM{...}

(TryHackMe의 공개 분석 가이드라인에 따라 플래그는 편집되었습니다.)

주요 시사점

  • 패치 순서가 중요합니다. 디코딩이 완료되기 전에 실행되는 보안 필터는 인코딩 트릭으로 쉽게 우회될 수 있습니다. 이 정확한 패턴(필터 후 디코딩 vs 디코딩 후 필터)은 이 CVE뿐만 아니라 많은 경로 탐색 CVE에서 나타납니다.
  • mod_cgi + 경로 탐색 = RCE. 파일 읽기만으로도 좋지 않지만, CGI 실행 가능 디렉터리와 결합되면 명령 실행이 됩니다.
  • 테스트 중 도구 동작이 중요합니다. curl의 기본 URL 정규화는 보내려는 정확한 페이로드를 조용히 '수정'할 수 있습니다. 인코딩 기반 우회를 테스트할 때는 --path-as-is(또는 이에 상응하는 원시 요청 도구)가 필수적입니다.

수정 조치

  • Apache를 2.4.51 이상으로 업그레이드합니다(CVE-2021-41773 및 관련 CVE-2021-42013 모두 수정).
  • 명시적으로 필요하지 않은 경우 mod_cgi를 비활성화합니다.
  • 웹 서버 프로세스에 최소 권한 원칙을 적용하여 파일 읽기 기본 요소의 피해 범위를 제한합니다.

참고 자료

  • CVE-2021-41773 — NVD
  • TryHackMe — Modern Web Stacks room

이 분석은 랩 환경(TryHackMe)을 문서화합니다. 승인되지 않은 시스템에는 접근하지 않았습니다.

도구 다운로드