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-14871 — Vulnérabilité BOLA/IDOR dans osTicket ajax.tickets.php | Divulgation responsable | Kitploit
Outils/GitHubGitHub/jfoz1010/cve-2026-14871
Analyse des VulnérabilitésExploitationExploitation d'Applications WebCollecte d'InformationsTests d'IntrusionApprentissage et Éducation
GitHubjfoz1010/cve-2026-14871

CVE-2026-14871

Vulnérabilité BOLA/IDOR dans osTicket ajax.tickets.php | Divulgation responsable

Voir le dépôt
5il y a 1 moisPas 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

CVE-2026-14871 - BOLA / IDOR dans osTicket ajax.tickets.php

Autorisation au niveau objet brisée (BOLA) : Référence directe à un objet non sécurisée (IDOR)
include/ajax.tickets.php → viewField() fonction
Signalé par @JF0x0r · 27 mars 2026 Statut : CORRIGÉ - Correctif publié dans osTicket v1.17.8 / v1.18.4


En un coup d'œil

ChampDétails
VulnérabilitéBOLA / IDOR (Autorisation au niveau objet brisée)
CibleosTicket v1.18-git - commit 2570d69
Composantinclude/ajax.tickets.php
FonctionviewField() - lignes 805–806
EndpointGET /scp/ajax.php/tickets/{ticket_id}/field/{field_id}/view
Score CVSS 4.08.2 ÉLEVÉ - AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N
CWECWE-862 (Absence d'autorisation), CWE-639 (Contournement d'authentification via clé contrôlée par l'utilisateur)
Statut✅ CORRIGÉ — corrigé dans osTicket v1.17.8 et v1.18.4

Qui suis-je

Je suis Juan Felipe Oz (@JF0x0r), un chercheur en sécurité passionné par la sécurité des logiciels open source. Je ne fais pas cela pour des primes, je le fais parce que je crois que les outils sur lesquels les gens comptent doivent être sûrs. Quand je trouve quelque chose, je le signale de manière responsable, je le documente correctement, et je le partage publiquement une fois corrigé.


Ce que j'ai trouvé

Lors d'une revue manuelle du code du sous-système AJAX d'osTicket, j'ai remarqué quelque chose d'anormal dans ajax.tickets.php. La fonction viewField() gère les demandes de visualisation des données de champ de ticket - et elle récupère bien l'objet ticket et valide l'existence du champ. Mais elle ne vérifie jamais si l'agent demandeur a réellement la permission d'accéder à ce ticket.

Pas de checkStaffPerm(). Pas de validation de département. Rien.

Cela signifie que tout agent authentifié, même strictement limité à un seul département, peut lire les champs de ticket de n'importe quel autre département du système, simplement en connaissant ou en devinant le ticket_id et le field_id. Ce sont des entiers séquentiels. Faciles à énumérer.

Ce qui rend cela particulièrement flagrant, c'est la comparaison avec editField(), la fonction sœur située juste au-dessus dans le même fichier. editField() appelle correctement $ticket->checkStaffPerm($thisstaff, Ticket::PERM_EDIT) et renvoie un HTTP 403 en cas de violation. Le correctif était déjà implémenté pour les écritures — il n'a simplement jamais été appliqué aux lectures.


Preuve de concept : Démonstration en direct

J'ai enregistré une démonstration complète de bout en bout de l'exploitation dans un environnement de laboratoire contrôlé :

PoC Video — BOLA/IDOR osTicket

La vidéo présente :

  • Configuration du laboratoire avec deux départements isolés (Dept-A et Dept-B)
  • Agent agent_a authentifié avec un accès restreint au seul Dept-A
  • Élaboration de la requête non autorisée ciblant un ticket confidentiel du Dept-B
  • Le serveur renvoyant HTTP 200 avec les données du champ de ticket restreint exposées
  • Rejeu après le correctif montrant HTTP 403 — Permission refusée

Le script exploit.py dans ce dépôt automatise la chaîne complète (authentification → énumération → accès non autorisé aux champs) et a été utilisé lors de l'évaluation pour confirmer que le problème s'étend au-delà des tests manuels.


Impact

  • Divulgation de données sensibles - tout agent peut lire les champs de ticket confidentiels dans tous les départements
  • Escalade de privilèges horizontale - les limites départementales sont complètement contournées
  • Énumération massive - les entiers séquentiels ticket_id / field_id rendent le scraping en masse trivial
  • Violation de confidentialité multi-locataire - contredit le principe de conception fondamental du modèle d'isolation des départements d'osTicket

Le correctif

Une insertion d'une seule ligne dans viewField(), immédiatement après la récupération de l'objet ticket - ce qui reflète exactement ce que editField() fait déjà correctement. Les détails techniques complets, le diff et la décomposition CVSS se trouvent dans le rapport joint.

📄 BOLA_IDOR_osTicket_Report_v2.pdf

✅ Correctif officiel (Confirmé par l'équipe osTicket)

osTicket a confirmé le rapport et a mis en œuvre l'atténuation en ajoutant $ticket->checkStaffPerm($thisstaff) avant de résoudre/afficher le champ demandé - ce qui reflète la vérification déjà présente dans editField(). Les membres du personnel doivent désormais avoir accès au ticket parent avant de visualiser les données de champ.

DétailRéférence
Commit du correctifd590a9770d25159fb7741681f36e23a35f1fb5e9
Corrigé dansv1.17.8 · v1.18.4
Téléchargements officielsosticket.com/download
Type de versionVersion de sécurité accélérée
RemerciementsJuan Felipe Oz (@JF0x0r)

osTicket recommande un court délai de mise à niveau avant de partager publiquement les étapes complètes de l'exploitation. Ce dépôt suit cette directive - voir Calendrier de divulgation ci-dessous.


Calendrier de divulgation

DateÉvénement
27 mars 2026Vulnérabilité découverte et documentée
27 mars 2026Rapport envoyé à [email protected]
17 juin 2026osTicket confirme le problème et partage le correctif d'atténuation pour vérification
17 juin 2026osTicket publie les versions v1.17.8 et v1.18.4 contenant le correctif (commit d590a9770d25159fb7741681f36e23a35f1fb5e9)
—Attribution CVE en attente via GitHub CNA

Fichiers dans ce dépôt

root@kitploit:~
.
├── README.md                        # Ce fichier
├── BOLA_IDOR_osTicket_Report_v2.pdf # Rapport de divulgation technique complet
├── exploit.py                       # Script d'automatisation de la PoC
└── PoC_osTicket.mov                 # Copie locale de la vidéo de démonstration

Divulgation responsable

J'ai signalé ceci en privé à l'équipe de sécurité d'osTicket avant de publier quoi que ce soit. Ce dépôt a été rendu public seulement après la fenêtre de divulgation responsable, et maintenant qu'un correctif officiel a été publié, le rapport complet est disponible. Si vous êtes un mainteneur d'osTicket et avez des questions, n'hésitez pas à me contacter directement via GitHub.


Trouvé par @JF0x0r · La sécurité open source compte.

Télécharger l’outil