Microsoft SharePoint — веб-платформа для совместной работы, управления документами и организации совместного доступа к информации в организациях, которая широко используется в корпоративной среде.
Недавно увидел интересные CVE которые затрагивают эту веб-платформу:
CVE-2024-38094 (https://nvd.nist.gov/vuln/detail/CVE-2024-38094)
CVE-2024-38024
(https://msrc.microsoft.com/update-guide/vulnerability/CVE-2024-38024)CVE-2024-38023 (https://msrc.microsoft.com/update-guide/vulnerability/CVE-2024-38023)
Чтобы успешно эксплуатировать RCE, необходимо выполнить несколько условий, а именно
1) Сетевой доступ к уязвимому серверу SharePoint.
2) Учетные данные (лог/пасс) для NTLM аутентификации (https://learn.microsoft.com/ru-ru/t...ver/windows-security/ntlm-user-authentication) + учетная запись должна иметь права на создание файлов и папок.
Для успешной эксплуатации уязвимости предоставляется три скрипта: poc_filtered.py, poc_specific.py и poc_sub.py. Сейчас коротко разберем суть и как они работают.
Все три скрипта используют NTLM аутентификацию для доступа к API SharePoint и выполняют схожие действия:
Скрипты сначала аутентифицируются на сервере SharePoint с использованием предоставленных учетных данных. Затем они создают необходимые папки на сервере, такие как BusinessDataMetadataCatalog, отправляя POST-запросы к API SharePoint по пути /api/web/Folders.
Далее создается и загружается файл метаданных BDCMetadata.bdcm, содержащий информацию для выполнения уязвимости. В информации находятся команды для выполнения различных методов SharePoint, таких как GetCreatorView, (https://learn.microsoft.com/ru-ru/s...-client-object-model-reference-for-sharepoint) GetDefaultValues, (https://learn.microsoft.com/ru-ru/s...-client-object-model-reference-for-sharepoint) GetFilters (https://learn.microsoft.com/ru-ru/previous-versions/office/sharepoint-csom/ee541578(v=office.15)) и FindFiltered. (https://learn.microsoft.com/ru-ru/previous-versions/office/sharepoint-csom/ee541156(v=office.15)) Эти методы позволяют взаимодействовать с объектами и данными SharePoint, что в конечном итоге позволяет выполнить произвольный код.
То есть после запуска poc_filtered.py создается новая папка BusinessDataMetadataCatalog, после чего скрипт получает и сохраняет значение X-RequestDigest для дальнейших запросов. X-RequestDigest — это токен, подтверждающий, что запрос исходит от подлинного пользователя. Этот токен включается в заголовки последующих запросов для подтверждения их подлинности. Затем скрипт создает и загружает файл метаданных BDCMetadata.bdcm в созданную папку. Этот файл содержит данные и команды, которые будут использоваться для выполнения уязвимости. В конце, скрипт отправляет специально сформированный XML-запрос к API SharePoint для выполнения уязвимых методов, что позволяет выполнить произвольный код на сервере.
Но между скриптами есть небольшая разница, а именно в используемых методах.
1) poc_filtered.py использует метод FindFiltered для взаимодействия с объектами SharePoint.
2) poc_specific.py использует метод FindSpecific для выполнения конкретных задач и команд.
3) poc_sub.py в этом скрипте используется метод Subscribe (https://learn.microsoft.com/ru-ru/sharepoint/dev/spfx/subscribe-to-list-notifications) для подписки на события или действия.
PoC (https://github.com/testanull/MS-SharePoint-July-Patch-RCE-PoC)
PoC Video (
)
Недавно увидел интересные CVE которые затрагивают эту веб-платформу:
CVE-2024-38094 (https://nvd.nist.gov/vuln/detail/CVE-2024-38094)
CVE-2024-38024
(https://msrc.microsoft.com/update-guide/vulnerability/CVE-2024-38024)CVE-2024-38023 (https://msrc.microsoft.com/update-guide/vulnerability/CVE-2024-38023)
Чтобы успешно эксплуатировать RCE, необходимо выполнить несколько условий, а именно
1) Сетевой доступ к уязвимому серверу SharePoint.
2) Учетные данные (лог/пасс) для NTLM аутентификации (https://learn.microsoft.com/ru-ru/t...ver/windows-security/ntlm-user-authentication) + учетная запись должна иметь права на создание файлов и папок.
Для успешной эксплуатации уязвимости предоставляется три скрипта: poc_filtered.py, poc_specific.py и poc_sub.py. Сейчас коротко разберем суть и как они работают.
Все три скрипта используют NTLM аутентификацию для доступа к API SharePoint и выполняют схожие действия:
Скрипты сначала аутентифицируются на сервере SharePoint с использованием предоставленных учетных данных. Затем они создают необходимые папки на сервере, такие как BusinessDataMetadataCatalog, отправляя POST-запросы к API SharePoint по пути /api/web/Folders.
Далее создается и загружается файл метаданных BDCMetadata.bdcm, содержащий информацию для выполнения уязвимости. В информации находятся команды для выполнения различных методов SharePoint, таких как GetCreatorView, (https://learn.microsoft.com/ru-ru/s...-client-object-model-reference-for-sharepoint) GetDefaultValues, (https://learn.microsoft.com/ru-ru/s...-client-object-model-reference-for-sharepoint) GetFilters (https://learn.microsoft.com/ru-ru/previous-versions/office/sharepoint-csom/ee541578(v=office.15)) и FindFiltered. (https://learn.microsoft.com/ru-ru/previous-versions/office/sharepoint-csom/ee541156(v=office.15)) Эти методы позволяют взаимодействовать с объектами и данными SharePoint, что в конечном итоге позволяет выполнить произвольный код.
То есть после запуска poc_filtered.py создается новая папка BusinessDataMetadataCatalog, после чего скрипт получает и сохраняет значение X-RequestDigest для дальнейших запросов. X-RequestDigest — это токен, подтверждающий, что запрос исходит от подлинного пользователя. Этот токен включается в заголовки последующих запросов для подтверждения их подлинности. Затем скрипт создает и загружает файл метаданных BDCMetadata.bdcm в созданную папку. Этот файл содержит данные и команды, которые будут использоваться для выполнения уязвимости. В конце, скрипт отправляет специально сформированный XML-запрос к API SharePoint для выполнения уязвимых методов, что позволяет выполнить произвольный код на сервере.
Но между скриптами есть небольшая разница, а именно в используемых методах.
1) poc_filtered.py использует метод FindFiltered для взаимодействия с объектами SharePoint.
2) poc_specific.py использует метод FindSpecific для выполнения конкретных задач и команд.
3) poc_sub.py в этом скрипте используется метод Subscribe (https://learn.microsoft.com/ru-ru/sharepoint/dev/spfx/subscribe-to-list-notifications) для подписки на события или действия.
PoC (https://github.com/testanull/MS-SharePoint-July-Patch-RCE-PoC)
PoC Video (