zoukankan      html  css  js  c++  java
  • Active MQ未授权访问

    ActiveMQ是一款流行的开源消息服务器。默认情况下,ActiveMQ服务是没有配置安全参数。恶意人员可以利用默认配置弱点发动远程命令执行攻击,获取服务器权限,从而导致数据泄露。
    一、未授权访问
    默认端口:8161
    401默认密码:admin/admin
    fofa:body="ActiveMQ"&&port=8161&&country=CN
    FOFA搜索
    401认证
    默认密码admin/admin
    默认账号密码

    二、ActiveMQ物理路径泄漏漏洞
    ActiveMQ默认开启PUT请求,当开启PUT时,构造好Payload(/fileserver/a../../%08/..%08/.%08/%08)(即不存在的目录),Response会返回相应的物理路径信息:
    Request Raw:

    PUT /fileserver/a../../%08/..%08/.%08/%08 HTTP/1.1
    Host: 192.168.197.25:8161
    Authorization: Basic YWRtaW46YWRtaW4=
    Content-Length: 4
    test
    
    

    Response Raw:

    HTTP/1.1 500 /data/apache-activemq-5.7.0/webapps/fileserver//.././(No such file or directory)
    Content-Length: 0
    Server: Jetty(7.6.7.v20120910)
    

    三、文件上传
    背景介绍:
    ActiveMQ的web控制台分三个应用,admin、api和fileserver,其中admin是管理员页面,api是接口,fileserver是储存文件的接口;admin和api都需要登录后才能使用,fileserver无需登录。
    fileserver是一个RESTful API接口,我们可以通过GET、PUT、DELETE等HTTP请求对其中存储的文件进行读写操作,其设计目的是为了弥补消息队列操作不能传输、存储二进制文件的缺陷。
    使用条件:
    ActiveMQ在5.12.x~5.13.x版本中,已经默认关闭了fileserver这个应用(你可以在conf/jetty.xml中开启之);在5.14.0版本以后,彻底删除了fileserver应用。
    fileserver支持写入文件(但不解析jsp),同时支持移动文件(MOVE请求)。
    写入的方法:

    • 写入webshell(方便快捷、但需要登录admin和api两个应用,并且不解析jsp)
    • 写入cron或ssh key等文件(可直接反弹shell,但需root权限)
    • 写入jar或jetty.xml等库和配置文件(写入jar需要jar后门,写入xml配置文件需要adctivemq的绝对路径)

    四、反序列化
    影响范围:Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞
    原理:该漏洞源于程序没有限制可在代理中序列化的类。远程攻击者可借助特制的序列化的Java Message Service(JMS)ObjectMessage对象利用该漏洞执行任意代码。
    默认端口:61616
    web端口:8161

    exp:

    java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "yourcommand" -Yp ROME your-ip 61616
    

    使用jmet进行漏洞利用。首先下载jmet的jar文件,并在同目录下创建一个external文件夹(否则可能会爆文件夹不存在的错误)

    此时会给目标ActiveMQ添加一个名为event的队列,我们可以通过http://your-ip:8161/admin/browse.jsp?JMSDestination=event看到这个队列中所有消息:
    消息队列.png

    当管理员点击查看消息后,命令执行成功。
    可将command换成反弹shell语句。

  • 相关阅读:
    Porter Stemming Algorithm
    Hook API to detect memory leak
    Are tuples more efficient than lists in Python?
    boost::intrusive_ptr VS boost::shared_ptr
    How Python GC deal with referencecycles?
    LINQ排序数组
    Sublime Text 2 (Version 2.0.1 build 2217) x64 破解注册方法
    GC in C# and Python
    Python中的else
    Managed C++ Destructor
  • 原文地址:https://www.cnblogs.com/ffx1/p/12653629.html
Copyright © 2011-2022 走看看