?ネット通販を運営する企業に対し集客効率化支援致します。

カテゴリー「wordpressセキュリティ」の記事

WORDPRESS nav-menu.phpが書き換えられるケース

 / Wordpress, wordpressセキュリティ, トピックス

このnav-menu.phpを書き換える攻撃は国内では昨年くらいから多く報告されIPAにも多数報告があるものです。私自身も幾つかのお客様で確認したことがある攻撃です。

この攻撃コードは幾つものパターンがあり、例えばフォーム処理の内容を攻撃者へ転送したり、直接サイトをブックマークでアクセスする分には、正常に思った通りのサイトへアクセスできるのですがグーグルやヤフーの検索エンジンからクリックして飛ぶと全く他のサイトへ転送されるというものです。

index.phpの内部で呼び出されている間接ファイル(wp-aload.php,wp-blog-header.phpのあたり)が改ざんされているケースが多いです。また合わせて.htaccessファイルも書き換えられているケースが有りました。



この攻撃への対策は基本は管理画面を固定IPで縛ると殆どは安全です。でもスパイウェアを仕掛けられたら絶対とは言えません。一番良いのはある程度重要なWORDPRESSファイルをroot権限でreadonlyにしておくことをお勧めします。WORDPRESSのアップデート時には自動アップデートの障害になりますが安全を考えるなら良いと思います。

もしやり方がわからない場合は、別途弊社までご相談ください。

下記はアクセス権限をreadonlyにしたほうが良いファイル

  • .htaccess
  • index.php
  • wp-config.php
  • wp-aload.php
  • wp-blog-header.php
  • /wp-includes/nav-menu.php
  • /wp-admin/includes/nav-menu.php

WORDPRESSのプラグインで予防を常に行って起きましょう。 「iThemes Security」がお薦めです。管理画面のプラグイン新規追加で導入しましょう。

WORDPRESS ブルートフォースアタックから守る

 / Wordpress, wordpressセキュリティ

ブルートフォースアタックって何!?と思う方もいるかと思いますがこの攻撃が一番緩くて多い攻撃なのです。おそらくこの攻撃を受けていないサイトは無いのではないでしょうか?
ログインの機能を持ったサイトなら必ず受けているはずです。WORDPRESSの場合もちろんこの攻撃は受けています。それは当然のことで世界で最も使われているCMSだから、攻撃する方も事前に調査しています。

ログインページはURIパスがどうなっているか?あるいはソースコードを呼んで弱点は無いのか。など当然考えていると思います。

この攻撃をあまり軽んじていると痛い目に会います。その理由はDoS攻撃に使われていることもあるからです。つまりこのようになるからです。

WORDPRESSの場合はこのようにログインやxmlrpc.phpに対しDoS攻撃を相乗りして相乗的に仕掛けてくるものもあり対策をしたのに、いまいち効果が出ていないケースが有ったりします。その場合はDoS攻撃を相乗りで仕掛けているケースを疑って見ましょう。 中にはパスワードを複雑にするとかadminユーザをなくすという方法を目にしますが、DoS攻撃には効果はありません。

この場合の対策はどうしたら良いのでしょうか?

  • wp-login.phpのURLパスファイル名を変更する。
  • /wp-admin/で直接ログインへ飛ばさないようにする
  • 管理画面に入れるユーザのIPを制限する
  • xmlrpc.phpを実行できるユーザのIPを制限する

サーバの知識を持っている方なら上記の方法を処置するのは簡単だと思います。この処理をすることで意外にも多くのサイトのレスポンス反応が良くなるケースが多いです。遅いのがまさか緩いDoS攻撃を受けているなんて気づかないものです。


もしやり方がわからない場合は、別途弊社までご相談ください。

PHPでセキュリティ上非推奨の関数

 / Wordpress, wordpressセキュリティ

PHPでセキュリティ上非推奨の関数配下のものですが、できるだけ使わないほうが安全です。使ったから直ちにまずいというものではありませんが、仕組みを理解して使うなら問題ないものもあります。ある一定のセキュリティ保護をかけた上で使う、もしくは限定用途の範囲で使うのであれば全く駄目というわけではありませんが注意することに越したことはありません。

call_user_method() かわりに call_user_func() を使用します
call_user_method_array() かわりに call_user_func_array() を使用します
define_syslog_variables()
dl()
ereg() かわりに preg_match() を使用します
ereg_replace() かわりに preg_replace() を使用します
eregi() かわりに preg_match() で ‘i’ 修正子を使用します
eregi_replace() かわりに preg_replace() で ‘i’ 修正子を使用します
set_magic_quotes_runtime() およびそのエイリアスである magic_quotes_runtime()
session_register() かわりにスーパーグローバル $_SESSION を使用します
session_unregister() かわりにスーパーグローバル $_SESSION を使用します
session_is_registered() かわりにスーパーグローバル $_SESSION を使用します
set_socket_blocking() かわりに stream_set_blocking() を使用します
split() かわりに preg_split() を使用します
spliti() かわりに preg_split() で ‘i’ 修正子を使用します
sql_regcase()
mysql_db_query() かわりに mysql_select_db() および mysql_query() を使用します
mysql_escape_string() かわりに mysql_real_escape_string() を使用します
ロケールカテゴリ名を文字列で渡すこと。 かわりに LC_* 系の定数を使用します
is_dst を mktime() に渡すこと。 かわりにタイムゾーン処理用の新しい関数を使用します

タグ: ,

TOPへ戻る