Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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é.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
joomla-levels-api — Joomla 6.1.3 - Élevé - À distance - ACL - GET /api/v1/users/levels divulgue les niveaux de visibilité | Kitploit
Outils/GitHubGitHub/abraxas/joomla-levels-api
Authentification et AutorisationAnalyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebTests d'IntrusionSécurité des APILabs et Pratique
GitHubabraxas/joomla-levels-api

joomla-levels-api

Joomla 6.1.3 - Élevé - À distance - ACL - GET /api/v1/users/levels divulgue les niveaux de visibilité

9il y a 4 joursPas 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 →
Voir le dépôt
Partager

Abraxas Labs - joomla-levels-api

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  joomla-levels-api

joomla-levels-api

Classe : Privilège résiduel Portée : Distante

Joomla CMS 6.1.3 (0f2d4de) - Open Source Matters

Administrateurs Utilisateurs -> Afficher les niveaux d'accès nécessite core.admin sur com_users (LevelController::allowSave et suppression). Le webservice Groups fait déjà de même (GroupsController, 6.1.1). LevelsController n'a pas de surcharge allowAdd, allowEdit ou delete, donc ApiController laisse passer core.manage plus core.create.

Un jeton API de classe Manager, accordé core.login.api sans core.admin, peut créer des niveaux d'accès en visualisation que l'interface interdit.

IDpas encore de CVE
ClassePrivilège résiduel / contournement d'autorisation
PortéeDistante (jeton API avec core.login.api)
CWECWE-863
CVSSMoyen : 6.1 CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:N
ProduitJoomla CMS
Affecté6.1.3 (0f2d4de4729eb951e0878fec98c7990da07915b2)
AuthJeton API pour Manager (groupe 6) avec core.login.api et com_users manage/create/edit. Pas de core.admin. Par défaut, core.login.api est réservé au Super Utilisateur.
LicenceGNU Affero GPL v3.0
Lab127.0.0.1 uniquement

Ce qu'un attaquant peut faire

Utiliser un jeton API non-Super-Utilisateur pour modifier quels groupes voient quelles pages. Il ne devient pas Super Utilisateur à partir de ce seul privilège résiduel. Il s'agit d'un contrôle de visibilité du contenu, pas d'une prise de contrôle du site.

PrivilègeMéthode / cheminTypeProuvé en lab ou déduit
Créer un niveau d'accès en visualisationPOST /api/index.php/v1/users/levels JSON title, rules (ids de groupe)intégritéProuvé en lab. HTTP 200, #__viewlevels id=7, titre poc-level-JOOMLA-LEVELS-API-WITNESS
Modifier un niveau existant (liste de groupes / titre)PATCH /api/index.php/v1/users/levels/{id}intégritéDéduit. Même contrôleur, pas de allowEdit. Lab : création uniquement.
Supprimer un niveauDELETE /api/index.php/v1/users/levels/{id}intégrité / disponibilité des lignes ACLDéduit. Même surcharge manquante. Le lab n'a pas effectué de DELETE.
Exposer un article, module ou élément de menu réservé aux membresNouveau niveau ou niveau modifié dont les rules incluent Public / Invité / Enregistréreconnaissance (visibilité du contenu)Déduit de #__viewlevels.rules. Le lab a inséré la ligne ; il n'a pas re-ACL un article en production.
Masquer une page aux Enregistrés, ou ajouter le groupe de l'attaquant à un niveau SpécialMême PATCH / créationintégritéDéduit. Même stockage.
Modifier les groupes d'utilisateurs depuis l'APIPOST /api/index.php/v1/users/groupsn/aProuvé en lab fermé. HTTP 403 (GroupsController core.admin)
Ouvrir Utilisateurs -> Afficher les niveaux d'accès dans l'administrateurGET /administrator/index.php?option=com_users&view=levelsn/aProuvé en lab fermé. HTTP 403
Enregistrer un niveau depuis l'interfacePOST ... task=level.saven/aProuvé en lab fermé. HTTP 403 (LevelController::allowSave nécessite core.admin)
Solliciter l'API avec un Manager standard (sans core.login.api)Jeton Bearer / X-Joomla-Tokenn/aDéduit fermé. Par défaut, core.login.api est réservé au Super Utilisateur (groupe 8). Ce lab l'accorde d'abord au groupe 6.
RCE Super Utilisateur / installateurn/an/aFermé. Le Manager reste Manager.

Comment je l'ai trouvé

J'ai épinglé joomla/joomla-cms 6.1.3 après la vague JSST de 2026-07/08. L'API Groups exige déjà core.admin. Les niveaux de visualisation passent toujours par ApiController (core.manage plus core.create / core.edit / core.delete). La seule logique supplémentaire sur LevelsController est le décodage JSON de rules pour PATCH.

Sibling Groups corrigé :

public function allowAdd($data = [])
{
    return $this->app->getIdentity()->authorise('core.admin', $this->option);
}

Interface administrateur :

protected function allowSave($data, $key = 'id')
{
    return $this->app->getIdentity()->authorise('core.admin', $this->option)
        && parent::allowSave($data, $key);
}

Fausses pistes déjà consignées : considérer l'API Groups comme encore ouverte (elle renvoie 403) ; solliciter l'API avec un Manager standard sans accorder d'abord core.login.api (par défaut réservé au Super Utilisateur, même configuration que CVE-2026-71574 / 72531 / 48904) ; lire le 403 de l'interface comme l'histoire complète (le privilège résiduel est dans l'API). Théâtre : un reverse shell. L'oracle est API 200 plus Groups 403 plus UI 403.

Autres privilèges résiduels du même pin : API des éléments de menu, surcharge média, catid des articles.

Lab

python3 joomla-levels-api-Abraxas-Labs.py

ou

cd lab
./run.sh

Cible uniquement http://127.0.0.1:19520. Image joomla:6.1.3-php8.3-apache plus mariadb:11.4.

SUCCESS joomla-levels-api api-http=200 level-id=7 groups-api=403 ui-view=403 ui-save=403 JOOMLA-LEVELS-API-WITNESS

Le correctif

Copier allowAdd / allowEdit / delete avec core.admin de GroupsController vers LevelsController. Conserver la barrière de l'interface administrateur.

Références

  • github.com/joomla/joomla-cms tag 6.1.3 (0f2d4de4729eb951e0878fec98c7990da07915b2)
  • LevelsController.php
  • Correctif voisin : API Groups core.admin (6.1.1) · CVE-2026-71574
  • Même tag : joomla-menu-items-api · joomla-media-override · joomla-articles-catid
  • CWE-863

Licence

GNU Affero GPL v3.0. Voir LICENSE. Lab en boucle locale uniquement. Aucune garantie.

Télécharger l’outil