Spring Cloud Config目录遍历漏洞(CVE-2019-3799)

漏洞描述

Spring Cloud Config目录遍历漏洞的本质是允许应用程序通过spring-cloud-config-server模块获取任意配置文件。攻击者可以构建恶意URL以利用目录遍历漏洞。

漏洞危害

由于spring-cloud-config-server模块未对传入路径进行安全限制,攻击者可以利用多个…%252f进行目录遍历,查看服务器其他路径的敏感文件,造成敏感信息泄露。

漏洞影响版本

Spring Cloud Config 2.1.0 to 2.1.1
Spring Cloud Config 2.0.0 to 2.0.3
Spring Cloud Config 1.4.0 to 1.4.5
其他较早版本

漏洞分析

Spring Cloud Config Server是Spring为了分布式管理的一个组件,在Server端中负责存储配置,Client可以通过http的形式获取配置值。payload对应的路由存在于org.springframework.cloud.config.server.resource.ResourceController#retrieve()中,其代码
在这里插入图片描述
{name}/{profile}/{label}:name对应仓库名,profile对应配置文件,label为git分支名,一般上都有一个master分支。实际测试中name、profile值无所谓,但是label分支名必须存在。调试跟进getFilePath
在这里插入图片描述
这边已经把%25urldecode为%了,继续跟retrieve(),这边path传入的是我们的payload
在这里插入图片描述
继续跟下findOne,位于org.springframework.cloud.config.server.resource.GenericResourceRepository#findOne
在这里插入图片描述
locations目录file:/C:/Users/icu/AppData/Local/Temp/config-repo-6608031716294156148/是配置文件中git仓库被clone的临时位置,然后拼接…/造成跨目录文件读取。

漏洞复现

手动搭建
进入目录 spring-cloud-config-2.1.0.RELEASE,然后执行下面的命令启动 Spring Cloud Config 服务端:
cd spring-cloud-config-server
…/mvnw spring-boot:run
在这里插入图片描述
Docker搭建
docker-compose build
docker-compose up –d
注:执行docker-compose up –d命令后,需要等待5分钟以上才能访问,开启过程比较慢。
在这里插入图片描述
访问http://IP:8888/foo/label/master/test.json
在这里插入图片描述
抓包,正常访问
在这里插入图片描述
使用get方法传入/foo/label/master/…%252F…%252F…%252F…%252Fetc%252fpasswd
在这里插入图片描述

Poc验证:python3 poc.py –u http://IP:PORT
在这里插入图片描述

修复建议

升级Spring Cloud Config至安全版本,并依据Spring官方文档对应用加固:https://cloud.spring.io/spring-cloud-config/multi/multi__spring_cloud_config_server.html#_security

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值