挖洞经验 | 发现Lucee 0day漏洞RCE掉三个苹果公司网站

文章图片
本文中 , 国外安全研究员@rootxharsh和@iamnoooob通过对苹果(Apple)公司网站的分析 , 发现了其中三个苹果公司网站部署中用到了基于开源程序Lucee的CMS应用 , 经过对Lucee的安全测试 , @rootxharsh和@iamnoooob发现了其中存在的0day漏洞 , 通过构造利用 , 可以实现对三个苹果公司网站的远程代码执行(RCE) , 漏洞最终收获了苹果(Apple)公司$50,000的奖励 。 开始之前
在看了Sam发布的一系列针对苹果公司网站的漏洞测试报告之后 , 我们也着手准备测试 , 我们把测试重点放在苹果公司网站个人信息(PII)泄露和内部网络架构曝露方面 , 这应该也是苹果公司比较关注的漏洞 。
前期侦测经过一系列的WEB应用识别和探测 , 我们发现苹果公司有三个网站上运行的CMS(内容管理系统)都是基于开源程序Lucee开发的 。 由于其中涉及的CMS和Lucee都是可以开源获取的 , 因此 , 可以轻松搭建本地环境进行测试 , 所以这三个网站看似值得深入探究 。 从漏洞历史来看 , Lucee披露过一些公开漏洞且还具备一个管理员登录面板 , 另外 , Lucee的另外一个相似的分支语言Railo曾被知名白帽OrangeTsai曝出大洞 。
经测试 , 这三个网站中的Lucee管理员登录面板都可以访问 , 其中有一个版本较近 , 两个版本稍老 。
https://facilities.apple.com/(Recentversion)https://booktravel.apple.com/(Olderversion)https://booktravel-uat.apple.com/(Olderversion)
苹果公司网站的WAF设置从部署新版本Lucee的网站facilities.apple.com开始 , 为了能进一步进行漏洞挖掘 , 我们需要了解苹果公司网站的WAF设置 , 而且 , 尤为重要的是 , 需要了解facilities.apple.com网站前端与后端的通信交互时的WAF规则触发 。
苹果公司网站的WAF设置规则非常头痛 , 它几乎会对拦截掉所有的URL路径遍历和SQL注入尝试 。 网站facilities.apple.com上的前端服务(反向代理服务)配置了大多只返显后端响应代码200或404 , 即使后端服务器被请求了其它的响应代码 , 但在前端上依然只会返显403 , 这与其WAF触发规则一致 。
Lucee的不当配置问题我们在本地搭建了一个Lucee/CMS测试环境 , 偶然发现了其中存在的一个配置不当问题 , 攻击者利用该问题可以直接访问到受保护的ColdFusion标记语言文件(CFM) , 由此可以实现一些未授权操作 。
在连接CFM文件时 , 一旦遇到其中的request.admintype变量 , 由于我们不是管理员身份 , 执行进程会立即停止 。 为此 , 我们尝试测试变量request.admintype之前的操作 , 看会否会存在漏洞 。 最终 , 我们利用以下三个文件 , 在Lucee安装环境中发现了一个预授权/未授权远程代码执行漏洞(RCE):
imgProcess.cfm(稍旧版本中没有)admin.search.index.cfmext.applications.upload.cfm
失败尝试imgProcess.cfm文件中的远程代码执行漏洞(RCE)为了模拟苹果网站中的运行环境 , 我们在本地安装了相同版本的Lucee 。 之后 , 在打开imgProcess.cfm文件时 , 苹果网站服务端抛出了403Forbidden的响应 , 这也就是说 , 该文件是存在的 , 只不过被禁止访问而已 。 经过一番测试后我们才发现 , 这里需要指定正确的参数 , 否则就会导致服务端抛出403 。 如下错误参数:
文章图片
正确参数:
文章图片
经过分析 , 我们发现imgProcess.cfm文件中存在一个路径遍历漏洞 , 可以利用该漏洞以给定内容在服务器任意位置创建文件:
<cfoutput><cffileaction="write"file="#expandPath('{temp-directory}/admin-ext-thumbnails/')#__#url.file#"Output="#form.imgSrc#"createPath="true"></cfoutput>在文件创建过程中 , 会请求file参数 , 并利用命令{temp-directory}/admin-ext-thumbnails/__{our-input}生成文件 , 其中的our-input内容可通过上述带参imgSrc的POST请求来定义 。
从以上代码#url.file中可以看到 , 在对Linux系统的路径或文件遍历前 , 需要之前的目录(这里即目录)是存在的 , 好在expandPath方法会创建目录路径并以字符串形式返回 。 所以 , 上述方法函数在传递文件file=/../../../context/pwn.cfm的同时 , 就会创建目录 , 可以对网站webroot根目录进行遍历 , 就形成了一个简单的RCE漏洞通道 。
然而 , 即使有了这个RCE , 但由于有WAF规则对请求参数中的../进行拦截 , 所以我们也不能直接形成漏洞利用 。 该功能中 , imgProcess.cfm文件会以url.file和form.imgSrc为参数去调用创建文件 , 如果这两个参数都是形式化或POST请求的带参 , 那么就有可能不会触发WAF规则 。 这样的话 , 我们就能使用上述imgProcess.cfm文件RCE方法 , 在服务器中任意位置创建任意名称和内容的文件 , 而不触发WAF规则 。
- 爱吃黄金的生物被发现,科学家们有一个大胆的想法
- 绝美!男子西藏发现蓝色古冰川,景象令人震撼,网友:请一定要保护好
- 发现这游戏不是我想的那么简单
- 北京584路乘务员巡视发现,老年座下竟有13万元现金……
- 普拉多的霸气改装经验分享!老司机:争做之家最帅的霸道(普拉多)黑武士!
- 现在才发现,原来手机充电器还有这功能呢,卖手机的绝对不告诉你
- 三巨头就职经验,涉猎MPV/皮卡/SUV,全新野马设计师曝光
- 九峰吐鲁番兽是什么动物?中国发现2.5亿年前九峰吐鲁番兽!
- 品质中国 匠心华东——发现华东股份品质创新的密码
- 月球背面首次发现“地外生命”,嫦娥四号立了头功,引科学界热议
