Spring Cloud Config Server 任意文件读取漏洞
1.漏洞描述
-----------------------------------
平安集团银河实验室 安全研究人员发现Pivotal公司旗下产品 Spring Cloud Config Server 的安全漏洞(CVE-2019-3799)并第一时间向Pivotal公司进行报告。Pivotal公司发布了关键补丁更新公告 https://pivotal.io/security/cve-2019-3799
Spring Cloud Config一套开源分布式系统配置服务,为分布式环境提供外部配置服务支持。
Spring Cloud Config Server 路径穿越与任意文件读取漏洞,可通过构造的恶意请求直接读取服务器任意文件,风险较大。
影响范围:
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 Config1.3及其以下版本)
值得注意的是通过maven自动构建的应用,如果不指定
spring-cloud-config-server的版本,默认安装的还是spring-cloud-config-server 1.3.0不安全版本
2.修复措施
-----------------------------------
Spring Cloud Config 2.1.x 升级至 to 2.1.2
Spring Cloud Config 2.0.x u升级至 2.0.4
Spring Cloud Config 1.4.x 升级至 1.4.6
老版本升级到指定的安全版本
spring-cloud-config-server应部署在内网中并使用Spring Security进行用户身份鉴定。
Spring Security配置支官方文档Securing Spring Cloud Config Server
3.漏洞复现
-----------------------------------
GET /test/dev/master/..%252F..%252F..%252F..%252F..%252F..%252F..%252Fetc%252Fpasswd HTTP/1.1
Host: 0.0.0.0:8001
4.漏洞分析
-----------------------------------
Spring Cloud Config项目是一个解决分布式系统的配置管理方案。它包含了Client和Server两个部分,server提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client通过接口获取数据、并依据此数据初始化自己的应用。Spring cloud使用git或svn存放配置文件,默认情况下使用git。
环境搭建:
Pom.xml 配置依赖
Application.yml 设置配置文件存放的远程仓库地址
启动文件
org/springframework/cloud/config/sever/resource/ResourceController.java中可以查看http请求格式为@RequestMapping("/{name}/{profile}/{label}/**")
name为应仓库名称
profile为应配置文件环境
label 为git分支名
** 为具体文件名
实际测试中只需要label为存在的分支名即可,一般git仓库都存在master分支
所以通用poc地址为
/test/dev/master/..%252F..%252F..%252F..%252F..%252F..%252F..%252Fetc%252Fpasswd
传入参数后 会调用this.resourceRepository.findOne(name, profile, label, path)并根据配置文件中的仓库地址去组装新的地址并获取文件内容
我们跟入到org.springframework.cloud.config.server.resource的findOne方法中
findOne 中location为远程git地址下载到本地的tmp目录地址,然后和我们传入的path拼装为file:/var/folders/2t/2pcjgph96ms9jltyfnm5brr40000gn/T/config-repo-1763575875528585941/..%2F..%2F..%2F..%2F..%2F..%2F.-dev.%2Fetc%2Fpasswd
this.resourceLoader.getResource(path)方法为 spring.core中封装的获取资源文件方法,默认会还原URLdecode的地址并通过 ../../将前面的tmp路径地址吃掉,最终达到穿越到任意路径,读取任意文件的效果。
--------------------------------------------------------------------------
近年来,中国平安不断加大科技投入。银河实验室是由多位资深安全专家组成的一支专注于金融科技安全领域的研究团队,有丰富的安全攻防对抗经验和国内行业领先的技术实力,切实保障了平安集团旗下各个业务板块和产品的安全,提供高效的安全技术支撑,输出专业的安全研究成果,并积极护航客户合作商户生态伙伴的基础信息安全。实验室研究方向覆盖渗透测试、APT攻击、欺骗防御、物联网安全、前沿技术安全、溯源取证、入侵检测、威胁情报、区块链安全、攻防对抗等安全技术方向领域。并逐步形成全面、纵深的安全技能矩阵。定期开展内部培训/技术分享交流,自主研发一些安全工具和系统,携同各方对抗黑灰产,并积极在集团内各专业公司进行安全能力互动与普及安全意识。
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
随时掌握互联网精彩
- 1 奋力打开改革发展新天地 7949028
- 2 中方回应特朗普威胁收回巴拿马运河 7963626
- 3 刘强东提前发年终奖 7822233
- 4 “冷资源”里的“热经济” 7758200
- 5 全球约有1.9亿妇女为内异症患者 7618573
- 6 国足原主帅李铁已上诉 7588804
- 7 保时捷断臂求生 7412969
- 8 山姆代购在厕所分装蛋糕 7378117
- 9 喝水后有4种表现提示肾有问题 7275798
- 10 男子闪婚生女后发现妻子结过7次婚 7105479