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
4il y a 2 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

joomla-menu-items-api

Classe : Reliquat de privilège 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 ne possède 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 administrateur protégé main.

IDpas encore de CVE
ClasseReliquat de privilège / 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)
AuthUtilisateur 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
Labo127.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 posséder déjà cette permission. Il ne devient pas Super User à cause de ce reliquat.

PrivilègeMéthode / cheminTypeProuvé en labo 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 labo. HTTP 200, élément 102 sur staffmenu, titre poc-JOOMLA-MENU-ITEMS-API-WITNESS
Placer une URL sur le menu administrateur protégé mainMême POST avec menutype=mainintégritéProuvé en labo 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 labo a placé https://example.invalid/
Modifier ou supprimer des éléments sur des menus qu'il ne possède pasAPI PATCH / DELETE utilise le même allow* manquantintégritéDéduit. Le labo 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 ce pin : ajout/enregistrement via l'interface sur staffmenu pour le même utilisateur (not permitted). L'ajout via l'interface sur labmenu fonctionne toujours. Le contrôle core.admin de l'API Groups depuis 6.1.1 est intact.

Comment je l'ai trouvé

J'ai épinglé 6.1.3 après la vague JSST 2026. Le contrôleur administrateur ItemController 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 API des éléments ne surcharge pas allowAdd / allowEdit. Le ApiController par défaut ne vérifie que core.manage du composant plus core.create / core.edit. Le chemin canSave du modèle ne vérifie que core.edit du composant. La copie/déplacement par lot vérifie déjà l'asset du menu.

Fausses pistes déjà consignées : lire un HTTP 200 de l'interface comme une autorisation (le corps est "not permitted") ; considérer core.manage sur com_menus comme suffisant dans l'interface (l'interface se base toujours sur com_menus.menu.{id}) ; un Manager standard sans core.login.api. Théâtre : un reverse shell. L'oracle est un HTTP 200 de l'API sur staffmenu et main plus un refus de l'interface sur B.

Autres reliquats du même pin : API levels, surcharge media, catid articles.

Labo

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

ou

cd lab
./run.sh

Cible 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 sont des HTTP 200 ; le refus de B est le corps "not permitted" de l'interface, pas un statut 403.

Le correctif

Copier ItemController::allowAdd / allowEdit (et delete) sur le contrôleur API, y compris le bloc main. Vérifier l'asset du type de 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. Labo en boucle locale uniquement. Aucune garantie.

Télécharger l’outil