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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-14871 — Уязвимость BOLA/IDOR в osTicket ajax.tickets.php | Ответственное раскрытие | Kitploit
Инструменты/GitHubGitHub/jfoz1010/cve-2026-14871
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийСбор информацииТестирование на ПроникновениеОбучение и Образование
GitHubjfoz1010/cve-2026-14871

CVE-2026-14871

Уязвимость BOLA/IDOR в osTicket ajax.tickets.php | Ответственное раскрытие

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

Популярное

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

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

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

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

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

CVE-2026-14871 - BOLA / IDOR в osTicket ajax.tickets.php

Нарушение авторизации на уровне объектов (BOLA): Небезопасная прямая ссылка на объект (IDOR)
include/ajax.tickets.php → функция viewField()
Сообщено @JF0x0r · 27 марта 2026 Статус: ИСПРАВЛЕНО - исправление выпущено в osTicket v1.17.8 / v1.18.4


Вкратце

ПолеПодробности
УязвимостьBOLA / IDOR (Нарушение авторизации на уровне объектов)
ЦельosTicket v1.18-git - коммит 2570d69
Компонентinclude/ajax.tickets.php
ФункцияviewField() - строки 805–806
Конечная точкаGET /scp/ajax.php/tickets/{ticket_id}/field/{field_id}/view
Оценка CVSS 4.08.2 ВЫСОКИЙ - AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N
CWECWE-862 (Отсутствие авторизации), CWE-639 (Обход авторизации через управляемый пользователем ключ)
Статус✅ Исправлено — исправлено в osTicket v1.17.8 и v1.18.4

Кто я

Я Хуан Фелипе Оз (@JF0x0r), исследователь безопасности, увлеченный безопасностью открытого кода. Я делаю это не ради вознаграждений, а потому что верю, что инструменты, на которые полагаются люди, должны быть безопасными. Когда я нахожу что-то, я ответственно сообщаю об этом, правильно документирую и публикую после исправления.


Что я нашел

Проводя ручной аудит кода AJAX-подсистемы osTicket, я заметил нечто подозрительное в ajax.tickets.php. Функция viewField() обрабатывает запросы на просмотр данных полей тикета - она получает объект тикета и проверяет существование поля. But she никогда не проверяет, имеет ли запрашивающий агент разрешение на доступ к этому тикету.

Нет вызова checkStaffPerm(). Нет проверки отдела. Ничего.

Это означает, что любой аутентифицированный агент, даже строго ограниченный одним отделом, может читать поля тикетов из любого другого отдела системы, просто зная или угадывая ticket_id и field_id. Это последовательные целые числа. Легко перебираются.

Особенно наглядно это видно при сравнении с editField(), родственной функцией, расположенной в том же файле выше. editField() правильно вызывает $ticket->checkStaffPerm($thisstaff, Ticket::PERM_EDIT) и возвращает HTTP 403 при нарушении. Исправление уже было реализовано для записи - его просто не применили к чтению.


Подтверждение концепции: Живая демонстрация

Я записал полную сквозную демонстрацию эксплуатации в контролируемой лабораторной среде:

▶ Смотреть PoC — BOLA/IDOR osTicket

В видео показано:

  • Настройка лаборатории с двумя изолированными отделами (Dept-A и Dept-B)
  • Агент agent_a аутентифицирован с доступом только к Dept-A
  • Формирование неавторизованного запроса к конфиденциальному тикету из Dept-B
  • Сервер возвращает HTTP 200 с данными защищенного поля тикета
  • Повтор после исправления показывает HTTP 403 — Доступ запрещен

Скрипт exploit.py в этом репозитории автоматизирует всю цепочку (аутентификация → перебор → неавторизованный доступ к полям) и использовался при оценке для подтверждения, что проблема выходит за рамки ручного тестирования.


Воздействие

  • Раскрытие конфиденциальных данных - любой агент может читать защищенные поля тикетов во всех отделах
  • Горизонтальное повышение привилегий - границы между отделами полностью обходятся
  • Массовый перебор - последовательные целые числа ticket_id / field_id делают массовый сбор тривиальным
  • Нарушение конфиденциальности в мультиарендной среде - нарушает основной принцип изоляции отделов osTicket

Исправление

Вставка одной строки в viewField(), сразу после получения объекта тикета - точно так же, как это уже правильно сделано в editField(). Полные технические детали, diff и разбор CVSS содержатся в приложенном отчете.

📄 BOLA_IDOR_osTicket_Report_v2.pdf

✅ Официальный патч (подтверждено командой osTicket)

osTicket подтвердил отчет и реализовал смягчение, добавив $ticket->checkStaffPerm($thisstaff) перед разрешением/отображением запрошенного поля - зеркально отражая проверку, уже присутствующую в editField(). Теперь сотрудник должен иметь доступ к родительскому тикету перед просмотром данных поля.

osTicket рекомендует короткую паузу перед публикацией полных шагов эксплуатации. Этот репозиторий следует этой рекомендации - см. График раскрытия ниже.


График раскрытия


Файлы в этом репозитории

root@kitploit:~
.
├── README.md                        # Этот файл
├── BOLA_IDOR_osTicket_Report_v2.pdf # Полный технический отчет
├── exploit.py                       # Скрипт автоматизации PoC
└── PoC_osTicket.mov                 # Локальная копия демонстрационного видео

Ответственное раскрытие

Я сообщил об этом конфиденциально команде безопасности osTicket до публикации. Этот репозиторий был сделан публичным только после окончания периода ответственного раскрытия, и теперь, когда официальный патч выпущен, доступна полная документация. Если вы являетесь разработчиком osTicket и у вас есть вопросы, обращайтесь напрямую через GitHub.


Найдено @JF0x0r · Безопасность открытого кода важна.

Скачать инструмент
ДетальСсылка
Коммит патчаd590a9770d25159fb7741681f36e23a35f1fb5e9
Исправлено вv1.17.8 · v1.18.4
Официальные загрузкиosticket.com/download
Тип релизаУскоренный релиз безопасности
БлагодарностьJuan Felipe Oz (@JF0x0r)
ДатаСобытие
27 марта 2026Уязвимость обнаружена и задокументирована
27 марта 2026Отчет отправлен на [email protected]
17 июня 2026osTicket подтверждает проблему и предоставляет патч для проверки
17 июня 2026osTicket выпускает v1.17.8 и v1.18.4 с исправлением (коммит d590a9770d25159fb7741681f36e23a35f1fb5e9)
—Назначение CVE ожидается через GitHub CNA