Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2023-46604 | Kitploit
Tools/GitHubGitHub/skrkcb2/cve-2023-46604
SchwachstellenanalyseExploitationPapers & ForschungLernen & BildungBinary-Exploitation
GitHubskrkcb2/cve-2023-46604

CVE-2023-46604

Repository anzeigen
1vor 1 JahrNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2023-46604

01. Apache ActiveMQ & OpenWire

  • 1) Überblick über Apache ActiveMQ und OpenWire

    ActiveMQ ist ein Broker, der Clients umfasst, die JMS unterstützen, und ermöglicht die Kommunikation zwischen Systemen, die nicht nur Java, sondern auch verschiedene andere Sprachen verwenden. Darüber hinaus ist es ein Open-Source-Messaging- und Integrationsmuster-Server, der über Clustering-Funktionen sowie DB und FileSystem die Konsistenz und Dauerhaftigkeit zwischen den einzelnen Systemen aufrechterhält.

    OpenWire ist ein binäres Messaging-Protokoll, das in Apache ActiveMQ verwendet wird. Es wurde für eine effiziente Datenübertragung zwischen dem Broker (ActiveMQ) und den Clients entwickelt.

    CVE-2023-46604 ist eine Schwachstelle im OpenWire-Protokoll (während des Marshal-Prozesses) in ActiveMQ. Sie ermöglicht es einem entfernten Angreifer mit Netzwerkzugriff auf einen Java-basierten OpenWire-Broker oder -Client, die im OpenWire-Protokoll serialisierten Klassentypen zu manipulieren, beliebige Shell-Befehle auszuführen und den Client bzw. den Broker (jeweils) dazu zu bringen, alle auf dem Klassenpfad befindlichen Klassen zu instanziieren. Sie ist eine der repräsentativen Angriffsmethoden der APT-Gruppe Andariel.

02. Schwachstellenanalyse über das OpenWire-Protokoll in Apache ActiveMQ 5.17.3

  • 2.1 Paketanalyse und Angriffsmethode über das OpenWire-Protokoll

    CVE-2023-46604 läuft so ab, dass während des Datenaustauschs über das OpenWire-Protokoll ein XML-Aufruf manipuliert oder bösartige Daten eingefügt werden, um Remote-Befehle auszuführen. Das OpenWire-Protokoll übernimmt grundsätzlich die Serialisierung und Übertragung von Daten. Die Schwachstelle nutzt aus, dass bei diesem Serialisierungsprozess bösartige Klassentypen zugelassen werden.

    Bildbeschreibung

    [Abbildung] POC

    Bildbeschreibung

    [Abbildung] XML

    Wir werden dies anhand der Analyse der Pakete untersuchen, die in ActiveMQ 5.17.3 über das OpenWire-Protokoll gesendet werden. Zunächst müssen wir uns vor der Paketanalyse mit der Form des Pakets vertraut machen.
    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   | ]
    +----------+ [ +-------+----------------+ ]
                 [============================]
    

    Bildbeschreibung

    [Abbildung 1] WireShark OpenWire-Paketprüfung

    In [Abbildung 1] ist die tatsächliche Payload mit dem oben beschriebenen Header- und Body-Format des Pakets zu sehen (der Einfachheit halber erfolgt der Aufruf nicht über den ClassPath wie bei der ursprünglichen POC-Methode, sondern über das FileSystem). Wir werden nun im Code genauer untersuchen, welche Wirkung diese Paketinhalte entfalten und warum sie auf diese Weise gesendet werden müssen.

    Bildbeschreibung

    [Abbildung 2] Bedeutung des Paket-Headers

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와 같은 유형

[Abbildung 2] enthält ergänzende Erläuterungen zu den Formaten der einzelnen Header-Felder und den zugehörigen Code-Werten, um das Verständnis des obigen Paket-Headers zu erleichtern. Nachdem wir uns nun den Header angesehen haben, betrachten wir anhand der Body-Inhalte, wie der Code durchlaufen wird.

Bildbeschreibung

[Abbildung 3] Bedeutung des Paket-Bodys

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, 세번째 함수에서 사이즈 체크 위한 

[Abbildung 3] zeigt, wie die im Body des Pakets gesetzten Werte wirken. Schließlich werden über die serialisierten Daten – wie in [Abbildung 4] dargestellt – Klassen geladen und instanziiert.

Bildbeschreibung

[Abbildung 4] RCE-Ausführung über createThrowable

Bildbeschreibung

[Abbildung 5] Ausführungsbeispiel des RCE-Rechners

Bildbeschreibung

[Abbildung 5] Git Diff (5.17.2 -> 5.17.6)

Bildbeschreibung

[Abbildung 5] validate-Funktion

03. Fazit

Anders als bei anderen Analysen wurde bei dieser Schwachstelle das Angriffspaket analysiert, um zu verstehen und zu lernen, wie der Angriff tatsächlich ausgeführt wird.

Durch die genaue Untersuchung der Struktur und des Ablaufs der Pakete konnten die konkreten Methoden, mit denen ein Angreifer ein System kompromittiert, und der zugrunde liegende Wirkmechanismus klar nachvollzogen werden.

04. Referenzen

(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

Tool herunterladen