Play框架任意文件读取漏洞

栏目: Scala · 发布时间: 6年前

内容简介:360 Redteam在研究区块链项目过程中,发现某区块链项目API使用了Play Framework框架进行构建网站,我们对该框架进行审计后发现一处通用型漏洞,该框架处理静态文件资源路径不当,在Windows环境下可导致任意文件读取漏洞。Play Framework是一个开源Star10k+的Web应用框架,使用Scala和Java语言混合编写。该框架具有可扩展、资源消耗低等特点。我们发现该框架涵盖客户人群包括游戏公司EA、领英、沃尔玛、三星等多家知名公司。同时我们发现部分区块链钱包项目中也使用到了该框

Play框架任意文件读取漏洞

简介

360 Redteam在研究区块链项目过程中,发现某区块链项目API使用了Play Framework框架进行构建网站,我们对该框架进行审计后发现一处通用型漏洞,该框架处理静态文件资源路径不当,在Windows环境下可导致任意文件读取漏洞。

Play Framework是一个开源Star10k+的Web应用框架,使用Scala和 Java 语言混合编写。该框架具有可扩展、资源消耗低等特点。我们发现该框架涵盖客户人群包括游戏公司EA、领英、沃尔玛、三星等多家知名公司。同时我们发现部分区块链钱包项目中也使用到了该框架,该漏洞可能会导致窃取钱包秘钥等问题。

漏洞编号

CVE-2018-13864

发现团队

360 RedTeam & 0keeTeam

影响范围

Play Framework 2.6.12-2.6.15

漏洞详情

首先我们在Play Framework的 routes 文件中可以看到静态资源解析路由的配置信息

# Map static resources from the /public folder to the /assets URL path GET /assets/*file controllers.Assets.at(path="/public", file)

该路由调用 controllers.Assets.at 函数将 /assets/* 指向文件目录 /public ,即可解析该目录中的CSS、JS文件等。跟踪controllers.Assets.at 函数

漏洞文件:/framework/src/play/src/main/scala/play/api/controllers/Assets.scala Play框架任意文件读取漏洞

跟踪 assetAt 函数 Play框架任意文件读取漏洞

这里使用 resourceNameAt 函数获取标准化的文件名,跟踪该函数 Play框架任意文件读取漏洞

resourceNameAt 函数首先会将文件路径进行URL解码,然后将 path 与 decodedFile进行拼接然后通过 removeExtraSlashes 函数将双斜杠//替换成单斜杠/,拿到最终的绝对路径。

但是后面有路径标准化判断,会判断文件路径标准化后的前缀是否为 /public/ ,跟踪一下 fileLikeCanonicalPath 函数看看都干了什么 Play框架任意文件读取漏洞

该函数中以“/”为分隔符将路径进行分隔,然后对数组进行遍历,如果碰到“..”就删除前一个数组元素,达到标准化路径 Play框架任意文件读取漏洞

既然代码中是以“/”分隔,在Windows环境中,我们可以使用反斜杠“\”进行绕过,这样不会删掉前面目录,达到跨目录的效果,而且前缀依然是 /public/,满足标准化路径的判断。

我们发现在Scala版与Java版均受该漏洞影响。

漏洞利用

我们在官网下载了Scala版的聊天室Demo( https://github.com/playframework/play-scala-chatroom-example/tree/2.6.x ),在Windows下使用sbt运行该源码。

Play框架任意文件读取漏洞

抓取一个静态文件,然后找到项目编译后对应的文件路径 Play框架任意文件读取漏洞

构造payload,读取项目目录中的 build.sbt 文件试试,这个文件正常是访问不到的。 Play框架任意文件读取漏洞

400报错,查了一下发现是akka http不允许特殊符号,那我们进行URL编码 Play框架任意文件读取漏洞

成功跨目录读取到了其他文件。

修复方案

升级到Playframework >=2.6.16版本

时间线

2018-07-10 360 Redteam报告Playframework官方人员

2018-07-11 Playframework官方确认漏洞

2018-07-17 Playframework发布2.6.16版本,修复此漏洞

参考链接

https://www.playframework.com/security/vulnerability/CVE-2018-13864-PathTraversal


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

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

自媒体之道

自媒体之道

吴晨光 / 中国人民大学出版社有限公司 / 2018-7-31 / CNY 49.80

内容简介: 《自媒体之道》为你解决四个问题: 1. 一篇10万+的刷屏文章是怎么写出来的? 2. 一支10万+的爆款视频是怎么做出来的? 3. 一个100万+粉丝的大号是怎么运营的? 4. 神秘的人工智能(AI)和备受争议的算法是怎么运行的? 这部超过30万字的著作,集纳了中国顶尖自媒体人和平台运营者3年的实操经验。全书13章,详解案例150+,提炼“锦囊秒句”......一起来看看 《自媒体之道》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

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

在线 XML 格式化压缩工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器