Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2023-46604 — تحليل تقني متعمق لـ CVE-2023-46604، ثغرة تنفيذ التعليمات البرمجية عن بُعد (RCE) في بروتوكول OpenWire الخاص بـ Apache ActiveMQ، بما في ذلك تحليل بنية الحزم وآلية الاستغلال. | Kitploit
أدوات/GitHubGitHub/skrkcb2/cve-2023-46604
تحليل الثغرات الأمنيةالاستغلالالأوراق والأبحاثالتعلم والتعليماستغلال الملفات الثنائية
GitHubskrkcb2/cve-2023-46604

CVE-2023-46604

تحليل تقني متعمق لـ CVE-2023-46604، ثغرة تنفيذ التعليمات البرمجية عن بُعد (RCE) في بروتوكول OpenWire الخاص بـ Apache ActiveMQ، بما في ذلك تحليل بنية الحزم وآلية الاستغلال.

عرض المستودع
11منذ سنة واحدةلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2023-46604

01. Apache ActiveMQ & OpenWire

  • 1) نظرة عامة على Apache ActiveMQ وOpenWire

    يُعد ActiveMQ خادم رسائل مفتوح المصدر وأنماط تكامل (Messaging and Integration Patterns)، حيث يتضمن وسيطًا (Broker) مع عملاء يدعمون JMS، ويتيح الاتصال بين الأنظمة التي تستخدم لغات متعددة بالإضافة إلى جافا. كما يحافظ على الاتساق والاستمرارية بين الأنظمة من خلال ميزات العنقود (Clustering) وقاعدة البيانات ونظام الملفات.

    OpenWire هو بروتوكول رسائل ثنائي يُستخدم في Apache ActiveMQ. صُمم لنقل البيانات بكفاءة بين الوسيط (ActiveMQ) والعميل.

    تتمثل الثغرة CVE-2023-46604 في وجود ضعف في بروتوكول OpenWire (أثناء عملية Marshal) داخل ActiveMQ، حيث يمكن لمهاجم عن بُعد لديه حق الوصول الشبكي إلى وسيط أو عميل OpenWire مبني على Java، التلاعب بأنواع الفئات المسلسلة في بروتوكول OpenWire لتنفيذ أوامر شل عشوائية، مما يجعل العميل أو الوسيط (على التوالي) يقوم بإنشاء مثيل لأي فئة موجودة في مسار الفئات (classpath). وتُعد هذه إحدى تقنيات الهجوم البارزة التي تستخدمها مجموعة APT المسماة Andariel.

02. تحليل الثغرة الأمنية عبر بروتوكول OpenWire في بيئة Apache ActiveMQ 5.17.3

  • 2.1 تحليل الحزم وطريقة الهجوم عبر بروتوكول OpenWire

    سنتعرف على ذلك من خلال تحليل الحزم المُرسلة إلى بروتوكول OpenWire في ActiveMQ 5.17.3. يجب أولًا استيعاب شكل الحزمة قبل تحليلها. يُظهر [شكل 1] الحمولة الفعلية التي تحتوي على تنسيق الرأس (Header) والجسم (Body) للحزمة الموضحة أعلاه (تم استخدام الاستدعاء عبر نظام الملفات بدلاً من أسلوب POC القائم على ClassPath من باب التيسير). سنتعرف بمزيد من التفصيل داخل الكود على وظيفة محتويات هذه الحزمة ولماذا يجب إرسالها بهذا الشكل.

تتم عملية استغلال CVE-2023-46604 عبر التلاعب باستدعاءات XML أو حقن بيانات خبيثة أثناء تبادل البيانات عبر بروتوكول OpenWire، مما يؤدي إلى تنفيذ أوامر عن بُعد. يعالج بروتوكول OpenWire أساسًا عملية تسلسل البيانات (Serialization) ونقلها، وتكمن الثغرة في السماح بأنواع فئات خبيثة أثناء عملية التسلسل.

وصف الصورة

[شكل] POC

وصف الصورة

[شكل] XML

root@kitploit:~
패킷 Header 
  +----------------------------------------------------------------------------------+
| Packet Length | Command | Command Id | Command response required | CorrelationId |
|---------------|---------|------------|---------------------------|---------------|
|   00000066    |   1f    |  00000000  |          00               |   00000000    |
+----------------------------------------------------------------------------------+
root@kitploit:~
패킷 Body
  +--------------------------------------------------------------------------------------+
| not-null | not-null | classname-size | classname | not-null | message-size | message |
|----------|----------|----------------|-----------|----------|--------------|---------|
|    01    |    01    |      0043      |   .....   |    01    |     0012     |  .....  |
+--------------------------------------------------------------------------------------+
root@kitploit:~
OpenWire 패킷 Body 형식
               [=If not-null is 1===========]
+----------+ [ +-------+----------------+ ]
| not-null | [ | size  | encoded-string | ]
+----------+ [ +-------+----------------+ ]
| byte     | [ | short | size octects   | ]
+----------+ [ +-------+----------------+ ]
             [============================]

وصف الصورة

[شكل 1] فحص حزمة OpenWire عبر Wireshark

وصف الصورة

[شكل 2] معنى رأس الحزمة

root@kitploit:~
 패킷 Header 끊어서 파악
   +----------------------------------------------------------------------------------+
  | Packet Length | Command | Command Id | Command response required | CorrelationId |
  |---------------|---------|------------|---------------------------|---------------|
  |   00000066    |   1f    |  00000000  |          00               |   00000000    |
  +----------------------------------------------------------------------------------+

 Packet Length : 00000066 / OpenWire 같은 프로토콜은 기본적으로 패킷을 길이를 명시.
 Command : 1f / 는 ExecptionResponse(31)을 명시 하기 위한 설정 31은 16진수(hex)로 1f. 
 Command Id : 00000000 / 는 int 형태 4바이트 형태 임으로 16진수 표현시 00 00 00 00.
 Command response required : 00 / 는 boolean 타입으로 True(01), False(00) 에서 False.
 CorrelationId :  Command Id와 같은 유형

يضيف [شكل 2] شرحًا لشكل كل عنصر من عناصر رأس الحزمة والقيم المحددة له، بهدف المساعدة على فهم رأس الحزمة أعلاه. وبعد أن تعرفنا على الرأس، سننظر الآن في كيفية مرور محتويات الجسم (Body) عبر الكود.

وصف الصورة

[شكل 3] معنى جسم الحزمة

root@kitploit:~
  패킷 Body 내용 끊어서 파악 
    +--------------------------------------------------------------------------------------+
  | not-null | not-null | classname-size | classname | not-null | message-size | message |
  |----------|----------|----------------|-----------|----------|--------------|---------|
  |    01    |    01    |      0043      |   .....   |    01    |     0012     |  .....  |
  +--------------------------------------------------------------------------------------+

  not-null (01) | / [그림 3]의 첫번째 함수에서 not-null pass
  not-null (01) | classname-size (0043) | classname / [그림 3]의 두번째 함수에서 not-null pass, 세번째 함수에서 사이즈 체크 위한
  not-null (01) | message-size (0012) | message / [그림 3]의 두번째 함수에서 not-null pass, 세번째 함수에서 사이즈 체크 위한 

يوضح [شكل 3] كيفية عمل القيم المُعيّنة في جسم الحزمة. وفي النهاية، يقوم [شكل 4] بتحميل الفئة وإنشاء مثيل لها عبر البيانات المسلسلة.

وصف الصورة

[شكل 4] تنفيذ RCE عبر createThrowable

وصف الصورة

[شكل 5] مثال على تشغيل الآلة الحاسبة عبر RCE

وصف الصورة

[شكل 5] Git Diff (5.17.2 -> 5.17.6)

وصف الصورة

[شكل 5] دالة validate Function

03. الخاتمة

على خلاف التحليلات الأخرى، كان سبب تحليل حزم الهجوم لهذه الثغرة هو فهم ودراسة كيفية تنفيذ الهجوم فعليًا.

من خلال الفحص الدقيق لبنية الحزم وتدفقها، تمكّنّا من تحديد الطريقة المحددة التي يستخدمها المهاجم لاختراق النظام وآلية عملها بوضوح.

04. المراجع

(nist) https://nvd.nist.gov/vuln/detail/cve-2023-46604
(POC) https://github.com/X1r0z/ActiveMQ-RCE/tree/main
(مدونة) https://attackerkb.com/topics/IHsgZDE3tS/cve-2023-46604/rapid7-analysis

تنزيل الأداة