Dubbo的反序列化漏洞比较:
- [CVE-2019-17564] 当用户选择http协议进行通信时,Apache Dubbo 将接受来自消费者远程调用的POST请求并执行一个反序列化的操作。由于此步骤没有任何安全校验,因此可以造成反序列化执行任意代码。
- [CVE-2020-1948] 默认反序列化方式存在代码执行漏洞,当 Dubbo 服务端暴露时(默认端口:20880),攻击者可以发送未经验证的服务名或方法名的RPC请求,同时配合附加恶意的参数负载。当恶意参数被反序列化时,它将执行恶意代码。
参考:https://stackoverflow.com/questions/59943241/zookeeper-admin-server-port
admin.enableServer : (Java system property: zookeeper.admin.enableServer) Set to "false" to disable the AdminServer. By default the AdminServer is enabled.
admin.serverAddress : (Java system property: zookeeper.admin.serverAddress) The address the embedded Jetty server listens on. Defaults to 0.0.0.0.
admin.serverPort : (Java system property: zookeeper.admin.serverPort) The port the embedded Jetty server listens on. Defaults to 8080.
admin.idleTimeout : (Java system property: zookeeper.admin.idleTimeout) Set the maximum idle time in milliseconds that a connection can wait before sending or receiving data. Defaults to 30000 ms.
admin.commandURL : (Java system property: zookeeper.admin.commandURL) The URL for listing and issuing commands relative to the root URL. Defaults to "/commands".
修改zookeeper的WEB默认端口,在这里:
conf/zoo.cfg
# admin.serverPort=9876
安装并启动zookeeper参考:
- https://blog.csdn.net/caiqiiqi/article/details/104279860
启动provider,连接zookeeper
为了体验一下分布式的效果,这次就不跟provider公用同一个IP了。
在ubuntu上用同一套代码,改一下HttpConsumer.java
和http-consumer.xml
,
mvn clean package
编译打包,
然后执行Consumer,
mvn -Dexec.mainClass=org.apache.dubbo.samples.http.HttpConsumer exec:java
然后provider端也收到了这个调用:
因为provider暴露了DemoService这个接口,而consumer实现了这个接口DemoServiceImpl。
参考:
Dubbo的redis协议RCE
dubbo不提供redis协议服务的导出,只提供redis协议服务的引用,因此这个漏洞的攻击场景主要用于内网横向移动,当控制了内网一台redis后,批量获取dubbo client主机的权限。
//TODO
Dubbo callback的RCE
第一次修改之后没有更新http-provicer.xml,就启动consumer了,导致报错了:
增加一个Service和Impl之后在http-provider.xml中增加一个bean和service:
启动provider的时候会注册这两个Service:
ubuntu端,修改完之后重新编译一下:
mvn clean package
然后再执行HttpConsumer