内容简介:360 Redteam在研究区块链项目过程中,发现某区块链项目API使用了Play Framework框架进行构建网站,我们对该框架进行审计后发现一处通用型漏洞,该框架处理静态文件资源路径不当,在Windows环境下可导致任意文件读取漏洞。Play Framework是一个开源Star10k+的Web应用框架,使用Scala和Java语言混合编写。该框架具有可扩展、资源消耗低等特点。我们发现该框架涵盖客户人群包括游戏公司EA、领英、沃尔玛、三星等多家知名公司。同时我们发现部分区块链钱包项目中也使用到了该框
简介
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
跟踪 assetAt 函数
这里使用 resourceNameAt 函数获取标准化的文件名,跟踪该函数
resourceNameAt 函数首先会将文件路径进行URL解码,然后将 path 与 decodedFile进行拼接然后通过 removeExtraSlashes 函数将双斜杠//替换成单斜杠/,拿到最终的绝对路径。
但是后面有路径标准化判断,会判断文件路径标准化后的前缀是否为 /public/ ,跟踪一下 fileLikeCanonicalPath 函数看看都干了什么
该函数中以“/”为分隔符将路径进行分隔,然后对数组进行遍历,如果碰到“..”就删除前一个数组元素,达到标准化路径
既然代码中是以“/”分隔,在Windows环境中,我们可以使用反斜杠“\”进行绕过,这样不会删掉前面目录,达到跨目录的效果,而且前缀依然是 /public/,满足标准化路径的判断。
我们发现在Scala版与Java版均受该漏洞影响。
漏洞利用
我们在官网下载了Scala版的聊天室Demo( https://github.com/playframework/play-scala-chatroom-example/tree/2.6.x ),在Windows下使用sbt运行该源码。
抓取一个静态文件,然后找到项目编译后对应的文件路径
构造payload,读取项目目录中的 build.sbt 文件试试,这个文件正常是访问不到的。
400报错,查了一下发现是akka http不允许特殊符号,那我们进行URL编码
成功跨目录读取到了其他文件。
修复方案
升级到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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 【FreeBuf字幕组】Web安全漏洞系列:Electron框架漏洞
- 漏洞预警丨某通用交易所框架组合型严重漏洞
- Web框架下安全漏洞的测试反思
- PHP框架Lavarel被发现存在高危漏洞
- ATtiny85漏洞利用框架HID测试分析
- Struts2框架: S2-002 漏洞详细分析
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
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》 这本书的介绍吧!