Пожалуйста, обратите внимание, что пользователь заблокирован
Вступление
Обзор
Злоумышленники, не прошедшие проверку подлинности в локальной сети, могут заставить стандартные системы Windows выполнять произвольные HTTP-запросы GET, в том числе к интерфейсу localhost. Взаимодействие с пользователем не требуется. Установка IIS не требуется. Только обнаружение сети должно быть включено для запуска эксплойта (обычно для частных сетей по умолчанию включено). Злоумышленник не может просмотреть ответ, что делает его уязвимым для «слепого подлога на стороне сервера».
Это обеспечивает примитив эксплойта, который можно использовать для атак на сервисы, такие как REST API. Приложения, развернутые только на локальном узле, или приложения в защищенных сегментах сети, подвержены злоумышленникам из-за этой уязвимости ОС.
Это делается путем ответа на запросы многоадресного обнаружения SSDP, которые системы Windows отправляют автоматически и через регулярные промежутки времени. В этих запросах запрашивается URL-адрес, чтобы узнать больше о доступных общих устройствах в локальной сети. Windows будет игнорировать часть хоста любого рекламируемого URL, подключаясь только к хосту, предоставившему рекламу. Однако злонамеренный хост может ответить на это соединение с помощью перенаправления HTTP 301. Windows полностью обработает перенаправление, приняв любой произвольный хост (включая 127.0.0.1) и путь URL.
Хотя эта запись предназначена для уязвимой службы SSDP в Windows, вполне вероятно, что многие другие приложения, использующие свой собственный стек SSDP, также уязвимы.
Само по себе это не совсем потрясающая уязвимость. Фактически, Microsoft ответила, что не намерена это исправлять (см. Полную информацию о раскрытии в конце этого блога). Я думал, что это было достаточно интересно, чтобы поделиться, и надеюсь, что другие могут найти некоторую функциональность в самом примитиве.
POC-код эксплойта доступен в репозитории GitLab здесь.
Уязвимые версии ОС Windows
Эксплойт POC был протестирован на следующих версиях Windows, все из которых были уязвимы:
Подробности
Процесс обнаружения SSDP
Простой протокол обнаружения служб (SSDP) используется операционными системами (Windows, MacOS, Linux, IOS, Android и т. Д.) И приложениями (Spotify, Youtube и т. Д.) Для обнаружения общих устройств в локальной сети. Это основа для поиска и рекламы универсальных устройств Plug & Play (UPNP).
Отличительной особенностью SSDP для злоумышленника является то, что в нем нет встроенных механизмов обеспечения безопасности. Машина, использующая SSDP для обнаружения устройств, будет отправлять текстовые сообщения всем в локальной сети и доверять любому отвечающему устройству.
Устройства, пытающиеся обнаружить общие сетевые ресурсы, отправят многоадресную передачу UDP на номер 239.255.255.250 на порт 1900. Порт источника рандомизирован. Пример запроса выглядит так:
Любое устройство в локальной сети может ответить на этот запрос, предоставив URL-адрес, указывающий на XML-документ, называемый «дескриптор устройства». Этот ответ выглядит следующим образом:
Как только система Windows получает этот ответ, она инициирует HTTP-запрос GET в местоположение, указанное в заголовке
Злоупотребление SSDP для SSRF
Хотя в приведенном выше примере указан IP-адрес (192.168.1.214), Windows полностью его игнорирует. Например, если в заголовке
Тем не менее, если этот удаленный хост ответит перенаправлением HTTP 301 при запросе
Это можно продемонстрировать следующим образом:
Вооружение
Мое свободное время сейчас немного ограничено из-за нового концерта и просто жизни в целом. Я выпускаю эту информацию и POC в надежде, что другие хакеры смогут создать с ее помощью нескольких крутых цепочек эксплойтов. Я хотел бы услышать отзывы от людей, которые добились успеха в этой тематике.
Больше информации
Это открытие стало результатом моего более раннего исследования уязвимостей SSDP, о котором вы можете прочитать больше на странице evil-ssdp здесь.
Хронология
Ну что ж.
Переведено специально для https://xss.pro
Переводчик статьи - https://xss.pro/members/177895/
Оригинал - https://initblog.com/2019/switcheroo/
Обзор
Злоумышленники, не прошедшие проверку подлинности в локальной сети, могут заставить стандартные системы Windows выполнять произвольные HTTP-запросы GET, в том числе к интерфейсу localhost. Взаимодействие с пользователем не требуется. Установка IIS не требуется. Только обнаружение сети должно быть включено для запуска эксплойта (обычно для частных сетей по умолчанию включено). Злоумышленник не может просмотреть ответ, что делает его уязвимым для «слепого подлога на стороне сервера».
Это обеспечивает примитив эксплойта, который можно использовать для атак на сервисы, такие как REST API. Приложения, развернутые только на локальном узле, или приложения в защищенных сегментах сети, подвержены злоумышленникам из-за этой уязвимости ОС.
Это делается путем ответа на запросы многоадресного обнаружения SSDP, которые системы Windows отправляют автоматически и через регулярные промежутки времени. В этих запросах запрашивается URL-адрес, чтобы узнать больше о доступных общих устройствах в локальной сети. Windows будет игнорировать часть хоста любого рекламируемого URL, подключаясь только к хосту, предоставившему рекламу. Однако злонамеренный хост может ответить на это соединение с помощью перенаправления HTTP 301. Windows полностью обработает перенаправление, приняв любой произвольный хост (включая 127.0.0.1) и путь URL.
Хотя эта запись предназначена для уязвимой службы SSDP в Windows, вполне вероятно, что многие другие приложения, использующие свой собственный стек SSDP, также уязвимы.
Само по себе это не совсем потрясающая уязвимость. Фактически, Microsoft ответила, что не намерена это исправлять (см. Полную информацию о раскрытии в конце этого блога). Я думал, что это было достаточно интересно, чтобы поделиться, и надеюсь, что другие могут найти некоторую функциональность в самом примитиве.
POC-код эксплойта доступен в репозитории GitLab здесь.
Уязвимые версии ОС Windows
Эксплойт POC был протестирован на следующих версиях Windows, все из которых были уязвимы:
- Windows 10 Enterprise Insider Preview v1903 (сборка 18932.1000)
- Windows 10 Enterprise v1903 (сборка 18362.30)
- Windows Server 2016 Standard v1607 (сборка 14393,693)
Подробности
Процесс обнаружения SSDP
Простой протокол обнаружения служб (SSDP) используется операционными системами (Windows, MacOS, Linux, IOS, Android и т. Д.) И приложениями (Spotify, Youtube и т. Д.) Для обнаружения общих устройств в локальной сети. Это основа для поиска и рекламы универсальных устройств Plug & Play (UPNP).
Отличительной особенностью SSDP для злоумышленника является то, что в нем нет встроенных механизмов обеспечения безопасности. Машина, использующая SSDP для обнаружения устройств, будет отправлять текстовые сообщения всем в локальной сети и доверять любому отвечающему устройству.
Устройства, пытающиеся обнаружить общие сетевые ресурсы, отправят многоадресную передачу UDP на номер 239.255.255.250 на порт 1900. Порт источника рандомизирован. Пример запроса выглядит так:
Код:
M-SEARCH * HTTP/1.1
Host: 239.255.255.250:1900
ST: upnp:rootdevice
Man: "ssdp:discover"
MX: 3
Любое устройство в локальной сети может ответить на этот запрос, предоставив URL-адрес, указывающий на XML-документ, называемый «дескриптор устройства». Этот ответ выглядит следующим образом:
Код:
HTTP/1.1 200 OK
CACHE-CONTROL: max-age=1800
DATE: Tue, 16 Oct 2018 20:17:12 GMT
EXT:
LOCATION: http://192.168.1.214:8888/ssdp/device-desc.xml
OPT: "http://schemas.upnp.org/upnp/1/0/"; ns=01
01-NLS: uuid:7f7cc7e1-b631-86f0-ebb2-3f4504b58f5c
SERVER: UPnP/1.0
ST: upnp:rootdevice
USN: uuid:7f7cc7e1-b631-86f0-ebb2-3f4504b58f5c::upnp:rootdevice
BOOTID.UPNP.ORG: 0
CONFIGID.UPNP.ORG: 1
Как только система Windows получает этот ответ, она инициирует HTTP-запрос GET в местоположение, указанное в заголовке
LOCATION выше.Злоупотребление SSDP для SSRF
Хотя в приведенном выше примере указан IP-адрес (192.168.1.214), Windows полностью его игнорирует. Например, если в заголовке
LOCATION указано http://127.0.0.1/device.xml, Windows будет обращать внимание только на /device.xml и выполнять HTTP-GET для этого URL-адреса на удаленном хосте, который ответил на запрос обнаружения. Это способ предотвратить SSRF.Тем не менее, если этот удаленный хост ответит перенаправлением HTTP 301 при запросе
/device.xml, Windows будет доверять полному URL, указанному в новом заголовке LOCATION.Это можно продемонстрировать следующим образом:
- Подключите атакующий блок под управлением Linux к той же подсети локальной сети, что и компьютер с Windows.
- На компьютере с Windows запустите прослушиватель для проверки SSRF, например, ncat следующим образом:
Код:
ncat.exe -nlvp 4444
- Запустите следующее из окна Linux, заменив eth0 соответствующим интерфейсом локальной сети:
Код:
python3 switcheroo.py -i eth0 -u http://localhost:4444/ssrf_pwn -t "*"
- SSDP Disovery происходит на регулярной основе в Winows. Таким образом, вы можете просто подождать или выполнить следующие действия, чтобы ускорить процесс:
- Откройте проводник Windows
- Выберите «Сеть»
- Нажмите кнопку обновления в адресной строке
Вооружение
Мое свободное время сейчас немного ограничено из-за нового концерта и просто жизни в целом. Я выпускаю эту информацию и POC в надежде, что другие хакеры смогут создать с ее помощью нескольких крутых цепочек эксплойтов. Я хотел бы услышать отзывы от людей, которые добились успеха в этой тематике.
Больше информации
Это открытие стало результатом моего более раннего исследования уязвимостей SSDP, о котором вы можете прочитать больше на странице evil-ssdp здесь.
Хронология
- Первоначальный отчет для Microsoft: 5 августа 2019 г.
- Microsoft подтверждает получение отчета: 7 августа 2019 г.
- Microsoft заявила, что это не уязвимость: 9 августа 2019
Ну что ж.
Переведено специально для https://xss.pro
Переводчик статьи - https://xss.pro/members/177895/
Оригинал - https://initblog.com/2019/switcheroo/