509 字
3 分钟
(CVE-2023-22527)Atlassian Confluence - Remote Code Execution

漏洞描述#

Atlassian Confluence 存在模板注入代码执行漏洞,攻击者可构造恶意请求触发模板注入进而造成远程命令执行。

影响版本#

停止更新的各个版本以及: 8.4.0 <= Confluence Data Center and Server <= 8.4.4 8.5.0 <= Confluence Data Center and Server <= 8.5.3 8.6.0 <= Confluence Data Center <= 8.6.1

漏洞分析#

还是老样子,diff一下代码发现confluence的一些修改,有一个删除了的文件引起注意: 删除了: ConfluenceStrutsUtil继承自VelocityStrutsUtil: VelocityStrutsUtil又继承自StrutsUtil,看到这里推测velocity模板注入。 具体应该和前几次有几分相似,velocity解析导致的ognl表达式执行,于是可以去看vm文件。 再看vm文件的时候,犯了一个很大的错误,我在重置密码这里看了好久,但是始终是没有结果,它是从action里面读取的变量,所以应该不存在漏洞了,通过vm文件进行访问的时候并不能设置这个值。 又正值年终总结正好很忙,于是就暂且搁置。 后来发现GitHub上多了一个项目https://github.com/Sudistark/patch-diff-CVE-2023-22527,里面有所有vm的信息,于是就是直接搜一下: 于是我尝试一些其他接口,但是都是一无所获,这期间想让Z3教我,得到的回复是: 最后在text-inline.vm中会调用到findvalue方法从而造成表达式的执行: 试一下经典poc: 在StrutsUtil里面果然是找到了这个内容,太长了分开截: 后面就会按照模板定义的走到findvalue 到这里就执行了: 然后通过getText方法取值,这里发现已经计算完毕了: 那么这也就通过velocity造成了Ognl表达式执行漏洞。

关于RCE#

这块可是焦头烂额,尝试构造了几个都没成功执行命令(弹计算器),直到今天看到P牛的vulhub更新了,才想起用回显,这里放下vulhub链接,就不照抄了。 https://github.com/vulhub/vulhub/tree/master/confluence/CVE-2023-22527

(CVE-2023-22527)Atlassian Confluence - Remote Code Execution
https://springkill.github.io/posts/cve-2023-22527-atlassian-confluence-remote-code-execution/
作者
SpringKill
发布于
2024-01-23
许可协议
CC BY-NC-SA 4.0