
Preuve de concept pour CVE-2026-65761 - Injection SQL non authentifiée dans EasyStore Pro via `filter_sortby`
filter_sortbyCe dépôt fournit une preuve de concept pédagogique pour CVE-2026-65761, une vulnérabilité d'injection SQL non authentifiée affectant les versions 1.0.0 à 2.0.2 (incluses) de l'extension Joomla EasyStore. Seule la version Pro du plugin est concernée, car le paramètre filter_sortby est limité par licence.
Le PoC (poc.py) démontre l'injection SQL dans le paramètre de requête filter_sortby sur le flux de recherche de produits (option=com_easystore&view=products&task=search) via une vérification basée sur les erreurs.
Ce projet et les piles Docker sont destinés uniquement aux tests de sécurité locaux et à l'éducation.
Ne l'exécutez pas contre des systèmes qui ne vous appartiennent pas ou pour lesquels vous n'avez pas explicitement l'autorisation de tester.
Le chemin de code vulnérable se trouve dans une fonctionnalité réservée à la version Pro. Pour rendre le chemin de code auditable dans un laboratoire local reproductible, ce dépôt applique un monkeypatch temporaire dans le conteneur afin que le chemin de tri/filtrage limité à la version Pro puisse être exercé.
Ceci n'est pas fourni comme technique de contournement de licence et ne doit pas être utilisé pour accéder à des fonctionnalités payantes dans des déploiements réels. Son seul but est de permettre la recherche défensive en sécurité et la validation coordonnée de vulnérabilités sur un environnement de test local isolé.
.
├── backup.sql.gz
├── poc.py
├── vulnerable/
│ ├── docker-compose.yaml
│ └── setup.sh
└── patched/
├── docker-compose.yaml
└── setup.sh
poc.py : PoC d'exploitation.vulnerable/docker-compose.yaml : pile de laboratoire vulnérable sur http://127.0.0.1:9999.patched/docker-compose.yaml : pile de laboratoire corrigée sur http://127.0.0.1:9999.backup.sql.gz : dump d'amorçage avec un jeu de données minimal de boutique EasyStore requis par ce PoC (2 produits, 1 catégorie, paramètres de boutique de base).vulnerable/setup.sh et patched/setup.sh : importent backup.sql.gz dans le conteneur MariaDB en cours d'exécution.pip install requests
Démarrez l'environnement vulnérable :
docker compose -f vulnerable/docker-compose.yaml up -d
Puis provisionnez les données de test EasyStore requises :
cd vulnerable
./setup.sh
cd ..
Exécutez le PoC :
python3 poc.py
Le résultat vulnérable attendu comprend :
[!] Target is vulnerable to CVE-2026-65761!
Arrêtez d'abord la pile vulnérable (si elle est en cours d'exécution) :
docker compose -f vulnerable/docker-compose.yaml down -v
Démarrez l'environnement corrigé :
docker compose -f patched/docker-compose.yaml up -d
Puis provisionnez les mêmes données de test EasyStore requises :
cd patched
./setup.sh
cd ..
Exécutez le même PoC :
python3 poc.py
Le résultat corrigé attendu est :
[-] Target is not vulnerable to CVE-2026-65761
Dans poc.py, l'URL cible par défaut est http://localhost:9999.
Ajustez-la si vous exécutez le laboratoire sur un hôte ou un port différent.