Apache ActiveMQ任意文件写入漏洞(CVE-2016-3088)复现
CVE-2016-3088 是 Apache ActiveMQ 中的一个任意文件写入漏洞。攻击者可以借助此漏洞将任意文件写入服务器中,从而实现远程代码执行等攻击。下面将介绍如何复现该漏洞。
1. 环境搭建
首先需要搭建 Apache ActiveMQ 环境。可以在官方网站下载最新版本的 ActiveMQ,本文使用的是 ActiveMQ-5.14.5。
下载地址:http://activemq.apache.org/download.html
下载完成后,解压至任意目录即可。
2. 漏洞利用
漏洞利用步骤如下:
步:启动 ActiveMQ
进入 ActiveMQ 安装目录,运行 bin/activemq start 即可启动 ActiveMQ。默认情况下,ActiveMQ 运行在 localhost:61616 上。
第二步:访问管理页面
在浏览器中访问 http://localhost:8161/admin/,进入 ActiveMQ 的管理页面。
第三步:上传文件
在管理页面的左侧菜单中,点击 Fileserver(位于 File Uploads 下面),然后点击 Add(在 File View 下面),选择任意一个文件上传即可。
在上传文件时,参数名为 file,如下所示:
POST /admin/fileserver/uploadfilenow.action HTTP/1.1 Host: localhost:8161 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryHoVX7DLqSfBOr7OL Content-Length: 248 ------WebKitFormBoundaryHoVX7DLqSfBOr7OL Content-Disposition: form-data; name="file"; filename="test.txt" Content-Type: text/plain test ------WebKitFormBoundaryHoVX7DLqSfBOr7OL Content-Disposition: form-data; name="folder" / ------WebKitFormBoundaryHoVX7DLqSfBOr7OL
这段请求上传了 test.txt 文件到根目录下。
第四步:访问文件
在管理页面的左侧菜单中,点击 Fileserver(位于 File Uploads 下面),然后点击 Browse(在 File View 下面),进入文件浏览页面。可以看到刚刚上传的 test.txt 文件。
点击 test.txt 文件,进入文件下载页面。在该页面的 URL 中,可以看到 test.txt 文件的路径:
http://localhost:8161/fileserver/files/test.txt
这就是漏洞利用的关键,使用该路径即可任意访问 ActiveMQ 运行目录下的文件。
第五步:文件读取
在浏览器中访问 http://localhost:8161/fileserver/files/../conf/activemq.xml 即可读取 ActiveMQ 的配置文件 activemq.xml。
第六步:文件写入
使用类似下面的请求即可将文件内容写入到 active.log 文件中:
POST /fileserver/files/../../data/activemq.log HTTP/1.1 Host: localhost:8161 Content-Type: application/x-www-form-urlencoded Content-Length: 32 cmd=write&data=test&pos=0&len=4
这段请求将字符串 “test” 写入了 active.log 文件的起始位置。
3. 漏洞修复
漏洞修复可以通过升级 ActiveMQ 版本来完成。官方已经发布了修复版本,建议尽快升级。
4. 总结
CVE-2016-3088 是一款比较严重的漏洞,能够导致远程代码执行等后果。本文介绍了漏洞的复现过程和修复方法,使读者更好地了解该漏洞。同时,还提醒读者注意 Server 端任意文件访问漏洞和任意文件写入漏洞的防范措施,减轻安全风险。
