
Proof of Concept for CVE-2026-65761 - EasyStore Pro Unauthenticated SQL Injection via `filter_sortby`
filter_sortby (proof-of-concept)Этот репозиторий предоставляет учебный proof-of-concept для CVE-2026-65761 — неаутентифицированной SQL-инъекции, затрагивающей версии с 1.0.0 по 2.0.2 (включительно) расширения EasyStore для Joomla. Уязвима только Pro-версия плагина, поскольку параметр filter_sortby ограничен лицензией.
PoC (poc.py) демонстрирует SQL-инъекцию в параметре запроса filter_sortby в процессе поиска товаров (option=com_easystore&view=products&task=search) через проверку, основанную на ошибках.
Данный проект и Docker-стенды предназначены только для локального тестирования безопасности и обучения.
Не запускайте их против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения.
Уязвимый путь выполнения кода находится в функции, доступной только в Pro-версии. Чтобы сделать этот путь доступным для аудита в воспроизводимой локальной лаборатории, данный репозиторий применяет временный monkeypatch в контейнере, позволяющий задействовать путь сортировки/фильтрации, ограниченный Pro-лицензией.
Это не предоставляется как способ обхода лицензирования и не должно использоваться для доступа к платным функциям в реальных развертываниях. Единственная цель — обеспечить защитные исследования безопасности и скоординированную проверку уязвимости в изолированной локальной тестовой среде.
.
├── backup.sql.gz
├── poc.py
├── vulnerable/
│ ├── docker-compose.yaml
│ └── setup.sh
└── patched/
├── docker-compose.yaml
└── setup.sh
poc.py: эксплойт PoC.vulnerable/docker-compose.yaml: уязвимый лабораторный стенд на http://127.0.0.1:9999.patched/docker-compose.yaml: исправленный лабораторный стенд на http://127.0.0.1:9999.backup.sql.gz: бутстрап-дамп с минимальным набором данных магазина EasyStore, необходимым для этого PoC (2 товара, 1 категория, базовые настройки магазина).vulnerable/setup.sh и patched/setup.sh: импортируют backup.sql.gz в запущенный контейнер MariaDB.pip install requests
Запустите уязвимое окружение:
docker compose -f vulnerable/docker-compose.yaml up -d
Затем подготовьте необходимые тестовые данные EasyStore:
cd vulnerable
./setup.sh
cd ..
Запустите PoC:
python3 poc.py
Ожидаемый результат для уязвимой версии:
[!] Target is vulnerable to CVE-2026-65761!
Сначала остановите уязвимый стенд (если он запущен):
docker compose -f vulnerable/docker-compose.yaml down -v
Запустите исправленное окружение:
docker compose -f patched/docker-compose.yaml up -d
Затем подготовьте те же необходимые тестовые данные EasyStore:
cd patched
./setup.sh
cd ..
Запустите тот же PoC:
python3 poc.py
Ожидаемый результат для исправленной версии:
[-] Target is not vulnerable to CVE-2026-65761
В poc.py целевой URL по умолчанию — http://localhost:9999.
Измените его, если вы запускаете лабораторию на другом хосте или порту.