此文章由SpringKiller安全研究师傅产出,这位佬是一个能独立开发一款企业级IAST,伸手0day伸脚1day,能手搓操作系统用脚逆向的师傅,还是OWASP的代码贡献者之一。哦,差点忘了,这个师傅能书会画,上厅堂下厨房无所不能,现在是甲方大爹。呆哥建议爱学习的可以找他击剑一下。
SpringKill师傅的Github地址:https://github.com/springkill
01
厂商通报
没POC没分析,肿么办,没事SpringKill给你代审整出来。
02
漏洞描述
Atlassian Confluence 存在模板注入代码执行漏洞,攻击者可构造恶意请求触发模板注入进而造成远程命令执行。
03
影响版本
停止更新的各个版本以及:
-
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
04
漏洞分析
删除了:
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表达式执行漏洞。
05
关于RCE
这块可是焦头烂额,尝试构造了几个都没成功执行命令(弹计算器),直到今天看到P牛的vulhub更新了,才想起用回显,这里放下vulhub链接,就不照抄了。https://github.com/vulhub/vulhub/tree/master/confluence/CVE-2023-22527
06
关于POC
师傅们看着代审流程分析出POC吧,这里不会提供POC。
原文始发于微信公众号(阿呆攻防):1day代审分析|Atlassian Confluence 远程代码执行漏洞(CVE-2023-22527)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论