Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-14871 — Vulnerabilidad BOLA/IDOR en osTicket ajax.tickets.php | Divulgación responsable | Kitploit
Herramientas/GitHubGitHub/jfoz1010/cve-2026-14871
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebRecopilación de InformaciónPruebas de PenetraciónAprendizaje y Educación
GitHubjfoz1010/cve-2026-14871

CVE-2026-14871

Vulnerabilidad BOLA/IDOR en osTicket ajax.tickets.php | Divulgación responsable

Ver Repositorio
hace 1 mesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

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

Autorización rota a nivel de objeto (BOLA): Referencia directa insegura a objetos (IDOR)
include/ajax.tickets.php → función viewField()
Reportado por @JF0x0r · 27 de marzo de 2026 Estado: PARCHEADO - Corrección publicada en osTicket v1.17.8 / v1.18.4


De un vistazo

CampoDetalles
VulnerabilidadBOLA / IDOR (Autorización rota a nivel de objeto)
ObjetivoosTicket v1.18-git - commit 2570d69
Componenteinclude/ajax.tickets.php
FunciónviewField() - líneas 805–806
EndpointGET /scp/ajax.php/tickets/{ticket_id}/field/{field_id}/view
Puntuación CVSS 4.08.2 ALTA - AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N
CWECWE-862 (Autorización faltante), CWE-639 (Omisión de autenticación mediante clave controlada por el usuario)
Estado✅ Parcheado — corregido en osTicket v1.17.8 y v1.18.4

Quién soy

Soy Juan Felipe Oz (@JF0x0r), investigador de seguridad apasionado por la seguridad del código abierto. No hago esto por recompensas; lo hago porque creo que las herramientas en las que la gente confía deberían ser seguras. Cuando encuentro algo, lo reporto de forma responsable, lo documento adecuadamente y lo comparto públicamente una vez que está corregido.


Lo que encontré

Mientras realizaba una revisión manual del código del subsistema AJAX de osTicket, noté algo extraño en ajax.tickets.php. La función viewField() gestiona las solicitudes para ver los datos de los campos del ticket - y sí recupera el objeto del ticket y valida que el campo exista. Pero nunca comprueba si el agente que realiza la solicitud tiene realmente permiso para acceder a ese ticket.

Sin checkStaffPerm(). Sin validación de departamento. Nada.

Esto significa que cualquier agente autenticado, incluso uno estrictamente limitado a un solo departamento, puede leer campos de tickets de cualquier otro departamento del sistema, solo con conocer o adivinar el ticket_id y el field_id. Son enteros secuenciales. Fáciles de enumerar.

Lo que hace esto particularmente evidente es la comparación con editField(), la función hermana justo encima en el mismo archivo. editField() llama correctamente a $ticket->checkStaffPerm($thisstaff, Ticket::PERM_EDIT) y devuelve HTTP 403 ante una violación. La corrección ya estaba implementada para escrituras — simplemente nunca se aplicó a las lecturas.


Prueba de concepto: Demostración en vivo

Grabé una demostración completa de extremo a extremo del exploit en un entorno de laboratorio controlado:

PoC Video — BOLA/IDOR osTicket

El video muestra:

  • Configuración del laboratorio con dos departamentos aislados (Dept-A y Dept-B)
  • Agente agent_a autenticado con acceso restringido únicamente a Dept-A
  • Creación de la solicitud no autorizada dirigida a un ticket confidencial de Dept-B
  • El servidor devolviendo HTTP 200 con los datos del campo del ticket restringido expuestos
  • Reproducción después del parche mostrando HTTP 403 — Permiso denegado

El script exploit.py de este repositorio automatiza toda la cadena (autenticación → enumeración → acceso no autorizado a campos) y se utilizó durante la evaluación para confirmar que el problema escala más allá de las pruebas manuales.


Impacto

  • Divulgación de datos sensibles - cualquier agente puede leer campos confidenciales de tickets en todos los departamentos
  • Escalada horizontal de privilegios - los límites departamentales se omiten por completo
  • Enumeración masiva - los enteros secuenciales ticket_id / field_id hacen que el raspado masivo sea trivial
  • Violación de confidencialidad multiinquilino - anula el principio de diseño central del modelo de aislamiento por departamentos de osTicket

La corrección

Una inserción de una sola línea en viewField(), inmediatamente después de recuperar el objeto del ticket, replicando exactamente lo que editField() ya hace correctamente. Los detalles técnicos completos, el diff y el desglose CVSS están en el informe adjunto.

📄 BOLA_IDOR_osTicket_Report_v2.pdf

✅ Parche oficial (Confirmado por el equipo de osTicket)

osTicket confirmó el informe e implementó la mitigación añadiendo $ticket->checkStaffPerm($thisstaff) antes de resolver/representar el campo solicitado, replicando la comprobación ya presente en editField(). El personal ahora debe tener acceso al ticket principal antes de ver los datos de los campos.

osTicket recomienda un breve margen de actualización antes de compartir públicamente los pasos completos del exploit. Este repositorio sigue esa directriz; consulte Cronograma de divulgación a continuación.


Cronograma de divulgación


Archivos en este repositorio

root@kitploit:~
.
├── README.md                        # This file
├── BOLA_IDOR_osTicket_Report_v2.pdf # Full technical disclosure report
├── exploit.py                       # PoC automation script
└── PoC_osTicket.mov                 # Local copy of the demo video

Divulgación responsable

Reporté esto de forma privada al equipo de seguridad de osTicket antes de publicar nada. Este repositorio se hizo público solo después de la ventana de divulgación responsable y, ahora que se ha publicado un parche oficial, el informe completo está disponible. Si eres mantenedor de osTicket y tienes preguntas, no dudes en contactar directamente a través de GitHub.


Encontrado por @JF0x0r · La seguridad del código abierto importa.

Descargar herramienta
DetalleReferencia
Commit del parched590a9770d25159fb7741681f36e23a35f1fb5e9
Corregido env1.17.8 · v1.18.4
Descargas oficialesosticket.com/download
Tipo de lanzamientoLanzamiento de seguridad acelerado
AgradecimientoJuan Felipe Oz (@JF0x0r)
FechaEvento
27 de marzo de 2026Vulnerabilidad descubierta y documentada
27 de marzo de 2026Informe enviado a [email protected]
17 de junio de 2026osTicket confirma el problema y comparte el parche de mitigación para verificación
17 de junio de 2026osTicket publica v1.17.8 y v1.18.4 con la corrección (commit d590a9770d25159fb7741681f36e23a35f1fb5e9)
—Asignación de CVE pendiente a través del CNA de GitHub