Pterodactyl - это панель управления игровым сервером с открытым исходным кодом, построенная с использованием PHP 7, React и Go. Злоумышленн…
Pterodactyl - это панель управления игровым сервером с открытым исходным кодом, построенная с использованием PHP 7, React и Go. Злоумышленник может изменить содержимое ввода `confirmation_token` во время процесса двухфакторной аутентификации, чтобы сослаться на значение кэша, не связанное с попыткой входа в систему. В редких случаях это может позволить злоумышленнику пройти аутентификацию в качестве случайного пользователя в панели. Злоумышленник должен нацелиться на учетную запись с включенной двухфакторной аутентификацией, а затем должен предоставить правильный токен двухфакторной аутентификации, прежде чем пройти аутентификацию в качестве этого пользователя. Из-за недостатка проверки в логике обработки аутентификации пользователя во время процесса двухфакторной аутентификации злоумышленник может обманом заставить систему загрузить учетные данные для произвольного пользователя, изменив токен, отправленный на сервер. Этот недостаток аутентификации присутствует в методе `LoginCheckpointController@__invoke`, который обрабатывает двухфакторную аутентификацию для пользователя. Этот контроллер ищет входной параметр запроса с именем `confirmation_token`, который, как ожидается, будет 64-символьной случайной буквенно-цифровой строкой, ссылающейся на значение в кэше панели, содержащее значение `user_id`. Это значение затем используется для получения пользователя, который пытался войти в систему, и поиска его токена двухфакторной аутентификации. Из-за конструкции этой системы любой элемент в кэше, содержащий только цифры, может быть использован злоумышленником, и любое значение, хранящееся в этой позиции, будет использоваться в качестве `user_id`. В панели есть несколько разных областей, которые сохраняют значения в кэше, которые являются целыми числами, и пользователь, который определяет, что это за ключи кэша, может передать один из этих ключей, что приведет к тому, что этот путь кода будет ссылаться на произвольного пользователя. По сути, это уязвимость обхода входа в систему с высоким риском. Однако есть несколько дополнительных условий, которые должны быть выполнены для успешного выполнения этого, а именно: 1.) Учетная запись, на которую ссылается вредоносный ключ кэша, должна иметь включенную двухфакторную аутентификацию. Учетная запись без двухфакторной аутентификации вызовет исключение, которое будет запущено логикой аутентификации, таким образом завершая этот поток аутентификации. 2.) Даже если злоумышленник сможет сослаться на действительный ключ кэша, который ссылается на действительную учетную запись пользователя с двухфакторной аутентификацией, он должен предоставить действительный токен двухфакторной аутентификации. Однако из-за конструкции этой конечной точки, как только найдена действительная учетная запись пользователя с включенной двухфакторной аутентификацией, нет никакого ограничения скорости, что позволяет злоумышленнику перебирать комбинации, пока не будет достигнут успех. Это приводит к третьему условию, которое должно быть выполнено: 3.) В течение этой последовательности атак ключ кэша, на который ссылаются, должен продолжать существовать с действительным значением `user_id`. В зависимости от конкретного ключа, используемого для этой атаки, это значение может быстро исчезнуть или быть изменено другими случайными взаимодействиями пользователя на панели, вне контроля злоумышленника. Чтобы смягчить эту уязвимость, базовая логика аутентификации была изменена для использования зашифрованного хранилища сеансов, значение которого пользователь, следовательно, не может контролировать. Это полностью исключило использование значения, контролируемого пользователем. Кроме того, код был проверен, чтобы убедиться, что этот тип уязвимости отсутствует в других местах.
Продукт десериализует ненадёжные данные без достаточной проверки того, что полученные данные окажутся допустимыми.
https://cwe.mitre.org/data/definitions/502.html →Открыть в коллекции CWE →Злоумышленник пытается эксплуатировать приложение путём внедрения дополнительного вредоносного содержимого в процессе обработки сериализованных объектов. Разработчики используют сериализацию для преобразования данных или состояния в статичный двоичный формат с целью сохранения на диск или передачи по сети. Впоследствии эти объекты десериализуются для восстановления данных/состояния. Внедряя некорректный объект в уязвимое приложение, злоумышленник потенциально может скомпрометировать его, манипулируя процессом десериализации. Это может привести к ряду нежелательных последствий, включая удалённое выполнение кода.
https://capec.mitre.org/data/definitions/586.html →Открыть в коллекции CAPEC →