
Objetivo de validación: porción mínima del núcleo de WordPress que reproduce la cadena REST-to-SQLi de wp2shell (CVE-2026-63030 + CVE-2026-60137)
Una reimplementación compacta y sin dependencias de una pequeña parte de la API REST de WordPress — lo justo para servir una colección pública de entradas y ejecutar varias subpeticiones en un solo viaje de ida y vuelta. Útil para enseñar cómo encajan el enrutamiento de WordPress, WP_Query y $wpdb sin tener que incluir todo el núcleo.
| Método | Ruta | Propósito |
|---|---|---|
GET | /wp-json/wp/v2/posts | Lista las entradas. Admite author_exclude, per_page. |
POST | /wp-json/batch/v1 | Ejecuta varias subpeticiones en una sola petición. |
Ambas rutas son públicas (sin autenticación), coincidiendo con los valores predeterminados de la colección de entradas del núcleo.
index.php front controller / router
wp-includes/
functions.php absint / wp_parse_id_list / wp_parse_url
class-wpdb.php thin $wpdb (prepare / get_results)
class-wp-query.php post query builder
rest-api/
class-wp-rest-request.php
class-wp-rest-server.php routing + /batch/v1
endpoints/class-wp-rest-posts-controller.php /wp/v2/posts
php -S 127.0.0.1:8080
curl 'http://127.0.0.1:8080/wp-json/wp/v2/posts?author_exclude[]=3'
Requiere PHP ≥ 8.0. Una base de datos MySQL es opcional — sin ella, $wpdb devuelve el SQL que habría ejecutado para que puedas ver las consultas generadas.