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


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

查看所有标签

猜你喜欢:

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

The Smashing Book

The Smashing Book

Jacob Gube、Dmitry Fadeev、Chris Spooner、Darius A Monsef IV、Alessandro Cattaneo、Steven Snell、David Leggett、Andrew Maier、Kayla Knight、Yves Peters、René Schmidt、Smashing Magazine editorial team、Vitaly Friedman、Sven Lennartz / 2009 / $ 29.90 / € 23.90

The Smashing Book is a printed book about best practices in modern Web design. The book shares technical tips and best practices on coding, usability and optimization and explores how to create succes......一起来看看 《The Smashing Book》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

随机密码生成器
随机密码生成器

多种字符组合密码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码