WordPressのログイン画面が崩れCSSが読み込まれていないように見える時

とあるサイト構築の際、とあるタイミングからWordpressのログイン画面が崩れ、HTMLのプレーンなテキストだけのページとなってしまったことがありました。

下記のような感じです。

入力フィールド、ログインボタンなどは表示され、IDとパスワードを入力すると通常通り管理画面へログインできます。
しかし、ログイン画面だけが崩れている、という状況です。

どこかで何かが読み込まれていないのは明らかですが、その対処法をこちらに。

SiteGuardプラグインを使っていませんか?

ブラウザのWebインスペクタなどを確認すると、javascriptの「/wp-admin/load-styles.php」が読み込めていない、とのエラーが表示されていました。

このファイルはログイン画面の表示装飾を制御しているもので、必ず読み込まれるものです。

通常であれば問題なく読み込まれるはずですが、このサイトはセキュリティプラグイン「SiteGuard」を使用していたため、通常のログインURLからオリジナルのログインURLへと変更していました。

SiteGuardは優秀なプラグインですが、何かの理由によりこれを読み込むことができなくなっているかと推察できます。

SiteGuardプラグインから除外パスを指定する

解決のために、まずSiteGuardの「管理ページアクセス制限」ページを開きます。
すると、「除外パス」指定テキストエリアが表示され、いくつかの項目が表示されます。

ここには説明文が記載されていますが、SiteGuardは/wp-admin/から始まるパスのファイルへのアクセスを制限しますが、ここに入力してあるファイルについては許可する、というものです。

管理ページ(/wp-admin/以降)に対する攻撃から防御するための機能です。ログインが行われていない接続元IPアドレスに対して、管理ページのアクセスを、404(Not Found)で返します。ログインすると、接続元IPアドレスが記録され、当該ページのアクセスを許可します。24時間以上ログインが行われない接続元IPアドレスは、順次削除されます。この機能を除外するURL(/wp-admin/以降)を指定することができます。

ここに「load-styles.php」を追加します。

すると、カスタムされたURLからアクセスした時でも、ログイン画面が通常通り整えられた状態で表示されます。


多くの場合、この「load-styles.php」が原因となっていると思われますが、プラグインを使用していなくても、

・サーバのWAF(ファイアーウォールではねられている)

・サーバにSiteGuardが設定されている

などといったケースもあるようです。

その場合はサーバコントロールパネルからでも除外パスまたはファイルが指定できるケースがあるようですので、チェックしてみてください。

wordpress利用者要注意。気づきにくい改ざんの実例と対策

このところ、wordpressサイトの改ざん、不正コードの埋め込みの対応に関する依頼をよく受けています。

症状としてはスパムが多くなった、遅く感じる、サーバ会社から報告があったなどがきっかけですが、共通する症状があり、意外と影響は深刻です。

お心当たりある方もない方も、管理されているサイトをチェックしてみていはいかがでしょうか。

症状は?

ご相談のサイトを調べてみると共通する特徴として、

  • アクセスすると表示スピードが異様に遅くなる
  • Chromeでアクセスすると、覚えのないダウンロードリンクが表示される
  • スパム審査サイトなどからでは判明しない
  • テーマなどサイト内のPHPファイルにコードが埋め込まれている
  • サーバはさくらやロリポップなど一般的な共用サーバ
  • 実際に埋め込まれたのは数カ月以上前

と言ったものがあります。サーバ会社から注意を受けると、サーバ内の他のサイトへの影響を考えて閉鎖される恐れもあるため心配ですね。

今回は、サイトにアクセスすると「font hasn’t found(フォントが見つかりません)」のメッセージが表示され、「 Chrome_Font.exe」などの不正ファイルをダウンロードさせるという手口です。

特にChromブラウザからアクセスがあった場合、影響を受けるとのことです。

PCの設定によっては自動的にダウンロードされる場合もあるようです。

Remove the BrowserMe.exe or Chrome_Font.exe Fleercivet Ad Clicker Trojan

EITest Nabbing Chrome Users with a “Chrome Font” Social Engineering Scheme

影響としては、

  • サイトの表示が異様に遅くなる時がある
  • 迷惑広告や不要なポップアップウィンドウが表示される
  • PCの速度が遅くなり、フリーズが発生したりする
  • 他のウィルスからの被害を受けやすくなる
  • IDやパスワードを盗まれる恐れがある

実際、とあるサイトではwordpressのユーザーが新規に作成され、勝手に投稿がされるという影響にまで及んでいました。
時期的に見て関連性があるかと思われます。

原因は?

FTPやwordpressのIDとパスワードがどこかからか漏れたことがまず考えられます。

または、wordpress自体やプラグインのセキュリティホールからの侵入です。メンテやアップデートが遅れがちの場合、気をつけなければいけないですね。

発見方法

WordPressはPHPファイルで構成されていますが、wordpressと関連のあるPHPファイルに下記のような不正なコードが埋め込まれていました。

一見何かの命令文やスクリプトに見えますが、こう言ったものがないかを確認して見てください。

上記のファイルは最上階層にあるwp-config.phpファイルですが、こう言った重要な設定の記載されているファイルにも書き込みがなされていました。

 

今回はPHPへ書き込みをするタイプのようで、データベースへはこのコードは埋め込まれていなかったがmySQLにまで影響を及ぼすタイプのものであれば、別の対応が必要です。

解決方法

  1. まずはサイト全体のダウンロードとバックアップ。
  2. 上記の不正コードを使い全体を検索し、コードの埋め込まれたファイルを検索。
  3. 「置き換え」を使って、不正コードを全て削除。
  4. 修正したファイルのアップロード。

もしバックアップしているデータがあれば、これをサーバにアップし上書きするだけでもいいかもしれません。

またもし確実にしたい場合は、wordpress.comから最新のwordpressファイルをダウンロードし、上書きすることができます。
その際、設定ファイルやプラグイン、テーマファイル、uploadフォルダ内は上書きしないように気をつけてください。

防御方法

#1.まずはPCのセキュリティを強固なものに。

FTP、mySQL、そしてwordpressのIDやパスワードといった設定情報保管方法も見直しましょう。

なんだかんだ言っても、パスワードを定期的に変更するフローを持っておくのはいいのかもしれません。

#2. サーバのセキュリティ設定を見直しましょう。

サーバから可能であれば、WAF(ファイアーウォール)の導入や、IPアドレス、ログインできるPCへの制限を行ないましょう。もちろんこれには運用上のポリシーとも関係するので、クライアントがいる場合は運用方法の見直しも含めることも忘れずに。

#3.FTPディレクトリ内のファイルの権限をしっかりと確認しよう。

設定情報の含まれている.htaccessやwp-config.phpは特に見直しましょう。

ロリポップの対策ページには、下記の情報が乗せられていました:

サイト改善への対策をお願いします

ディレクトリ、ファイルのパーミッションを以下の値での設定を推奨しております。

HTML・画像ファイル 604 rw—-r–
CGIの実行ファイル 700 rwx——
CGIのデータファイル 600 rw——-
.htaccessファイル 604 rw—-r–
ディレクトリ 705 rwx—r-x

パーミッションの設定を「777 (rwxrwxrwx)」や「666 (rw-rw-rw-)」などに設定されている場合は、「誰でも書き込める」設定となっているため、改ざんが行われる可能性がございます。ご確認の上、上記の値に変更してください。

-「.htaccess」ファイルが書き換えられる事例が多発いたしております。パーミッションが「604 (rw—-r–)」であるかご確認ください。
-「wp-config.php」のパーミッションは「400 (r——–)」に変更をお願いいたします。

#4. WordPressのセキュリティプラグインを入れて設定しよう。

主にログイン対策となりますが、セキュリティプラグインの導入も水際で防ぐことになります。

繰り返しとなりますが、これも運用方法とセットで。壁を一つ作ることは、日々の運用の手間などを一つ増やすことなので、実効性や使い方を考えましょう。

可能なクライアントのサイトにて、私は以下のプラグインを使っています:

SiteGuard WP Plugin – 管理画面への不正ログインを防ぐWordPressプラグイン

#5. wordpressのプラグインは、常に見直そう。

「便利そう」ということで使っていても、日々発見される脆弱性や危機に応じて更新や開発を行っていないプラグインも多々あります。

そういったプラグインから侵入されるケースもあるため、開発が1、2年行われていない場合は代替プラグインの導入をしましょう。


wordpressは、というよりウェブサイトもうほぼ保守運営ありきなのは事実です。

放置していて、後々面倒のタネになってしまうことも少なくありません。

保守というとどうしても後手になってしまいがちですが、せっかくなので全体をクリーンにする機会にしてみては。

サポートもしていますのでお気軽にご相談ください。

 

困っていることはないですか?何かできることありますか?

タイトルの問いかけをはじめに使ったのは、いつかディレクションしていたチームのとあるメンバーへだ。

初めてのチームであったこともあるし、ちょっと進行が鈍り始めていた頃だったかもしれない。
しかしそう問いかけると、相手から今まで尋ねてくれなかったようなことが返ってきた。
すると何か、相手との関係が変わったような気がした。
一本、線を越えられたような気がした。

プライドが高い人なら、反応でわかる。
わたしは大丈夫。
しかしそんな人でない場合、そう問いかけると、自分が相手のことを気遣っていて、そしてへりくだる姿勢と伝わるので、応対が柔らかくなる。

願いを返してくれたなら、受け止めてできる限りはやってみよう。
だいたい、そういった返答はこちらが可能な範囲でのものが多い。
もちろん自分でできないことを抱え込んでしまっては良くない。
困っていることを聞いて、うん、やっぱりできないなと思ったら丁寧に断ることができる。
一度聞いときながら断ると気分を害してしまう気がするが、真摯な気持ちで聞いてみたのが前提にあるから、関係がマイナスになることは少ない。

人に頼りにくいもの。
つよがりが身を守っていることもあるし、日本人の場合共存よりも自立が求められる文化でもある。

それでも、「どうしようかな」「聞きたいんだけどな」と感じていることもある(自分がそうだからだ)。
みんな最初の一歩が一番難しい。
その一歩が踏み出しやすいような、そんなワードがまだまだあると思う。

急にサイトの表示トラブルが起きた場合は、使用している外部サービスも見直してみよう【AddClips編】

とあるウェブサイトにて、ページの上部の看板から下のコンテンツが表示されない!という相談がありました。

実際に訪れてみると、確かにヘッダのメニューあたりまでしか表示されていません。

しかし、2分ほど待つとゆっくり残りのコンテンツが表示されてきました。牧歌的なISDNの頃のホームページならわからなくはないですが、今時こんなに重たく感じることはありません。

まずはどこにエラーが起きているか、調べてみよう

ブラウザでHTMLソースを見られる、インスペクタを開きます。
Safariであれば「開発 > Webインスペクタ」、Chromeであれば「開発管理 > ソースを表示」、他のブラウザも実装しているインスペクタを見ると裏側の状況が見えます。

今回はSafariを使いましたが、ここで「リソース」を見ていると、読み込めていないファイルが原因になっていないかわかりますし、「ネットワーク」や「タイムライン」を見ると、どのファイルや機能が遅延を起こしているかが分かったりします。

「デバッガ」のセクションにて「Failed to load resource: データベースの要求が時間切れになりました。」というエラー文が。
そして対象となっているファイルは「AddClip.js」の文字が。

Failed to load resource: データベースの要求が時間切れになりました

ウェブサービス「AddClips」は2016年3月末に終了していた

AddClips、比較的最近の記憶に引っかかったのは、facebookのタイムラインで見かけた、ランサーズ秋好社長が自社サービス「AddClipsを終了する」というメッセージでした。

結構有名なサービスのため一時的にはニュースが駆け巡ったかとは思いますがまだ知らない人も多いかもしれません。
実際にサイトにアクセスすると、2016年3月31日でサービス終了したとの告知が。

そして実際のソースにも、AddClipsのサーバにjavascriptを読みに行っている箇所がありました。

addclips

これがいわゆる、「データベースの要求切れ」、何度もサーバに要求して、その間他のデータを表示させなかった原因であったようです。
この箇所を削除すると、問題なく表示されるようになりました。

3月を過ぎてもしばらくは使えていたので、もしかしたらサーバ内の該当スクリプトはその後もしばらくは置いていたのかもしれません。

表示に問題がある場合、原因の一つとして外部から読み込んでいるスクリプト、ブログパーツ、プラグインなどを疑ってみることも必要ですね。

無料のサービスほど、変化が早いネット業界

AddClipsは2007年のベータ版から公開され使われていたとのことで、およそ10年に渡ってソーシャルメディアの発展に活用されていました。無料、そして貼り付けるだけで使えるという容易さゆえにいろんなサイトで見かけていましたが、この度役目を十分果たして勇退、というところでしょう。

しかし今回のように、同じサーバ内に置いてそこを参照ではなく、外部ファイルを参照する方法が使われている場合、トラブルになるかもしれません。
ネットのサービスには無料で使えるサービスは多いため、今回のようにいきなり使えなくなるゾンビのようなサイトやサービスもどんどん出てくる気がします。
もちろんサーバ環境はWordPressなどのCMSやプラグインなどの仕様、対応状況が原因となることもあるでしょう。

無料サービスほど自己責任なので、ちゃんとしたメンテナンスの大切さを感じるところです。