Carding
Professional
- Messages
- 2,871
- Reaction score
- 2,331
- Points
- 113
Уязвимости CVE-2023-33871, CVE-2023-38257, CVE-2023-35763 и CVE-2023-35189 были обнаружены членами Synack Red Team (SRT) Нилом Грейвсом, Джорианом ван ден Хаутом и Малкольмом Стэггом в начале 2023 года. Французская компания-разработчик программного обеспечения Iagona исправила их в июле 2023 года с версией 2.1.38 своего веб-приложения ScrutisWeb.
Являясь частью Synack Red Team (SRT) глобальной сети исследователей безопасности, я регулярно нахожу уязвимости в инфраструктуре клиентов Synack и веб-серверах. При выполнении некоторых задач Synack участникам SRT разрешается сотрудничать, максимально используя наш широкий набор навыков.
Так было во время недавнего взаимодействия с клиентом Synack, в ходе которого небольшая команда американских SRT обнаружила программные недостатки в ScrutisWeb, безопасном решении для мониторинга парка банковских и розничных банкоматов.
По словам его разработчика Iagona, ScrutisWeb доступен из любого браузера и помогает организациям по всему миру отслеживать банкоматы и сокращать время отклика в случае возникновения проблем........... Парк банкоматов может включать в себя чувствительное оборудование, такое как автоматы для сдачи чеков, а также платежные терминалы в сети ресторанов.
ScrutisWeb обладает множеством возможностей:
Перечисление целей
Клиент Synack в этом задании имел более 1000 уникальных IP-адресов для оценки. Во время первоначальной разведки мы заметили, что веб-сервер отправляет посетителям исключительно большой файл JavaScript размером 23 МБ.
Мы обнаружили в файле функцию, которая позволяет клиенту загружать полные пути в webroot сервера:
Мы определили, что указание имени папки “/” приводит к тому, что ScrutisWeb сжимает весь веб-корень и отправляет его в браузер в качестве загрузки. Мы использовали эту функцию в том качестве, в котором она была разработана, для загрузки webroot. При проверке Download.aspx мы обнаружили, что она вызывает библиотеку “Scrutis.Front.dll ”, который, по-видимому, обрабатывает большинство пользовательских функций.
CVE-2023-33871: абсолютный обход пути
Мы заметили, что “Download.aspx” принимает параметр либо “файл”, либо “папка”. Мы увидели, что делает “папка”, это здорово, но мы быстро переключились на действительно интересную часть - строку, которая обрабатывает загрузку отдельных файлов:
В этом фрагменте кода рассматривается переменная “path1”, которая передается методу в качестве параметра URL ”file". Мы обнаружили, что если параметр не содержит двоеточия, веб-сервер вернет файл в соответствии с веб-корнем, например “https://example.com/Download.aspx?file=thisfile.txt” загрузит файл, расположенный по адресу “https://example.com/thisfile.txt”. Однако веб-сервер вернул файл с двоеточием относительно системы, например: “https://www.example.com/Download.aspx?file=c:\file.txt” загрузил бы файл, расположенный на сервере по адресу “c:\file.txt”. Успех! Мы смогли загрузить конфигурации, журналы и базы данных с сервера.
CVE-2023-35189: удаленное выполнение кода
Дальнейшее изучение Scrutis.Front.dll показала метод addFile(). addFile() приняла запрос POST, состоящий из нескольких частей, и сохранила загруженный файл в веб-каталоге “/Files/telechar/”.
Это означало, что пользователь, не прошедший проверку подлинности, мог загрузить любой файл, а затем снова просмотреть его в веб-браузере. Одна из многих проблем заключается в том, что каталог, в котором в конечном итоге размещался загруженный файл, был настроен так, чтобы разрешать интерпретацию и выполнение загруженных сценариев. Мы создали proof of concept (poc.asp), который запускает простую команду “ipconfig / all” и загрузили ее на сервер. После этого мы посетили веб-сайт по адресу “https://[отредактировано]/poc.asp”, и сервер выполнил системную команду “ipconfig / all” и вернул ответ. Успех! Внедрение команды.
Обычно можно было бы ожидать, что RCE станет кульминацией цепочки эксплойтов. В этом случае еще большей вредоносной ценности можно достичь, используя оставшиеся уязвимости для получения доступа пользователя к контроллеру банкомата. Каждый из уязвимых вызовов может быть найден в Scrutis.Front.dll и использоваться без аутентификации.
CVE-2023-38257: Небезопасная прямая ссылка на объект
Мы обнаружили, что прототип метода GetUserDetails принимает одно целое число в качестве входных данных для HTTP-запроса POST.
Мы заметили, что параметр idUser представляет собой последовательное целое значение, начинающееся с цифры 1. Отправив сообщение с номером 1 этой функции, сервис вернул информацию о пользователе “administrateur”, включая зашифрованный пароль. Успех! Произошла утечка информации об учетных записях всех пользователей в системе.
Жестко заданный ключ шифрования CVE-2023-35763
Поскольку пароль был явно зашифрован, мы решили попробовать перепроектировать механизм шифрования. Поиск в названиях методов по слову “crypt” показал функцию decrypt, которая принимает зашифрованный текст в качестве входных данных и возвращает строку открытого текста UTF8. Мы обнаружили, что функция включает строку, раскрывающую строку открытого текста, которая используется в качестве ключа шифрования для шифрования / дешифрования паролей пользователей:
public static string Decrypt(string cipherString, bool useHashing)
Мы написали простой скрипт на python, который использует зашифрованный пароль, обнаруженный с помощью CVE-2023-38257, и расшифровывает пароль в виде открытого текста. Успех! Учетные данные администратора открытого текста. На этом этапе мы смогли войти в ScrutisWeb как администратор.
Влияние
Хотя CVE-2023-33871 описывает уязвимость при доступе к файлам за пределами webroot, именно эта функциональность позволила нам загрузить веб-приложение для проверки. CVE-2023-38257 и CVE-2023-35763 позволяют входить в консоль управления ScrutisWeb в качестве администратора. Отсюда злоумышленник сможет отслеживать действия на отдельных банкоматах в парке. Консоль также позволяет переводить банкоматы в режим управления, загружать в них файлы, перезагружать их и полностью отключать питание. Потребуется дальнейшее изучение, чтобы определить, можно ли загружать пользовательское программное обеспечение в отдельные банкоматы для выполнения эксфильтрации банковских карт, перенаправления Swift-переводов или других вредоносных действий. Однако такое дополнительное тестирование выходило за рамки оценки.
Наконец, CVE-2023-35189 можно использовать для очистки журналов на ScrutisWeb и удаления доказательств того, что там когда-либо был злоумышленник. Может произойти дополнительное использование этого узла в инфраструктуре клиента, что сделает его ориентиром для злоумышленника, ориентированного на Интернет.
Исправление уязвимостей
Обновите ScrutisWeb до версии 2.1.38!
Iagona очень серьезно относится к безопасности и оперативно смягчила четыре вывода, информируя исследователей о прогрессе. Мы хотели бы выразить особую благодарность Брэндону Тарру за координацию через Агентство кибербезопасности и инфраструктурной безопасности, которое выпустило собственную рекомендацию о рисках, связанных с этими недостатками программного обеспечения.
(с) Нил Грейвс
Являясь частью Synack Red Team (SRT) глобальной сети исследователей безопасности, я регулярно нахожу уязвимости в инфраструктуре клиентов Synack и веб-серверах. При выполнении некоторых задач Synack участникам SRT разрешается сотрудничать, максимально используя наш широкий набор навыков.
Так было во время недавнего взаимодействия с клиентом Synack, в ходе которого небольшая команда американских SRT обнаружила программные недостатки в ScrutisWeb, безопасном решении для мониторинга парка банковских и розничных банкоматов.
По словам его разработчика Iagona, ScrutisWeb доступен из любого браузера и помогает организациям по всему миру отслеживать банкоматы и сокращать время отклика в случае возникновения проблем........... Парк банкоматов может включать в себя чувствительное оборудование, такое как автоматы для сдачи чеков, а также платежные терминалы в сети ресторанов.
ScrutisWeb обладает множеством возможностей:
- Перезагрузка или завершение работы терминала или всего парка
- Получение информации о банковских услугах
- Мониторинг устройства считывания банковских карт (банкоматов)
- Отправка и получение файлов (в банкоматы)
- Удаленное изменение данных (в банкоматах)
Перечисление целей
Клиент Synack в этом задании имел более 1000 уникальных IP-адресов для оценки. Во время первоначальной разведки мы заметили, что веб-сервер отправляет посетителям исключительно большой файл JavaScript размером 23 МБ.
Мы обнаружили в файле функцию, которая позволяет клиенту загружать полные пути в webroot сервера:
Code:
this.window.location.href = "/Download.aspx?folder=" + name;
Мы определили, что указание имени папки “/” приводит к тому, что ScrutisWeb сжимает весь веб-корень и отправляет его в браузер в качестве загрузки. Мы использовали эту функцию в том качестве, в котором она была разработана, для загрузки webroot. При проверке Download.aspx мы обнаружили, что она вызывает библиотеку “Scrutis.Front.dll ”, который, по-видимому, обрабатывает большинство пользовательских функций.
CVE-2023-33871: абсолютный обход пути
Мы заметили, что “Download.aspx” принимает параметр либо “файл”, либо “папка”. Мы увидели, что делает “папка”, это здорово, но мы быстро переключились на действительно интересную часть - строку, которая обрабатывает загрузку отдельных файлов:
Code:
str = !path1.Contains(":") ? this.Server.MapPath(path1) : path1;
В этом фрагменте кода рассматривается переменная “path1”, которая передается методу в качестве параметра URL ”file". Мы обнаружили, что если параметр не содержит двоеточия, веб-сервер вернет файл в соответствии с веб-корнем, например “https://example.com/Download.aspx?file=thisfile.txt” загрузит файл, расположенный по адресу “https://example.com/thisfile.txt”. Однако веб-сервер вернул файл с двоеточием относительно системы, например: “https://www.example.com/Download.aspx?file=c:\file.txt” загрузил бы файл, расположенный на сервере по адресу “c:\file.txt”. Успех! Мы смогли загрузить конфигурации, журналы и базы данных с сервера.
CVE-2023-35189: удаленное выполнение кода
Дальнейшее изучение Scrutis.Front.dll показала метод addFile(). addFile() приняла запрос POST, состоящий из нескольких частей, и сохранила загруженный файл в веб-каталоге “/Files/telechar/”.
Это означало, что пользователь, не прошедший проверку подлинности, мог загрузить любой файл, а затем снова просмотреть его в веб-браузере. Одна из многих проблем заключается в том, что каталог, в котором в конечном итоге размещался загруженный файл, был настроен так, чтобы разрешать интерпретацию и выполнение загруженных сценариев. Мы создали proof of concept (poc.asp), который запускает простую команду “ipconfig / all” и загрузили ее на сервер. После этого мы посетили веб-сайт по адресу “https://[отредактировано]/poc.asp”, и сервер выполнил системную команду “ipconfig / all” и вернул ответ. Успех! Внедрение команды.
Обычно можно было бы ожидать, что RCE станет кульминацией цепочки эксплойтов. В этом случае еще большей вредоносной ценности можно достичь, используя оставшиеся уязвимости для получения доступа пользователя к контроллеру банкомата. Каждый из уязвимых вызовов может быть найден в Scrutis.Front.dll и использоваться без аутентификации.
CVE-2023-38257: Небезопасная прямая ссылка на объект
Мы обнаружили, что прототип метода GetUserDetails принимает одно целое число в качестве входных данных для HTTP-запроса POST.
Code:
[HttpPost]
public UIUser GetUserDetails([FromBody] int idUser)
Мы заметили, что параметр idUser представляет собой последовательное целое значение, начинающееся с цифры 1. Отправив сообщение с номером 1 этой функции, сервис вернул информацию о пользователе “administrateur”, включая зашифрованный пароль. Успех! Произошла утечка информации об учетных записях всех пользователей в системе.
Жестко заданный ключ шифрования CVE-2023-35763
Поскольку пароль был явно зашифрован, мы решили попробовать перепроектировать механизм шифрования. Поиск в названиях методов по слову “crypt” показал функцию decrypt, которая принимает зашифрованный текст в качестве входных данных и возвращает строку открытого текста UTF8. Мы обнаружили, что функция включает строку, раскрывающую строку открытого текста, которая используется в качестве ключа шифрования для шифрования / дешифрования паролей пользователей:
public static string Decrypt(string cipherString, bool useHashing)
Code:
{
...
numArray = cryptoServiceProvider.ComputeHash(Encoding.UTF8.GetBytes("ENCRYPTIONKEY"));
...
return Encoding.UTF8.GetString(bytes);
}
Мы написали простой скрипт на python, который использует зашифрованный пароль, обнаруженный с помощью CVE-2023-38257, и расшифровывает пароль в виде открытого текста. Успех! Учетные данные администратора открытого текста. На этом этапе мы смогли войти в ScrutisWeb как администратор.
Влияние
Хотя CVE-2023-33871 описывает уязвимость при доступе к файлам за пределами webroot, именно эта функциональность позволила нам загрузить веб-приложение для проверки. CVE-2023-38257 и CVE-2023-35763 позволяют входить в консоль управления ScrutisWeb в качестве администратора. Отсюда злоумышленник сможет отслеживать действия на отдельных банкоматах в парке. Консоль также позволяет переводить банкоматы в режим управления, загружать в них файлы, перезагружать их и полностью отключать питание. Потребуется дальнейшее изучение, чтобы определить, можно ли загружать пользовательское программное обеспечение в отдельные банкоматы для выполнения эксфильтрации банковских карт, перенаправления Swift-переводов или других вредоносных действий. Однако такое дополнительное тестирование выходило за рамки оценки.
Наконец, CVE-2023-35189 можно использовать для очистки журналов на ScrutisWeb и удаления доказательств того, что там когда-либо был злоумышленник. Может произойти дополнительное использование этого узла в инфраструктуре клиента, что сделает его ориентиром для злоумышленника, ориентированного на Интернет.
Исправление уязвимостей
Обновите ScrutisWeb до версии 2.1.38!
Iagona очень серьезно относится к безопасности и оперативно смягчила четыре вывода, информируя исследователей о прогрессе. Мы хотели бы выразить особую благодарность Брэндону Тарру за координацию через Агентство кибербезопасности и инфраструктурной безопасности, которое выпустило собственную рекомендацию о рисках, связанных с этими недостатками программного обеспечения.
(с) Нил Грейвс