Monthly Research WordPress の 脆 弱 性 を 狙 った Web 改 ざん 攻 撃 株 式 会 社 FFRI http://www.ffri.jp Ver 1.00.02 1
はじめに 近 年 の Web 改 ざんは マルウェア 感 染 を 目 的 としたものが 主 流 であったが ここ 数 年 では 主 義 主 張 の 顕 示 を 目 的 とする 改 ざんも 再 び 目 立 つようになってい る その 中 でも 明 確 なターゲットを 定 めず 多 く 普 及 している CMS やそのプラグインの 脆 弱 性 を 突 いて 無 差 別 に 大 量 のサイトを 改 ざんする 攻 撃 が 増 加 している 2014 年 7 月 には WordPress から 簡 単 にメールマガジンを 配 信 できる 人 気 プ ラグイン MailPoet Newsletters の 脆 弱 性 を 利 用 して 50,000 件 もの Web サイトが 改 ざんされた 今 回 の Monthly Research では 特 に WordPress を 標 的 とした 攻 撃 の 内 2015 年 に 入 って 急 増 した 攻 撃 手 法 とその 対 策 について 解 説 を 行 う 2
3 被 害 状 況 全 体 での 被 害 統 計 は 測 定 が 不 可 能 であるため この 攻 撃 手 法 による 改 ざん 報 告 が 特 に 多 かった Index Php と 名 乗 る 人 物 が www.zone-h.org に 投 稿 した 情 報 の 統 計 を 以 下 に 示 す 2015 年 4 月 6 日 から 7 日 の24 時 間 で 日 本 のドメインを 含 む 少 なくとも 1,200 件 以 上 の WordPress を 利 用 するサイトが 改 ざん 被 害 を 受 けた この 攻 撃 は 2015 年 3 月 末 頃 から 発 生 しており これまでで 少 なくとも 18,000 件 以 上 のサイトが 被 害 にあっている この 内 の 125 件 は 日 本 のドメインである この 攻 撃 では 直 接 ファイルを 改 ざんするのではなく 特 定 の URI にアクセスし た 際 に 攻 撃 者 が 注 入 した 内 容 のページが 表 示 されるタイプであった
攻 撃 分 析 攻 撃 成 功 を 示 す URL は 共 通 して 以 下 の 様 なものであった http://target.com/wp-admin/adminajax.php?action=revslider_ajax_action&client_action=get_captio ns_css wp-admin が 含 まれていることから WordPressを 標 的 とした 攻 撃 だとい うことが 推 測 される WordPress 上 での Ajax 通 信 をサポートする admin-ajax.php に 対 して action=revslider_ajax_action という 内 容 の 引 数 が 渡 されている 事 か ら 国 内 でも 多 く 利 用 されているプラグイン Slider Revolution へのリクエス トであることが 推 測 される 更 に client_action=get_captions_css が 引 数 として 指 定 されているこ とが 分 かる 4
5 攻 撃 分 析 前 スライドの 分 析 結 果 と 攻 撃 の 発 生 時 期 (2015 年 3 月 末 ) 早 い 時 期 からこの 攻 撃 手 法 を 使 用 している 人 物 チームなどを 調 査 した 結 果 実 際 に 使 用 されて いると 思 われる 大 量 改 ざん 用 に 作 成 されたスクリプトの 存 在 を 把 握 した 他 にも 多 数 の PoC が Pastebin などで 公 開 されている
6 攻 撃 分 析 公 開 された PoC を 見 ると 以 下 の 様 な POST データを admin-ajax.php に 対 して 送 信 していることが 分 かる $post = array?> ( "action" => "revslider_ajax_action", "client_action" => "update_captions_css", "data" => "<marquee>malicious Code Here</marquee>" );
7 攻 撃 分 析 ここで Slider Revolution 側 のソースコードを 見 てみると revslider_admin.php に 以 下 の 様 な 記 述 がある 232. $action = self::getpostgetvar("client_action"); 233. $data = self::getpostgetvar("data");... 301. case "get_captions_css": 302. $contentcss = $operations->getcaptionscontent(); 303. self::ajaxresponsedata($contentcss);... 305. case "update_captions_css": 306. $arrcaptions = $operations->updatecaptionscontentdata($data); 307. self::ajaxresponsesuccess("css file saved succesfully!",array("arrcaptions"=>$arrcaptions));
攻 撃 分 析 前 スライドの 記 述 から 次 のようなことが 分 かる POST されてきた client_action の 値 から get_captions_css もしく は update_captions_css を 呼 び 出 す get_captions_css を 指 定 した 場 合 は 予 め 用 意 された CSS ファイ ルを 取 得 して Ajax 通 信 のレスポンスとして 返 す update_captions_css を 指 定 した 場 合 は 予 め 用 意 されている CSS ファイルに POST されてきた data の 値 を 上 書 きする これらの 事 から 攻 撃 者 はまず update_captions_css を 不 正 に 呼 び 出 し 指 定 した 任 意 の 文 字 列 もしくはコードを 後 に 呼 び 出 される CSS ファイルに 保 存 し 閲 覧 者 に 対 して get_captions_css のレスポンスを 示 すことで 改 ざん を 行 っていたという 事 が 分 かる 8
9 攻 撃 の 流 れ /wp-admin/admin-ajax.php に 対 して 不 正 な POST リクエストを 送 ることによっ て サーバー 内 の CSS ファイルを 上 書 きする サーバー p#id { color: #ff3300 } p#id { font-size: 24px } CSSファイル http://target.com/wp-admin/admin-ajax.php 攻 撃 者 $post = array?> ( "action" => "revslider_ajax_action", "client_action" => "update_captions_css", "data" => <h1>test</h1>" );
10 攻 撃 の 流 れ get_captions_css を 呼 び 出 すように 細 工 された URL にアクセスすると 攻 撃 者 が 上 書 きした 内 容 の CSS がレスポンスとして 返 ってくる サーバー <h1>test</h> CSSファイル!? http://target.com/wp-admin/admin-ajax.php?action=revslider_ajax_action &client_action=get_captions_css TEST 利 用 者
脅 威 分 析 我 々が 入 手 したスクリプトでは Google 検 索 における 検 索 構 文 を 悪 用 すること で Google にインデックスされている 脆 弱 な Web サイトやサーバーを 大 量 に 探 しだすことができる Google Dork と 呼 ばれる 手 法 と 組 み 合 わせることで 世 界 中 のサーバーに 対 して 攻 撃 を 行 う 方 法 が 取 られていた Google Hacking Database http://www.exploit-db.com/google-dorks/ 11
脅 威 分 析 以 上 の 攻 撃 分 析 から 次 のような 脅 威 が 考 えられる 不 正 な JavaScript を 注 入 することで Cookie 情 報 などを 窃 取 される DDoS 攻 撃 などを JavaScript ベースで 行 う 攻 撃 の 踏 み 台 にされる 同 一 生 成 元 ポリシーの 影 響 を 回 避 した 攻 撃 に 発 展 される マルウェア 感 染 の 踏 み 台 として 利 用 される これらの 内 DDoS 攻 撃 への 踏 み 台 については 既 にスクリプトが 公 開 されてい る 12
対 策 方 法 有 効 な 対 策 として 以 下 が 挙 げられる Slider Revolution を 脆 弱 性 が 修 正 されたバージョン(4.6.5)にアップデ ートする.htaccess などの 設 定 で /wp-admin/ や /admin/ へのアクセスに 制 限 をかける クライアントアクション update_captions_css を 無 効 にする プラグインやテーマの 自 動 更 新 機 能 を ON に 設 定 し 使 用 していないプラグ イン 等 は 削 除 する プラグイン 側 のアップデートでの 対 策 も もちろん 有 効 ではあるが 別 のプラグイン や WordPress 本 体 にも 多 く 脆 弱 性 が 報 告 されているため 外 部 からの 操 作 を 受 け 付 ける 類 の URI などにはアクセス 制 限 をかけるなどの 根 本 的 な 対 策 が 重 要 になると 考 える また そのような URI を robots.txt に 追 加 することで 前 述 の Google Dork での 検 索 結 果 に 表 示 されなくなる 13
まとめ 様 々な 目 的 から 大 量 の Web サイトを 無 差 別 に 改 ざんする 攻 撃 が 増 加 している その 内 多 く 用 いられる 手 法 が WordPress などの 広 く 普 及 しているプロダク トの 脆 弱 性 もしくはそれらの 外 部 プラグインに 存 在 する 脆 弱 性 を 狙 った 攻 撃 である 今 回 は 今 年 に 入 って 約 18,000 以 上 の Web サイトが 被 害 にあった Slider Revolution に 関 する 脆 弱 性 攻 撃 についての PoC を 素 に 分 析 を 行 った 従 来 の SQL インジェクションなどの 脆 弱 性 と 大 きく 異 なる 点 として 想 定 された 機 能 が 悪 用 されたという 点 が 挙 げられる 本 脆 弱 性 を 利 用 することで 安 全 とされている URL からマルウェアに 感 染 させ られる 可 能 性 も 想 定 できる このような CMS 関 連 のプロダクトに 関 する 攻 撃 の 多 くは 管 理 者 が 利 用 することを 前 提 とされた 領 域 に 多 く 見 られる そのため.htaccess などの 設 定 で /wp-admin/ や /admin/ へのア クセスに 制 限 をかけることが 有 効 な 対 策 だといえる 14
参 考 情 報 50,000 sites hacked through WordPress plug-in vulnerability http://www.pcworld.com/article/2458080/thousands-of-sites-compromisedthrough-wordpress-plugin-vulnerability.html Index Php Zone-H.org http://www.zone-h.org/archive/notifier=index%20php Wordpress Plugin Revolution Slider - Unrestricted File Upload http://www.exploit4arab.net/exploits/1416 15
Contact Information E-Mail : research feedback@ffri.jp Twitter : @FFRI_Research 16