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-16540-SimplyScheduleAppointments — CVE-2026-16540 — Simply Schedule Appointments < 1.6.12.6 Divulgación no autenticada de datos de citas y eliminación masiva | Kitploit
Herramientas/GitHubGitHub/huseyn0vs/cve-2026-16540-simplyscheduleappointments
Análisis de VulnerabilidadesExplotación de Aplicaciones WebExfiltración de DatosRecopilación de InformaciónPruebas de PenetraciónMala Configuración
GitHubhuseyn0vs/cve-2026-16540-simplyscheduleappointments

CVE-2026-16540-SimplyScheduleAppointments

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-16540 — Simply Schedule Appointments < 1.6.12.6 Divulgación no autenticada de datos de citas y eliminación masiva

Ver Repositorio
1hace 29 díasAún no revisado

CVE-2026-16540 — Simply Schedule Appointments < 1.6.12.6

Divulgación no autenticada de datos de citas y eliminación masiva a través del endpoint purge

CampoDetalles
CVECVE-2026-16540
PluginSimply Schedule Appointments
Versiones afectadas< 1.6.12.6
Corregido en1.6.12.6
Instalaciones activas~70,000
CVSS 3.16.5 (Medio) — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
CWECWE-863 (Autorización incorrecta)
OWASPA5: Control de acceso roto
WPVDBc3829294-c388-4151-9e25-a3eac7b1f1c6
InvestigadorSuleyman Huseynov (@huseyn0vs__)
Divulgado2026-07-22

Resumen

El endpoint REST GET /wp-json/ssa/v1/appointments/purge en Simply Schedule Appointments aplica una comprobación de autorización (get_items_permissions_check) que valida un id_token que demuestra la propiedad de una sola cita. Sin embargo, el manejador (purge_appointments()) ignora por completo a qué cita pertenece el token y, en su lugar, opera sobre todas las citas de todo el sitio que coincidan con las condiciones proporcionadas.

Un atacante no autenticado que reserva una sola cita a través del formulario público de reserva recibe un id_token. Usando ese token, el atacante puede:

  1. Recuperar datos personales de todas las citas del sitio (nombres, correos electrónicos, números de teléfono, detalles de las citas)
  2. Eliminar permanentemente todas las citas pasadas, canceladas o futuras (solo ediciones premium para la eliminación)

La eliminación se propaga en cascada a través de 6 tablas de base de datos dependientes en transacciones confirmadas, sin funcionalidad nativa de deshacer.


Análisis de causa raíz

Archivo: includes/class-appointment-model.php

Autorización de recurso incorrecto (CWE-863)

La puerta de permisos y el manejador operan en ámbitos completamente diferentes:

root@kitploit:~
// Route registration
register_rest_route( $namespace, '/' . $base . '/purge', array(
    array(
        'methods'             => WP_REST_Server::READABLE,
        'callback'            => array( $this, 'purge_appointments' ),
        'permission_callback' => array( $this, 'get_items_permissions_check' ),
    ),
) );

Comprobación de permisos — valida la propiedad de UNA cita mediante id_token:

root@kitploit:~
public function get_items_permissions_check( $request ) {
    // ...
    if ( true === $this->id_token_permissions_check( $request ) ) {
        return true;  // grants access if caller proves ownership of one appointment
    }
    // ...
}

Manejador — ignora la cita del token y opera en todo el sitio:

root@kitploit:~
public function purge_appointments( WP_REST_Request $request ) {
    $params = $request->get_params();

    // No customer_id or appointment_id scoping — deletes ALL matching appointments
    if ( isset( $params['purge_past_appointments'] ) && 'true' === $params['purge_past_appointments'] ) {
        $conditions[] = $wpdb->prepare( 'end_date < %s', $date_modified_max->format( 'Y-m-d' ) );
    }

    $sql = 'SELECT * FROM ' . $this->get_table_name()
         . ' WHERE ' . implode( ' OR ', $conditions )
         . ' ORDER BY id ASC LIMIT 5000';

    $list = $wpdb->get_results( $sql, ARRAY_A );
    // Cascade-deletes across 6 tables in committed transactions
}

El id_token es un HMAC-MD5 derivado del id y date_created de una sola cita. Poseer este token solo demuestra que quien lo presenta reservó una cita específica; no confiere ningún privilegio a nivel de sitio.


Cadena de ataque

root@kitploit:~
1. Attacker visits the booking page and books any free appointment
   → receives confirmation email containing: appointment_id + id_token

2. GET /wp-json/ssa/v1/appointments/purge
     ?id=<appointment_id>
     &token=<id_token>
     &purge_past_appointments=true

3. Permission check passes (valid token for attacker's own appointment)

4. Handler selects ALL past appointments site-wide → returns PII in response
   → permanently deletes them across 6 tables (on premium editions)

Prueba de concepto

El PoC se publicará el 2026-08-05 tras el embargo de divulgación coordinada.

Consulta el directorio poc/ después de la fecha de embargo.


Impacto

EscenarioResultado
Divulgación de datosNombres, correos electrónicos, números de teléfono y detalles de las citas de todos los clientes
Eliminación masiva (premium)Todas las citas históricas/futuras destruidas permanentemente en 6 tablas
Sin vía de recuperaciónRequiere restaurar una copia de seguridad completa de la base de datos

Cronograma de divulgación

FechaEvento
2026-07-10Vulnerabilidad descubierta
2026-07-10Enviada a WPScan
2026-07-22CVE-2026-16540 asignado

Referencias

  • Aviso de WPScan
  • Página del plugin de WordPress
  • CWE-863: Autorización incorrecta
  • OWASP A5: Control de acceso roto
Descargar herramienta
2026-07-22Divulgación pública en WPScan
2026-08-05PoC publicado