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-menu-items-api — Joomla 6.1.3 - Élevé - À distance - ACL - API des éléments de menu résiduelle | Kitploit
Outils/GitHubGitHub/abraxas/joomla-menu-items-api
Authentification et AutorisationAnalyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebTests d'IntrusionSécurité des APILabs et Pratique
GitHubabraxas/joomla-menu-items-api

joomla-menu-items-api

Joomla 6.1.3 - Élevé - À distance - ACL - API des éléments de menu résiduelle

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

Abraxas Labs - joomla-menu-items-api

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

Article : https://abraxaslabs.tech/research/joomla-menu-items-api

joomla-menu-items-api

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

Joomla CMS 6.1.3 (0f2d4de) - Open Source Matters

L'interface d'administration des éléments de menu vérifie com_menus.menu.{id} et refuse menutype == main. api/components/com_menus/src/Controller/ItemsController.php n'a pas de allowAdd / allowEdit, donc ApiController ne demande que core.manage plus core.create / core.edit sur com_menus.

Un utilisateur disposant d'un jeton qui peut gérer un menu peut envoyer un POST vers /api/index.php/v1/menus/administrator/items sur un menu auquel il est refusé dans l'interface, y compris le menu protégé main de l'administrateur.

IDpas encore de CVE
ClassePrivilège résiduel / contournement d'autorisation
PortéeDistante (jeton API avec core.login.api)
CWECWE-863
CVSSÉlevé : 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
ProduitJoomla CMS
Affecté6.1.3 (0f2d4de4729eb951e0878fec98c7990da07915b2)
AuthentificationUtilisateur API distant avec core.login.api + core.manage + core.create/core.edit sur com_menus, pas Super User. Par défaut, core.login.api est réservé au Super User.
LicenceGNU Affero GPL v3.0
Lab127.0.0.1 uniquement

Ce qu'un attaquant peut faire

Utilisateur disposant d'un jeton qui peut créer des éléments uniquement sur le menu A. Il ne peut toujours pas installer d'extensions à moins de disposer déjà de cette permission. Il ne devient pas Super User à cause de ce privilège résiduel.

PrivilègeMéthode / cheminTypeProuvé en lab ou déduit
Créer un élément sur un menu auquel il est refuséPOST /api/index.php/v1/menus/administrator/items avec menutype de BintégritéProuvé en lab. HTTP 200, élément 102 sur staffmenu, titre poc-JOOMLA-MENU-ITEMS-API-WITNESS
Placer une URL sur le menu protégé main de l'administrateurMême POST avec menutype=mainintégritéProuvé en lab HTTP 200. L'interface allowEdit renvoie false pour main
Rediriger le personnel vers une page de connexion factice ou masquer un véritable élément d'administrationÉlément URL publié sur un menu d'administrationintégrité / reconnaissanceDéduit de l'écriture. Le lab a placé https://example.invalid/
Modifier ou supprimer des éléments sur des menus qu'il ne possède pasPATCH / DELETE de l'API utilise les mêmes allow* manquantsintégritéDéduit. Le lab a exercé la création
Installer des extensions ou devenir Super UserNécessite d'autres ACLn/aFermé. Le Manager n'est pas Super User

Fermé sur cette version : ajout/enregistrement dans l'interface sur staffmenu pour le même utilisateur (not permitted). L'ajout dans l'interface sur labmenu fonctionne toujours. Le contrôle core.admin de l'API Groups depuis 6.1.1 est inchangé.

Comment je l'ai trouvé

J'ai épinglé la version 6.1.3 après la vague JSST de 2026. Le ItemController de l'administrateur fait déjà ce qu'il faut :

return $user->authorise('core.create', 'com_menus.menu.' . $menutypeID);
if ($item->menutype == 'main') {
    return false;
}
return $user->authorise('core.edit', 'com_menus.menu.' . (int) $menutypeID);

Le contrôleur d'éléments de l'API ne redéfinit pas allowAdd / allowEdit. Le ApiController par défaut ne vérifie que le composant core.manage plus core.create / core.edit. Le chemin canSave du modèle ne vérifie que le composant core.edit. La copie/déplacement par lots vérifie déjà l'asset du menu.

Fausses pistes déjà consignées : lire un HTTP 200 de l'UI comme une autorisation (le corps est « not permitted ») ; considérer que core.manage sur com_menus suffit dans l'UI (l'UI se base toujours sur com_menus.menu.{id}) ; un Manager standard sans core.login.api. Mise en scène : un reverse shell. L'oracle est un 200 de l'API sur staffmenu et main plus un refus de l'UI sur B.

Mêmes restes d'épinglage : levels API, media override, articles catid.

Lab

python3 joomla-menu-items-api-Abraxas-Labs.py

ou

cd lab
./run.sh

Ciblez uniquement http://127.0.0.1:19530. Image joomla:6.1.3-php8.3-apache.

SUCCESS joomla-menu-items-api api-b-http=200 item-id=102 menutype=staffmenu api-main-http=200 ui-add-b=200 ui-save-b=200 JOOMLA-MENU-ITEMS-API-WITNESS

ui-add-b / ui-save-b renvoient HTTP 200 ; le refus de B est le corps « not permitted » de l'interface, et non un statut 403.

Le correctif

Copiez ItemController::allowAdd / allowEdit (ainsi que la suppression) sur le contrôleur de l'API, y compris le bloc main. Vérifiez l'asset de type menu dans canSave de la même manière.

Références

  • github.com/joomla/joomla-cms tag 6.1.3 (0f2d4de4729eb951e0878fec98c7990da07915b2)
  • ItemsController.php
  • ItemController.php
  • Même tag : joomla-levels-api · joomla-media-override · joomla-articles-catid
  • CWE-863

Licence

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

Télécharger l’outil