www.morihi-soc.net

セキュリティの話題を中心に取扱中

ハニーポット観察記録(16)

DionaeaWordPress のプラグインの timthumb の脆弱性を狙った攻撃を検知しました.

検知ログ

※一部の情報を意図的に伏せています.

timthumb とは画像加工に使われるプラグインの1つで,特に WordPress で使用されることが多いです.

脆弱なバージョンの timthumb ではファイルの不正なアップロードができてしまいます.上記の検知ログでは timthumb.php に src というパラメータでアップロードするファイル(bad.php)の URL を指定していますね.

ここで注目したい点がアップロードするファイルのドメイン名です.今回は「flickr.com.example.com」となっていますね.(実際に検知したドメインの一部を example に置き換えています)

なぜか flickr.com から始まるドメイン名ですね.怪しいです.

これは「特定の文字列から始まるドメインのファイルであればアップロード可能」という今回狙われた timthumb の脆弱性を突くためです.特定のドメインのファイルのみ読み込むはずが,特定の文字列から始まるドメインであれば読み込めるというように実装されていました.対象のドメインは次の通りです.

  • flickr.com
  • picasa.com
  • blogger.com
  • wordpress.com
  • img.youtube.com
  • upload.wikimedia.org
  • photobucket.com

影響を受ける timthumb のバージョンは1.32以前です.WordPress であれば timthumb のバージョンチェックをするプラグインがあります(Timthumb Vulnerability Scanner).とっととバージョンアップするか,使用していないのであれば削除しておきましょう.

なお timthumb プラグインはテーマやその他のプラグインにくっついてインストールされる場合があるので要注意です.

 

不正にアップロードされるファイルって何?

不正にアップロードされる bad.php はいったいなんでしょうか?

ちなみに VirusTotal での検出率は 23 / 48 でした.

 

bad.php の中身を見てみます.

GIF89a【非 ASCII 文字のため省略】<?php
$language = ‘eng’;
$auth     = 0;
$name     = ”; // md5 Login
$pass     = ”; // md5 Password
/*****【中略】*****/
error_reporting(0);
$rhs = ‘7b17expWrjj89【中略】qK9dTa/w8=’;
eval(gzinflate(str_rot13(base64_decode($rhs))));
?>

 

先頭の文字列は画像ファイルと誤認識させるために GIF89a が入っていますが,その後の <?php は完全に PHP のプログラムですね.

rhs という変数に本体が格納されているようで,割りと大きいデータです.なんと 46KB もありました.

base64 でエンコードし,str_rot13 で暗号化し,gzdeflate の圧縮形式のようです.ハニーポット観察記録(15)で使用した解読 PHP コードが流用できますね.

※ もしご自身で試すときは,eval でそのまま実行しないようにしましょう.

 

結果は PHP の Web shell でしたが,ソースコードは長いので省略します.検証環境に設置して,実際にアクセスしてみます.解読結果から,BASIC 認証の機能があるようですが,ユーザ名・パスワードは指定されておらず認証無しでアクセスできました.

timthumb-web-shell

はい.コマンド実行からファイルアップロード機能はもちろん,サーバ上の設定ファイルや機密ファイルの検索・表示など機能豊富な Web shell です.

こわいですねぇ:;(∩´﹏`∩);:

(詳しい人であれば,コレは r57 の改変だと気づくと思います)

 

さて,実は上記の bad.php のアップロード以外に次のような攻撃も検知していました.

検知ログ2

※一部の情報を意図的に伏せています.

今度は shellx.php というファイルのアップロードを試みているようです.中身は1行でした.

GIF89a【非 ASCII 文字のため省略】<?php eval(gzinflate(str_rot13(base64_decode(‘rUl6QuN【中略】nR6iu7/AQ==’)))); ?>

コレも PHP の解読コードで中身を読みだして,検証環境からアクセスしてみます.

timthumb-web-shell2

アレ・・・どこかで見たような・・・,という方がいるかもしれません.そうです.ハニーポット観察記録(15)の Joomla! JCE の脆弱性を狙った攻撃で紹介したときの Web shell と似ていますね.

ファイルの内容はサーバ情報を不正に送付するメールアドレスが変わっていましたが,その他の機能は同一です.

 

こういう不正なファイルの流用事例はたくさんあって,timthumb だけでなく,Joomla! JCE や Apache Magica など様々な攻撃で見かけます.


まとめ

timthumb プラグインの脆弱性を狙って,不正にファイルをアップロードする攻撃について紹介しました.2011年8月に公開された脆弱性なので少々古いですが,数年間ずっと WordPress を使用している人は影響を受けないか確認しておくことを推奨します.

またテーマやプラグインをインストールするときは,脆弱なバージョンの timthumb が一緒にインストールされないか確認するクセをつけましょう.テーマやプラグインの提供者が,必ずしも安全なバージョンの timthumb を同梱していると断言することはできません.自分の身は自分で守る.

 

もし影響を受けるバージョンの timthumb が存在していたときは,不審なファイルが存在しないか確認しましょう.

timthumb のキャッシュディレクトリ(/tmp)にアップロードされるはずですが,アップローダが設置されてしまっていた場合はどこにファイルが作成されているか探すことが困難です.クリーンインストールすることを推奨します.

 

参考情報

Zero Day Vulnerability in many WordPress Themes(mm)

Timthumb Vulnerability Scanner

 

Written by morihisa

1月 4th, 2014 at 8:22 pm