问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
Alibaba Sentinel SSRF漏洞(CVE-2021-44139)浅析
漏洞分析
Sentinel中的管控平台sentinel-dashboard存在认证前SSRF漏洞,恶意用户无需认证即可通过该接口进行SSRF攻击(CVE-2021-44139)。
0x00 漏洞简介 ========= `Alibaba`开源限流熔断组件`Sentinel`是阿里巴巴发行的面向分布式服务架构的高可用防护开源组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来帮助用户保障微服务的稳定性。 > github源码地址及更多介绍:[](https://github.com/alibaba/Sentinel/)<https://github.com/alibaba/Sentinel/> 2021年11月,`SecCoder Security Lab`的`threedr3am`发现了`Sentinel`中的管控平台`sentinel-dashboard`存在认证前SSRF漏洞,恶意用户无需认证即可通过该接口进行SSRF攻击。 > report地址:[](https://github.com/alibaba/Sentinel/issues/2451)<https://github.com/alibaba/Sentinel/issues/2451> 0x01 环境搭建及复现 ============ 拉取源码:[](https://github.com/alibaba/Sentinel.git)<https://github.com/alibaba/Sentinel.git> 导入idea,切换branch到`release-1.8` ```bash git checkout release-1.8 ``` 运行`Sentinel/sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/DashboardApplication.java`即可启动服务后台  访问http://your-ip:8080  1. 本地监听端口12345,`nc -lvvp 12345` 2. 构造url发起攻击,`curl -XGET '<http://your-ip:8080/registry/machine?app=SSRF-TEST&appType=0&version=0&hostname=TEST&ip=your-ip:12345%23&port=0'`  nc接收到了请求  0x02 漏洞分析 ========= 在`src/main/java/com/alibaba/csp/sentinel/dashboard/controller/MachineRegistryController.java`的`receiveHeartBeat`方法打断点调试  发送payload跟进  进入`receiveHeartBeat`方法后,对端口进行了检验,需要正整数,而对ip进行了 **非空** 和 **长度(小于128)** 的检验后便传入`machineInfo`,跟进`addMachine`方法   继续步入  仅仅是把传入的app等字符取出,没有做其他检验就返回给`machineInfo` 至于`machineInfo`的值在何处被调用,需要看`src/main/java/com/alibaba/csp/sentinel/dashboard/metric/MetricFetcher.java` `start`方法在构造方法中被调用  跟进`start`方法中的`fetchAllApp`方法  该函数获取所有app对象放进list中,再把list传入app遍历调用`doFetchAppMetric`  进入到`fetchOnce`,对app的信息做判断  `machineInfo`对象的值在这里取出  之后拼接到url中,发出get请求,同时可以构造`#`注释后面拼接的内容。 整个过程中没有有效的参数过滤和校验,可以构造特殊参数进行ssrf利用。 0x03 修复 ======= 对比最新版本代码,官方修复方式是在`src/main/java/com/alibaba/csp/sentinel/dashboard/controller/MachineRegistryController.java`中调用`IPAddressUtil`工具类对IP地址增加合法检验,只有合法的IPv4和v6地址可以正确传入  0x04 参考 ======= - [](https://github.com/alibaba/Sentinel/issues/2451)<https://github.com/alibaba/Sentinel/issues/2451>
发表于 2022-08-30 09:43:58
阅读 ( 9331 )
分类:
漏洞分析
1 推荐
收藏
0 条评论
请先
登录
后评论
3r1cCheng
3 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!