作者: 且听安全
原文链接:https://mp.weixin.qq.com/s/XDX5eq3UE51_yLo0Q4wZ0g
漏洞信息
近日,Atlassian官方发布了一则Atlassian Jira Server RCE的漏洞公告:
漏洞编号为CVE-2021-43947。从官方描述来看,属于CVE-2021-39115补丁绕过。CVE-2021-39115漏洞的复现过程可以参考公众号文章:
CVE-2021-39115
公众号:且听安全CVE-2021-39115-Atlassian Jira Service Management Server SSTI漏洞分析
漏洞分析
安装完毕后,修改/bin/setenv.bat
文件,加入调试信息:
set JVM_SUPPORT_RECOMMENDED_ARGS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:8787
重新启动后打开远程调试。
start-jira.bat /fg
既然这个漏洞是补丁绕过,我们首先做下补丁对比。Atlassian Jira Server通过黑名单方式修复Velocity SSTI漏洞,查看velocity.properties
配置文件,对比发现新增了几个黑名单类:
新增了黑名单类如下:
webwork.util.ValueStack,\
javax.el.ELProcessor,\
javax.script.ScriptEngineManager,\
java.lang.ProcessBuilder,\
javax.el.ImportHandler,\
javax.el.ELManager
看到这几个熟悉的类,有经验的小伙伴大概能够猜到如何实现绕过了。因为上一篇Atlassian Jira Server漏洞没有进行分析,本文还是从代码审计的角度简要分析下漏洞触发流程。
查看web.xml
:
一步一步跟调用栈非常长,既然问题出在邮件处理部分,直接定位com.atlassian.jira.web.action.admin.mail.SendBulkMail#doExecute
:
往下走,进入com.atlassian.jira.mail.builder.EmailRenderer#renderEmailSubject
:
模板渲染在org.apache.velocity.app.VelocityEngine#evaluate
处完成:
为了方便bypass黑名单,我们可以编写测试代码,在断点处构造不同模板逐步实现绕过:
这样处理主要是为了方便进行漏洞调试分析。结合新增加的黑名单,应该很容易构造出绕过姿势。感兴趣的小伙伴可以按照上面的方法自行进行研究,有需要的可以关注公众号后私聊。
漏洞复现
复现过程可以参考以前分享的漏洞CVE-2021-39115:
CVE-2021-39115
公众号:且听安全CVE-2021-39115-Atlassian Jira Service Management Server SSTI漏洞分析
本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/1813/