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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2025-68147-OSPOS-Stored-XSS — PoC-репозиторий для CVE-2025-68147: хранимая межсайтовая сценарная уязвимость (XSS) в OpenSourcePOS. Уязвимость позволяет повысить привилегии с помощью вредоносной инъекции JavaScript в модуль Store Config. Включает детали полезной нагрузки и проверку исправления (v3.4.0). Исследователь безопасности: Адитья Сингх (Nixon-H). | Kitploit
Инструменты/GitHubGitHub/nixon-h/cve-2025-68147-ospos-stored-xss
Анализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и Образование
GitHubnixon-h/cve-2025-68147-ospos-stored-xss

CVE-2025-68147-OSPOS-Stored-XSS

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

Популярное

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

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

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

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

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

Описание

PoC-репозиторий для CVE-2025-68147: хранимая межсайтовая сценарная уязвимость (XSS) в OpenSourcePOS. Уязвимость позволяет повысить привилегии с помощью вредоносной инъекции JavaScript в модуль Store Config. Включает детали полезной нагрузки и проверку исправления (v3.4.0). Исследователь безопасности: Адитья Сингх (Nixon-H).

Поделиться

CVE-2025-68147: Межсайтовый скриптинг (XSS) с сохранением в OpenSourcePOS

МетаданныеПодробности
Идентификатор CVECVE-2025-68147
СерьезностьВысокая CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:H/I:H/A:N
Тип уязвимостиМежсайтовый скриптинг с сохранением (CWE-79)
Затронутые версииOpenSourcePOS v3.4.0, v3.4.1
Исправленная версияv3.4.2
Уязвимый компонентМодуль конфигурации магазина (поле «Политика возврата»)
Автор отчетаAditya Singh (Nixon-H)

📝 Краткое описание

Уязвимость межсайтового скриптинга с сохранением (Stored XSS) была обнаружена в модуле конфигурации магазина OpenSourcePOS. Приложение не выполнило надлежащую санитизацию вводимых пользователем данных в поле «Политика возврата» перед сохранением их в таблице базы данных ospos_app_config.

Эта ошибка позволила аутентифицированному злоумышленнику с привилегиями конфигурации (или злоумышленнику, использующему отдельную CSRF-цепочку) внедрять произвольные полезные нагрузки JavaScript. Поскольку «Политика возврата» динамически отображается в каждом чеке продажи, внедренная нагрузка автоматически выполняется в браузере любого пользователя — включая кассиров с низкими привилегиями, других администраторов или клиентов — при генерации или просмотре чека.


🕵️‍♂️ Анализ технической первопричины

1. Уязвимая логика

Уязвимость находится в шаблоне просмотра чека: app/Views/sales/receipt_default.php.

Приложение извлекает строку «Политика возврата» из глобального массива конфигурации ($this->config['return_policy']) и подготавливает ее для отображения.

  • Ошибка: Разработчики использовали нативную PHP-функцию nl2br() для преобразования новых строк в HTML-разрывы строк (<br>).
  • Недостаток: nl2br() не выполняет санитизацию HTML-спецсимволов. Она оставляет такие теги, как <script>, `` и атрибуты onload, полностью нетронутыми.

Уязвимый код (до исправления):

root@kitploit:~
<div id="sale_return_policy">
    <?php echo nl2br($this->config['return_policy']); ?>
</div>

2. Сохранение в базе данных

Когда администратор сохраняет конфигурацию, полезная нагрузка сохраняется в базу данных в необработанном виде.

  • Таблица: ospos_app_config
  • Ключ: return_policy
  • Значение: Policy Text... <script>alert('XSS')</script>

Из-за отсутствия санитизации ввода на стороне контроллера (Config.php) и экранирования вывода на стороне представления (receipt_default.php) приложение подвержено уязвимости Stored XSS.


💥 Подтверждение концепции (PoC)

Вектор атаки

Атака нацелена на панель конфигурации магазина, но затрагивает модуль Продажи/Чеки.

  1. Точка входа: http://[TARGET]/config (POST-запрос для сохранения конфигурации)
  2. Точка выполнения: http://[TARGET]/sales/receipt/[SALE_ID]

Пошаговая эксплуатация

Шаг 1: Внедрение Мы вошли как администратор и перешли в Конфигурация магазина -> Общие. В текстовое поле «Политика возврата» мы внедрили следующую нагрузку:

root@kitploit:~
Standard Return Policy: No Refunds.
<script>alert('XSS_BY_NIXON_SUCCESSFUL')</script>

Шаг 2: Сохранение После нажатия «Отправить» приложение отправило POST-запрос на /config/save. Полезная нагрузка была успешно сохранена в базе данных.

Шаг 3: Запуск Чтобы проверить влияние на других пользователей:

  1. Мы вышли и снова вошли как Кассир (учетная запись с низкими привилегиями).
  2. Мы перешли в модуль Продажи.
  3. Мы добавили тестовый товар в корзину и нажали «Завершить продажу».
  4. Результат: Приложение перенаправляет на просмотр чека (например, http://localhost/sales/receipt/1). Браузер обрабатывает div return_policy, встречает тег <script> и немедленно выполняет JavaScript.

Наблюдаемый результат: Появилось всплывающее окно браузера с сообщением: XSS_BY_NIXON_SUCCESSFUL.

📷 Подтверждение медиафайлами

Скриншот 1: Срабатывание оповещения

Скриншот 2: Нагрузка в конфигурации

🎥 Видеодемонстрация: Нажмите, чтобы скачать / посмотреть PoC видео


⚠️ Сценарии воздействия

Это уязвимость с изменением области действия (S:C), поскольку атака сохраняется на сервере, но выполняется в контексте браузера жертвы.

  1. Повышение привилегий и перехват учетной записи:

    • Сценарий: Злоумышленник внедряет JavaScript-нагрузку, предназначенную для кражи cookie сеанса.
    • Выполнение: Супер-администратор просматривает прошлый чек (например, /sales/receipt/105). Скрипт выполняется незаметно, отправляя document.cookie (содержащий ID ospos_session) на сервер злоумышленника.
    • Воздействие: Злоумышленник перехватывает сеанс супер-администратора, получая полный контроль над системой без необходимости ввода пароля.
  2. Создание администратора с червеобразным распространением:

    • Сценарий: Нагрузка представляет собой скрипт, использующий AJAX (XMLHttpRequest) для выполнения административных действий.
    • Выполнение: Когда вошедший администратор просматривает чек, скрипт заставляет его браузер отправить скрытый POST-запрос на /employees/save.
    • Воздействие: В фоновом режиме мгновенно создается новая учетная запись администратора (например, hacker / password123). Жертва видит только чек, а злоумышленник получает постоянный бэкдор.
  3. Дефейс и фишинг:

    • Сценарий: Злоумышленник изменяет DOM, чтобы исказить финансовую информацию в чеке.
    • Выполнение: Скрипт «Политики возврата» перезаписывает нижний колонтитул или платежные инструкции.
    • Воздействие: Чеки отображают мошеннические банковские реквизиты или адреса криптовалютных кошельков («Пожалуйста, переведите платеж на...»), что приводит к финансовому мошенничеству в отношении клиентов или бизнеса.

🛡️ Исправление

Уязвимость была исправлена в OpenSourcePOS v3.4.2.

Разработчик применил патч, реализующий контекстно-зависимое кодирование вывода. Значение конфигурации теперь оборачивается в глобальную вспомогательную функцию esc() CodeIgniter перед передачей в nl2br().

Патч (коммит 22297a):

root@kitploit:~
<div id="sale_return_policy">
    <?php echo nl2br(esc($this->config['return_policy'])); ?>
</div>

Проверка: После обновления до v3.4.2 та же нагрузка отображается как безвредный текст:

Standard Return Policy: No Refunds. &lt;script&gt;alert('XSS_BY_NIXON_SUCCESSFUL')&lt;/script&gt;


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

  • 2025-12-12: Уязвимость обнаружена Aditya Singh (Nixon-H) в ходе ручного аудита безопасности.
  • 2025-12-13: Ответственное уведомление об уязвимости отправлено разработчику (Jeroen Peelaerts) по электронной почте / через GitHub.
  • 2025-12-14: Уязвимость подтверждена разработчиком. Зарезервирован CVE-2025-68147.
  • 2025-12-14: Разработан патч (коммит 22297a) и подтвержден исследователем.
  • 2025-12-19: Патч выпущен в версии 3.4.2.
  • 2025-12-19: Публичное раскрытие через GitHub Security Advisory.

🔗 Ссылки

  • Уведомление: GHSA-xgr7-7pvw-fpmh
  • Патч: Commit 22297a
  • Автор отчета: Aditya Singh (Nixon-H)
Скачать инструмент