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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-76564 — Хранимый XSS через User-Agent в просмотре заказов администратора в PhocaCart | Kitploit
Инструменты/GitHubGitHub/toanln-cov/cve-2026-76564
Анализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьСтатьи и Исследования
GitHubtoanln-cov/cve-2026-76564

CVE-2026-76564

Хранимый XSS через User-Agent в просмотре заказов администратора в PhocaCart

Репозиторий
3 дней назадЕщё не проверено

Популярное

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

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

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

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

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

Stored XSS via User-Agent in Admin Order View in PhocaCart

PhocaCart ≤ 6.1.7 — Неаутентифицированный злоумышленник сохраняет XSS-пейлоад через оформление заказа. Выполняется в контексте браузера администратора

CVE CVSS v4.0 CWE-79 Affected Researcher


SUMMARY

PhocaCart 6.1.7 для Joomla сохраняет необработанный HTTP-заголовок User-Agent из запросов оформления заказа в таблицу базы данных заказов, когда включён параметр конфигурации store_user_agent. Сохранённое значение затем выводится без HTML-кодирования в представление редактирования заказа администратора через itemText() в Adminview.php.

Неаутентифицированный злоумышленник может оформить заказ с поддельным User-Agent, содержащим JavaScript-пейлоад. Когда администратор открывает заказ в админпанели, пейлоад выполняется в контексте браузера администратора, что позволяет перехватить сессию, похитить учётные данные или совершить несанкционированные административные действия.

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

Для уязвимости требуется включённый параметр store_user_agent = 1 (не по умолчанию). Поскольку этот параметр является осознанным выбором администратора для сбора статистики браузеров, уязвимы те магазины, где владелец включил эту функцию, что делает эксплуатацию полностью незаметной со стороны злоумышленника.


AFFECTED VERSIONS

КОМПОНЕНТУЯЗВИМЫЕ ВЕРСИИПРОТЕСТИРОВАНО НАИСПРАВЛЕНО
PhocaCart (com_phocacart)5.0.0 – 6.1.7Joomla 5.4.7 + PhocaCart 6.1.7 + MariaDB 10.66.1.8

VULNERABILITY DETAILS

Тип: Хранимый XSS (CWE-79) — направлен на администратора Требуется аутентификация: Не требуется для внедрения. Требуется администратор для срабатывания Требуется CSRF-токен: Да (стандартный CSRF-токен Joomla требуется для оформления заказа) Файл: administrator/components/com_phocacart/libraries/Phoca/Render/Adminview.php:382

Root Cause

Когда store_user_agent = 1, метод PhocacartUtils::getUserAgent() возвращает $_SERVER['HTTP_USER_AGENT'] без какой-либо санитизации. Эта необработанная строка сохраняется в #__phocacart_orders (обрезается до 200 символов — недостаточно для предотвращения XSS). Когда администратор просматривает заказ в админпанели, itemText() конкатенирует сохранённое значение напрямую в HTML-ответ без вызова htmlspecialchars().

Поток данных:

root@kitploit:~
Attacker sends checkout request:
  User-Agent: <script>alert(document.domain)</script>

    utils.php:334   PhocacartUtils::getUserAgent()
    └─ return (string) $_SERVER['HTTP_USER_AGENT']   // raw, no sanitization
        order.php:413  $d['user_agent'] = substr($user_agent, 0, 200)
        └─ INSERT INTO #__phocacart_orders (user_agent) VALUES ('<script>...</script>')

Admin opens order in backend:
    edit.php:84    echo $r->itemText($this->itemcommon->user_agent, ...)
    Adminview.php:382  '<div class="controls >' . $item . '</div>'
                                           // → NO htmlspecialchars()
    → Browser renders: <div><script>alert(document.domain)</script></div>
    → XSS fires in administrator's browser

ORDER.PHP — ЭТАП СОХРАНЕНИЯ (УЯЗВИМЫЙ ИСТОЧНИК)

administrator/components/com_phocacart/libraries/phocacart/order/order.php:424

root@kitploit:~
$user_agent = PhocacartUtils::getUserAgent(); // reads $_SERVER['HTTP_USER_AGENT'] raw
$d['user_agent'] = substr($user_agent, 0, 200); // stored in DB unfiltered

ADMINVIEW.PHP:382 — ЭТАП ВЫВОДА (УЯЗВИМЫЙ ПРИЁМНИК)

root@kitploit:~
// No htmlspecialchars() applied:
$output .= '  <div class="controls ' . $class . '">' . $item . '</div>' . "\n";

Вызывается из administrator/components/com_phocacart/views/phocacartorder/tmpl/edit.php:84:

root@kitploit:~
echo $r->itemText($this->itemcommon->user_agent, Text::_('COM_PHOCACART_USER_AGENT'), '', 'user_agent');

Функция itemText() передаёт $item (сохранённое значение user_agent) напрямую в HTML-вывод без кодирования, что делает её основным приёмником. Исправление на уровне приёмника защищает всех вызывающих itemText().


PROOF OF CONCEPT

Для атаки требуется пройти полный процесс оформления заказа с вредоносным заголовком User-Agent. Сначала необходимо получить CSRF-токен, поскольку контроллер оформления заказа Joomla проверяет его.

0. Предварительное условие — включение Store User Agent Information

В админке Joomla перейдите в Components → Phoca Cart → Options → Main tab → Statistics Options. Установите Store User Agent Information = Yes и сохраните.

Предварительное условие: Store User Agent Information = Yes

1. Получение CSRF-токена

Злоумышленник посещает витрину магазина, чтобы извлечь действующий CSRF-токен Joomla, требуемый контроллером оформления заказа. Токен присутствует в HTML-исходнике или JavaScript-конфигурации любой страницы магазина.

Шаг 1: Злоумышленник получает CSRF-токен с витрины магазина через Burp Suite

2. Добавление товара в корзину

Злоумышленник добавляет товар в корзину через AJAX-эндпоинт оформления заказа, используя безобидный User-Agent. Это переводит сессию оформления в следующее состояние.

Шаг 2: Добавление товара в корзину — POST checkout.add

3. Сохранение платёжного адреса

Злоумышленник отправляет платёжные данные, чтобы продвинуть конечный автомат оформления заказа.

Шаг 3: Сохранение платёжного адреса — Burp Suite

4. Сохранение способа доставки

Злоумышленник выбирает способ доставки, чтобы перейти к оплате.

Шаг 4: Сохранение способа доставки — Burp Suite

5. Сохранение способа оплаты

Злоумышленник выбирает способ оплаты (например, оплата при доставке).

Шаг 5: Сохранение способа оплаты — Burp Suite

6. Внедрение пейлоада — оформление заказа с вредоносным User-Agent

Критический шаг внедрения. Злоумышленник размещает финальный заказ через task=checkout.order, устанавливая заголовок User-Agent в XSS-пейлоад. Задача checkout.order читает необработанный HTTP_USER_AGENT и сохраняет его без экранирования в #__phocacart_orders.user_agent.

root@kitploit:~
POST /index.php/shop/checkout HTTP/1.1
Host: TARGET
User-Agent: <script>alert(document.domain)</script>
Content-Type: application/x-www-form-urlencoded

phcheckouttac=1&task=checkout.order&option=com_phocacart&return=&<CSRF_TOKEN>=1

Результат: заказ создан. База данных хранит user_agent = '<script>alert(document.domain)</script>'.

Шаг 6: Оформление заказа с вредоносным User-Agent — пейлоад внедрён в базу данных

7. Администратор просматривает список заказов

Администратор переходит в Components → Phoca Cart → Orders. Внедрённый заказ появляется в списке. На этом этапе XSS ещё не срабатывает.

Шаг 7: Список заказов администратора в админпанели Joomla — внедрённый заказ виден

8. XSS срабатывает — администратор открывает детали заказа

Когда администратор щёлкает по заказу, чтобы открыть представление редактирования, сохранённый user_agent выводится без экранирования через itemText(). JavaScript выполняется немедленно.

URL срабатывания:

root@kitploit:~
/administrator/index.php?option=com_phocacart&view=phocacartorder&layout=edit&id=<ORDER_ID>

Шаг 8: XSS-пейлоад выполняется в браузере администратора — alert(document.domain) подтверждает контекст выполнения


IMPACT

  1. Перехват сессии администратора — XSS-пейлоад может похитить cookie сессии администратора, предоставляя полный доступ к админпанели без учётных данных.
  2. Несанкционированные действия администратора — Выполняясь в контексте браузера администратора, пейлоад может выполнять любые действия в админпанели: создавать привилегированные учётные записи, устанавливать вредоносные расширения или изменять содержимое.
  3. Постоянный бэкдор — Пейлоад, устанавливающий веб-шелл или создающий поддельную учётную запись администратора, сохраняется после самого XSS-события, предоставляя злоумышленнику долговременный доступ к серверу.

REFERENCES

  • CVE: https://www.cve.org/CVERecord?id=CVE-2026-76564
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-76564
  • GitHub Advisory: https://github.com/advisories/GHSA-98mw-pj3j-99v2
  • Репозиторий разработчика: https://github.com/PhocaDesign/PhocaCart