что такое машинные ключи?
Машинные ключи — это своего рода секретные ключи, используемые приложением .Net для шифрования и дешифрования даты состояния просмотра, файла cookie аутентификации, информации о роли, токена сброса пароля и другой информации о сеансе.
- Расшифровка — это алгоритм, используемый для шифрования и расшифровки данных аутентификации.
- validation — Алгоритм хеширования для проверки данных
- ключ расшифровки — длинная шестнадцатеричная строка для шифрования и расшифровки данных (если она не определена, она генерируется автоматически)
- ключ проверки — длинный шестнадцатеричный ключ для проверки данных (если он не определен, он генерируется автоматически)
Если для ключа расшифровки и проверки задана конфигурация по умолчанию (генерируется автоматически), то он генерирует ключ для конкретного компьютера.
Проблема
проблемы начинаются, когда приложение использует балансировщик нагрузки. Итак, представьте, что есть копия приложения на 4 разных серверах, если вы помните, я сказал, что если для него установлена конфигурация по умолчанию, он генерирует ключ для конкретной машины.
так что представьте, что вы регистрируетесь в приложении, и оно отправляет запрос на сервер 1, поэтому сервер 1 (имеет ключ 1). Сервер проверит учетные данные и создаст файл cookie Aspxauth, зашифрованный ключом 1, и отправит его клиенту. Теперь, когда вы снова войдете в систему и представите, что приложение отправляет запрос на любой из серверов, кроме сервера 1. Таким образом, в случае, если приложение отправляет запрос на сервер 2 (имеет ключ 2), сервер 2 попытается расшифровать файл cookie, но поскольку у него нет ключа 1 (ключ, используемый для шифрования), приложение выдаст ошибку.
Итак, здесь возникает человеческая ошибка, поэтому разработчик просто погуглит ошибку и попадет на форум Microsoft, stackoverflow или другой форум .net. Он найдет самый популярный ответ. где автор предлагает определить один и тот же машинный ключ на всех серверах.
Разработчик просто скопирует образец машинного ключа с любого форума и использует его для своего приложения.
Использование
вы можете использовать этот инструмент blacklist3r. Целью этого инструмента является накопление секретных ключей/секретных материалов, связанных с различными веб-фреймворками, которые находятся в открытом доступе и потенциально используются разработчиками. Эти секреты будут использоваться инструментами Blacklist3r для аудита целевого приложения и проверки использования этих предварительно опубликованных ключей.
Затем вы можете использовать этот ключ для расшифровки и подделки данных сеанса для повышения привилегий, файла cookie аутентификации или токена сброса пароля.
Спасибо за прочтение, пока :)