Как стать администратором веб-приложения за 0 секунд без перебора паролей и эксплойтов базы данных? |
||
|
МЕНЮ Главная страница ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ Атаки на ИИ Внедрение ИИИИ теория Компьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Промпты. Генеративные запросы Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2026-10-29 15:22 Как стать администратором веб-приложения за 0 секунд без перебора паролей и эксплойтов базы данных? Ответ кроется в архитектуре JSON Web Tokens (JWT). ? Продолжаю практический марафон на Parrot Security OS. После того как мы сдампили базу пользователей через SQL-инъекцию, я решил проверить, насколько надежно бэкенд верифицирует клиентские сессии. Написал скрипт на Ruby (jwt_forge.rb) и разобрал одну из самых громких уязвимостей спецификации - атаку с алгоритмом none. Делюсь разбором «на пальцах» и тем, как это выглядит в боевом терминале. ? В чем фундаментальная ошибка JWT? ? Токен состоит из трех частей через точку: Header.Payload.Signature 1. Header: метаданные (каким алгоритмом подписан токен, например RS256). 2. Payload: полезная нагрузка (ID пользователя, email, роль admin). 3. Signature: цифровая подпись сервера, которая гарантирует, что данные не подделаны. Обе первые части - это обычный открытый текст, закодированный в Base64. Их может прочитать и изменить абсолютно любой человек в браузере. Вся безопасность держится исключительно на третьей части - проверке сервером подписи своим секретным ключом. Но стандарт RFC предусматривает алгоритм подписи "none" - режим вообще без криптографической проверки. Механика атаки: срезаем подпись на лету ? Если разработчики используют устаревшие библиотеки или забыли жестко зафиксировать разрешенные алгоритмы на бэкенде, сервер совершает фатальную ошибку: он слепо доверяет заголовку, который прислал клиент! Что делает мой скрипт: 1. Берет легальную структуру токена. 2. В полезную нагрузку (Payload) вписывает права администратора: {"role": "admin"}. 3. В заголовке (Header) подменяет алгоритм на "alg": "none". 4. Начисто удаляет третью часть (подпись), оставляя только точку на конце: Base64(Header).Base64(Payload). Запрос уходит на сервер через Burp Suite... и бэкенд отвечает статусом HTTP 200 OK! Сервер прочитал заголовок, решил: «А, тут алгоритм none, значит проверять цифровую подпись не нужно» - и моментально выдал полный административный доступ к базе /api/Users. В Cookie прилетел валидный ответ. Занавес. ? Почему это критично для бизнеса? ? В отличие от классических атак на форму входа: - Атакующему вообще не нужно знать пароль жертвы или хэш из базы. - Атака не создает подозрительной нагрузки на сервер (нет брутфорса, нет аномальных SQL-запросов). - Доступ крафтится локально на машине пентестера за доли миллисекунды. Это чистый горизонтальный и вертикальный Privilege Escalation (повышение привилегий). Как закрыть эту дыру разработчикам? ? Правило одно, и оно железобетонное: никогда не считывайте алгоритм проверки из заголовка токена клиента. В коде бэкенда алгоритм верификации должен быть жестко зашит в конфигурации: jwt.verify(token, secretKey, { algorithms: ['RS256'] }) Если клиент пришлет none, HS256 или что-то левое - библиотека выбросит исключение еще до того, как тело запроса дойдет до бизнес-логики. Практика показывает: даже самые модные технологии становятся решетом, если полагаться на дефолтные настройки библиотек. Сталкивались с кривой реализацией JWT в реальных аудитах или на своих проектах? Телеграм: t.me/ainewsline Источник: vk.com Комментарии: |
|