Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/lucastran05/cve-2023-48223
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеЛаборатории и Практика
GitHublucastran05/cve-2023-48223

CVE-2023-48223

Proof-of-concept, демонстрирующий путаницу алгоритмов JWT в библиотеке fast-jwt. Включает уязвимый сервер, скрипт подделки токена и исправление проверки для обучения безопасности.

Репозиторий
485 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2023-48223 PoC (fast-jwt: смешение алгоритмов)

Этот репозиторий демонстрирует смешение алгоритмов JWT в fast-jwt, когда при проверке токена не фиксируется список разрешённых алгоритмов.

Настройка окружения

Требования

  • Node.js 18 или новее
  • npm
  • OpenSSL (должен быть доступен в PATH вашего терминала)

1) Установка зависимостей

Выполните из корня проекта:

root@kitploit:~
npm install

2) Генерация RSA-ключей

Приложение ожидает следующие файлы:

  • keys/private.pem
  • keys/public.pem

Выполните один из следующих наборов команд.

PowerShell (Windows):

root@kitploit:~
New-Item -ItemType Directory -Path keys -Force | Out-Null
openssl genrsa -out keys/private.pem 2048
openssl rsa -in keys/private.pem -RSAPublicKey_out -out keys/public.pem

Linux/macOS/Git Bash:

root@kitploit:~
mkdir -p keys
openssl genrsa -out keys/private.pem 2048
openssl rsa -in keys/private.pem -RSAPublicKey_out -out keys/public.pem

3) Запуск сервера

root@kitploit:~
node server.js

Ожидаемый вывод:

root@kitploit:~
Server running at http://localhost:3000

Быстрый запуск (сценарий PoC)

1) Получение обычного токена

root@kitploit:~
curl http://localhost:3000/generateToken

2) Создание поддельного admin-токена

root@kitploit:~
node sign.js

Скопируйте выведенный токен.

3) Вызов admin-эндпоинта с поддельным токеном

root@kitploit:~
node checkAdmin.js <JWT_TOKEN>

Если атака успешна, ответ будет содержать Welcome Admin!.

Почему это уязвимо

В server.js верификатор не ограничивает алгоритмы:

root@kitploit:~
const verifySync = createVerifier({
  key: publicKey,
});

Без разрешённого списка алгоритмов сервер может принять вредоносный HS256-токен, подписанный с использованием публичного ключа в качестве HMAC-секрета.

Пояснение: как воспроизводится уязвимая библиотека (для включения в отчёт)

В демонстрациях CVE группы объектом уязвимости является библиотека (она не может работать автономно). Поэтому необходимо имитирующее приложение, которое показывает, как реальная система вызывает API этой библиотеки. В данном репозитории файл server.js — это имитирующий слой приложения.

  • Эндпоинт /generateToken: этот маршрут вызывает createSigner из fast-jwt с RS256 для создания валидного токена для обычного пользователя (admin=false). Цель — получить эталонный «обычный» токен для сравнения с поддельным.
  • Эндпоинт /admin: этот маршрут принимает Bearer-токен, затем вызывает createVerifier из fast-jwt для проверки токена и определяет права администратора на основе payload.admin. Умышленно уязвимое место в том, что верификатор не фиксирует алгоритмы, что приводит к смешению алгоритмов.

Вспомогательный сценарий кода PoC:

  • sign.js: имитирует атакующего, который вызывает createSigner с HS256 и использует публичный ключ в качестве секрета для подписи поддельного токена (admin=true).
  • checkAdmin.js: отправляет запрос на /admin с поддельным токеном, чтобы доказать, что сервер принимает поддельный токен в уязвимой конфигурации.

Короче говоря, группа не переписывала функции библиотеки. Внутри имитирующего приложения использовались только оригинальные API уязвимой библиотеки (createSigner, createVerifier), чтобы точно воспроизвести контекст эксплуатации.

Исправление

Ограничьте проверку алгоритмом RS256:

root@kitploit:~
const verifySync = createVerifier({
  key: publicKey,
  algorithms: ["RS256"],
});

Примечание о безопасности

Этот проект предназначен исключительно для изучения безопасности в контролируемой лабораторной среде.

Скачать инструмент