Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/skrkcb2/cve-2023-46604
भेद्यता विश्लेषणशोषणपेपर और शोधलर्निंग और शिक्षाबाइनरी शोषण
GitHubskrkcb2/cve-2023-46604

CVE-2023-46604

CVE-2023-46604 का गहन तकनीकी विश्लेषण, जो Apache ActiveMQ के OpenWire प्रोटोकॉल में RCE भेद्यता है, जिसमें पैकेट संरचना विवरण और शोषण तंत्र शामिल है।

रिपॉजिटरी देखें
111 साल पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2023-46604

01. Apache ActiveMQ & OpenWire

  • 1) Apache ActiveMQ और OpenWire अवलोकन

    ActiveMQ एक ब्रोकर है जो JMS का समर्थन करने वाले क्लाइंट्स को शामिल करता है, और Java के साथ-साथ विभिन्न भाषाओं का उपयोग करने वाले सिस्टम्स के बीच संचार को सक्षम बनाता है। साथ ही, यह क्लस्टरिंग सुविधाओं तथा DB और FileSystem के माध्यम से प्रत्येक सिस्टम के बीच स्थिरता और स्थायित्व बनाए रखने वाला एक ओपन-सोर्स मैसेजिंग और इंटीग्रेशन पैटर्न सर्वर है।

    OpenWire, Apache ActiveMQ में उपयोग किया जाने वाला एक बाइनरी मैसेजिंग प्रोटोकॉल है। इसे ब्रोकर (ActiveMQ) और क्लाइंट के बीच कुशल डेटा ट्रांसफर के लिए डिज़ाइन किया गया है।

    CVE-2023-46604, ActiveMQ में OpenWire प्रोटोकॉल (मार्शल प्रक्रिया में) की एक भेद्यता है। Java-आधारित OpenWire ब्रोकर या क्लाइंट तक नेटवर्क एक्सेस रखने वाला एक दूरस्थ हमलावर, OpenWire प्रोटोकॉल में सीरियलाइज़्ड क्लास प्रकार में हेरफेर करके मनमाना शेल कमांड निष्पादित कर सकता है, जिससे क्लाइंट या ब्रोकर (क्रमशः) क्लासपाथ पर मौजूद किसी भी क्लास को इंस्टेंशिएट कर सकता है। यह APT समूह Andariel द्वारा आमतौर पर उपयोग किए जाने वाले हमले के तरीकों में से एक है।

02. Apache ActiveMQ 5.17.3 वातावरण में OpenWire प्रोटोकॉल के माध्यम से भेद्यता विश्लेषण

  • 2.1 OpenWire प्रोटोकॉल के माध्यम से पैकेट विश्लेषण और हमले का तरीका

    हम ActiveMQ 5.17.3 में OpenWire प्रोटोकॉल को भेजे गए पैकेट के विश्लेषण के माध्यम से समझेंगे। सबसे पहले, पैकेट विश्लेषण से पहले हमें पैकेट के स्वरूप को समझना होगा। [चित्र 1] ऊपर वर्णित पैकेट के Header और Body प्रारूप वाला वास्तविक Payload है (सुविधा के लिए, मौजूदा POC विधि के ClassPath के माध्यम से कॉल के बजाय FileSystem के माध्यम से कॉल)। हम कोड में अधिक विस्तार से देखेंगे कि ये पैकेट सामग्रियाँ क्या कार्य करती हैं और इसे इस प्रकार क्यों भेजा जाना चाहिए।

CVE-2023-46604, OpenWire प्रोटोकॉल के माध्यम से डेटा के आदान-प्रदान की प्रक्रिया में XML कॉल में हेरफेर करके या दुर्भावनापूर्ण डेटा सम्मिलित करके दूरस्थ कमांड निष्पादित करने के रूप में आगे बढ़ता है। OpenWire प्रोटोकॉल मूल रूप से डेटा सीरियलाइज़ेशन और ट्रांसमिशन को संभालता है; यह भेद्यता इस सीरियलाइज़ेशन प्रक्रिया में दुर्भावनापूर्ण क्लास प्रकार की अनुमति का शोषण करती है।

छवि विवरण

[चित्र] 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] WireShark OpenWire पैकेट जाँच

छवि विवरण

[चित्र 2] पैकेट Header का अर्थ

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] उपरोक्त पैकेट हेडर की समझ में सहायता के लिए, प्रत्येक हेडर आइटम के प्रकार और निर्दिष्ट कोड के स्पष्टीकरण को जोड़ता है। अब जब हमने Header देख लिया है, तो देखते हैं कि Body सामग्री के माध्यम से यह कोड से कैसे गुजरता है।

छवि विवरण

[चित्र 3] पैकेट Body का अर्थ

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] दिखाता है कि पैकेट के Body में निर्धारित मान कैसे कार्य करते हैं। अंत में, [चित्र 4] के माध्यम से, सीरियलाइज़ किए गए डेटा को क्लास लोड और इंस्टेंशिएट किया जाता है।

छवि विवरण

[चित्र 4] createThrowable के माध्यम से RCE निष्पादन

छवि विवरण

[चित्र 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
(blog) https://attackerkb.com/topics/IHsgZDE3tS/cve-2023-46604/rapid7-analysis

टूल डाउनलोड करें