2

複数のWordpressをインストールしているクライアントがいますが、彼は最新の状態に保っていませんでした. その結果、彼はハッキングされました。ハッカーがどのように侵入したかを突き止め、問題を恒久的に修正しようとする一方で、問題を迅速かつ自動的に修正するためのスクリプトを作成しようとしています。

私が望むことを行うこのスクリプトを見つけました:http://designpx.com/tutorials/wordpress-security/

<?php eval(base64_decode("aWY..."); ?>すべての php ファイルから自動的に を削除しますが、これを行うために使用している正規表現<?php get_header(); ?>は、悪意のあるコードに従っている場合にも削除します。

だから、私が望むのはそれを変更して、悪意のあるコードだけを削除し、php コードの最初の行も削除しないようにすることです。置換を行うスクリプトの部分は次のとおりです。

find $dir -name "*.php" -type f \  
|xargs sed -i 's#<?php /\*\*/ eval(base64_decode("aWY.*?>##g' 2>&1

何を変更する必要があるので?>、2 番目ではなく最初の で停止しますか?

: これが迅速な一時的な修正であることは承知していますが、クライアントがどのサイトを修正し、どのサイトを消去するかについて決心するまで続きます。

4

3 に答える 3

7
  1. データベースとテーマをバックアップします。
  2. WordPressを削除します。
  3. 疑わしいファイルをすべて削除します。
  4. 最新のWordPressをインストールします。
  5. 新しいWordPressファイルを書き込み禁止に保つ
  6. 時間通りに更新されないために、いわゆる「管理者」を平手打ちします。
  7. 利益。

クレイジーなスクリプトなどは必要ありません。ファイルが感染していない限り、PHPのハックは機能しません。それを削除すると問題が解決しました。

そして、はい、同じサーバーに複数のワードプレスがインストールされている場合でも実行できます(なぜ?!)。

于 2012-10-21T17:19:44.170 に答える
3

再インストールを勧めるコメントとは別に、当面の正規表現の質問は貪欲かもしれません。プレースホルダーは最短の.*?文字数に一致する必要がsedありますが、行の長さなどに関していくつかの制限がある場合があります。(不明)

[^>]*しかし、それをさらに制約するために、その代わりに使用できます:

 's#<?php /\*\*/ eval(base64_decode("aWY[^>]*?>##g'

これにより、終了を超えることができなくなります?>base64とにかくこれを含むことはできませんでした。

于 2012-10-21T18:24:09.447 に答える
1

すべてをバックアップし、ウイルス対策ソフトウェアでスキャンします。サーバーで wp-config.php 以外のすべての wp ファイルを削除してから、wordpress.org にアクセスして最新バージョンをダウンロードします。コンピューターに抽出してアップロードします。

バックアップ テーマ ファイルの感染を確認します。

于 2012-10-21T17:36:06.840 に答える