多数の共有ホスティングサーバーのセキュリティを担当しています。それらのほとんどはWordPressウェブサイトを持っています。各サーバーには、少なくとも500のWordPress Webサイトがあります。
私の経験では、WordPressの問題は弱いパスワードで始まります。 Webサイトの管理者パスワードのほとんどは非常に脆弱であり、脆弱なパスワードWebサイトを使用すると、さまざまな悪意のある活動に悪用され使用されます。
私の計画は、WordPress Webサイトの弱いパスワードを見つけ、管理者パスワードを他の強力なパスワードに強制的に変更することです。そうすれば、WordPressを保護でき、サーバーがトラブルに陥ることはありません。
保存されているWordPressパスワードの強度を知る方法は何ですか?
ブルートフォースハッシュ
データベースに保存されているハッシュをブルートフォースできます。
WordPressはハッシュにphpassを使用します。デフォルトでは、WordPressはblowfishなどを使用せず、繰り返し回数8192のmd5のみを使用します。本当に悪いパスワードを見つけたいだけであれば、ブルートフォーシングは確かに実行可能です。
しかし、これはユーザーからの信頼に対するかなり大きな違反だと思うので、このアプローチはお勧めしません。
ログイン時にパスワードを分析する
WordPressログインスクリプトへのすべてのリクエストをインターセプトするスクリプトを追加し、その時点ではプレーンテキストであるため、パスワードを記録または分析できます。
もちろん、これはユーザーが実際にログインした後にのみ弱いパスワードをキャッチします。ユーザーがサイトを放棄したか、かなりアクティブでない場合、弱いパスワードを使用していることを発見するまでに時間がかかる場合があります。
これは、ハッシュを総当たりするよりもはるかに大きな違反であり、セキュリティ上の懸念も伴います(パスワードをプレーンテキストで保存する場合、これは明らかに懸念事項になりますが、そうでない場合でも、誤って攻撃者を助けるかもしれない分析)。
パスワードポリシーの実装(およびユーザーにパスワードの変更を強制する)
パスワードポリシーを実装できます。ユーザーが新しいパスワードを送信すると、ポリシーに準拠しているかどうかを確認します(理想的には、JavaScriptを介してクライアント側ではなくサーバー側で発生します)。
適切なパスワードポリシーを作成するのは難しいため、ここで役立つ既存のポリシーをご覧ください。
もちろん、古いパスワードはポリシーの影響を受けないため、ポリシーに準拠するためにユーザーに古いパスワードの変更を強制する必要があります
制限ダメージ
強力なパスワードを強制することは確かに良い考えですが、理想的には、ハッキングされたWordPressインスタンスがWebマスターとしてのあなたに実際に影響を与えるべきではありません。
攻撃者がWordPressインストールへのアクセスを取得したら、損害を制限する必要があります。理想的には、サーバー全体ではなく、1つのインスタンスのみが影響を受けるようにする必要があります(したがって、攻撃者がWebサイトに下品なコンテンツを置くことを心配するかもしれません-有効なユーザーが行うのと同じように)が、コード実行やその他の悪意はありませんアクティビティ)。
これはかなり広範なトピックですが、いくつかのポイントが含まれます:DISALLOW_FILE_EDIT
、プラグインの使用を制限します(WordPress自体よりも安全性がはるかに低いため)、JavaScriptを許可しません(マルチサイトのみ、スーパー管理者には、管理者ではなくJavaScriptを投稿する権利があります)など。
これが可能かどうかはわかりません。パスワードを選択すると、データベースにハッシュされて保存されます。ハッシュアルゴリズムに関しては、リバースエンジニアリングはありません。
私の経験では、パスワード強度のスクリプトはwww.example.com/wp-admin/js/password-strength-meter.js
にあり、 this はそれへのリンクです。
ここでパスワードのレベルと割合を変更できるため、必須のパスワード強度を100/100に設定できます。
また、クライアントにパスワードの強度を確認させたい場合は、ここにパスワードの強度を与えることができるかわいいapplicationがあります。
ここでリバースエンジニアリングを行うことは不可能であり、さらに、ユーザーに強力なパスワードの取得を強制するプラグインはほとんどありません。
良いニュースは、ユーザーのパスワードを変更できることです。悪いニュースは、ユーザーがパスワードを表示できないことです。
Wordpressは非常に強力であるため、パスワードを一方向暗号化で保存しているので、変換できるmd5ハッシュではなく、シリアル化されたデータでもありません。パスワードtest123
には何かがあります$P$BjW8o9Dm1vC5bwAcP1iAdNVm0lbvn
のように、暗号化を使用せずにデータベースのパスワードフィールドを変更しても、機能しません。
あなたはこれを知っていると思いますが、ここに残しておきます。 wordpressダッシュボードに管理者権限を入力し、ユーザーにアクセスしてユーザーを検索できます。この部分は、新しいパスワードの生成をクリックする必要があるため、目的に合わない場合があります。文字や記号を使用して自分で編集することはできますが、それでもパスワードは表示されません。
パスワードはハッシュ化されるため、セキュリティをテストする唯一の方法はブルートフォースパスワードです。一般的に使用される脆弱なパスワードのリストを収集し、データベースに保存されているハッシュに対してテストします。
非常に網羅的なパスワードリストを使用しない限り、これはすべての弱いパスワードをキャッチするわけではありませんが、最も弱いパスワードを除外します。
以前の回答が指摘したように、保存されたパスワードを読むことはできません。
代替ソリューションは次のとおりです。
/wp-login.php?action=lostpassword
に誘導してパスワードをリセットします。Phpmyadminに保存されている各wordpressデータベースを管理していない限り、wp adminパスワードを強制的に変更することはできません。
そして、いいえ、500 wordpressサイトで週のパスワードを見つける簡単な方法はありません。 Josipは、パスワード強度をチェックアウトするためのリンクを1つ挙げていますが、そのサイトはパスワード強度をチェックアウトするためにmd5暗号アルゴリズムを使用していません。
これをチェックアウト SOリンク 、( MD5を使用するWordpress )すると、出力がそのアプリと異なることがわかります。 p#aSS*Word14
はDance With Me Tonight
より安全ではないので、Wordpressパスワードをチェックするためにサードパーティのアプリを使用しないでください。パスワードの強度を想定します。
また、すべてのパスワードを取得して、1つずつテストする必要があります。すばやく見つけるための手品はありません。
別のことは、1つのWordPressサイトがハッキングされた場合、同じサーバーの他のwpサイトには影響しなかったことです(DOS攻撃を除く)。多くの人が共有ホスティングでwpを開始し、サイトがハッキングされているのを見てきましたが、各wpにはphpmyadminに独自のデータベースがあるため、近隣サイトは正常に動作していました。
WordPressのパスワードは、ユーザーが使用する他のサービスと同じパスワードを持っている可能性があるため、クリアテキストパスワードの保存は非常に安全ではないため、賢明なアプリケーションがパスワードを保存する場合と同様にハッシュされます(Gmailを考えてみてください)。
ハッシュをパスワードに戻すことはできません。そうでない場合は、クリアテキストで保存することもできます。以前はMD5
でハッシュ化されていましたが、セキュリティチームによって安全でないことが証明されたため、ハッシュアルゴリズムはphpass
に更新されました。
ヒント:WordPressは、MD5(%password%)をsql列に更新しても、ハッシュを正しく管理できます。
単一のサイトに対して何をしようとしているのかを実際に確認する実際的な方法は、列を別のものに変更し、パスワードを更新するページでパスワード強度の要件を強制することで、実際にパスワードの変更を強制することです。しかし、ユースケースでは非常に多くのWPインストールでこれを行う必要があり、それらのサイト所有者は同意なしにこれを行うことに感謝しないかもしれません。したがって、アクションの影響範囲を制限する必要があります。
1)管理者、編集者のみのパスワードを更新しますが、それらのユーザーが誰であるかを見つける必要があります。それらを電子メールで送信し、パスワードのリセットページや登録ページなどでパスワード制限を実施します。サイトの他の場所にこれらのフォームがあることを覚えておいてください(AJAXフォームも考えてください)。 WP環境をロードしてスクリプトを実行するのではなく、この計画の実行を支援するWP-CLIコマンドを作成します。
2)既知の文字列(パスワード)のハッシュされたパスワードで構成されるレインボーテーブルを生成します。そして、基本的にハッシュを特定のユーザーのパスワードと一致させ、そのパスワードの強度を評価する必要があります。ここで、テーブルの生成は最も可能性のある各パスワードをハッシュし、ディスクに保存し(アカウントの長さとパスワードの組み合わせに応じて数GB)、結果に基づいて行動する必要があるため、最も遅いステップです。 99%があなたのニーズに対する過剰なソリューションであることを確信しています。
ヒント:wp-config.php
ファイルにあるこれらの塩と秘密を知っています。それらを変更すると、必要な場合に備えて、ログイン中のセッションが無効になります。
辞書攻撃を使用して総当たり攻撃を試みる
パスワードの強度を評価するためのより良い方法は何ですか? :-)はい、わかっています。少し時間がかかります...
それ以外の場合は、すべてのパスワードが弱いと仮定し(これは非常に正確な仮定になると思います)、パスワードを作成し、ハッシュをデータベースに保存し、プレーンテキストのパスワードを与えます「安全な」チャネルを使用する管理者
そうでない場合は、すべてのパスワードが脆弱であると再度想定し、管理者にパスワードの変更を強制し、Webサイト自体で非常に厳選されたパスワード強度検証ツールを使用します。