鳳凰問題

鳳凰問題はチラッと覗いただけでは有効な方法を
思い付けませんでした。

以下、考えたこと、試したことを書いて見ます。

最終的な目標としては
EC-CUBEで運用しているショッピングサイトが利用している
データベースにおいてテーブル dtb_customer の ID=3に該当するデータで
note のフィールドの内容を見つけることのようです。

方法としては

  • データベースアクセス用のユーザー/パスワードを入手する
  • ショッピングサイトの管理画面にログインする
  • SQLインジェクションを利用する

などが挙げられると思います。

ただ、今回は問題ページに

ショッピングサイトには、 ある脆弱性が存在

とあるので
データベースに直接アクセスするわけではなさそうです。

実際にページを見てみると
EC-CUBEのデフォルト画面がそのまま表示されています。
使用しているCMSをアピールしているので、このCMSのよくある
設定ミスや、既知の脆弱性を利用する可能性があると考えました。

まず、ここ などを参考にすると
設定用ディレクトリを誤って公開してしまう場合があるようです。
これを試してみると
 data/logs/site.log
今回のデモページでもインストール時のログっぽいものが見ることができました。
ここから分かることは

  • 管理画面ログインに使用するIDは ebabura

くらいだと思います…。(見落としあり?)

次に既知脆弱性のうち攻撃方法が公開されているものを試してみました。

商品検索などいくつかの機能で不正なUTF8コードを送信したときに
SESSIONオブジェクトの先頭数百バイトが吐き出されてしまい、
エラー内にリクエストが含まれるためにXSSなどが可能になるという
(JVNDB-2013-000105)が再現可能でした。

ここから

  • Apache 2.2.22
  • PHP 5.3.3
  • PostgreSQL
  • EC-CUBEのバージョンは 2.11.0 ~ 2.11.5

ということくらいはわかりました。

ちなみに、この脆弱性のようなエラーが発生したら
logに何か書き出されるはずですが、上記の
 data/logs/site.log
は変化がなかったので、
8946の他の問題から考えてもこの site.log は
実際のものではなく、 "site.log が流出した体" のようです。
とすると、もっとヒントが入っているのかもしれませんが…気がつけませんネ。

また、
EC-CUBEのバージョンが本当に 2.11.0 ~ 2.11.5 とすると
ここ にあるとおり

  • 管理画面の認証回避
  • コードインジェクション

の脆弱性が有効ということになります。
この2つの方法は上記記事後編で公開されるということで
楽しみにしていたのですが、EC-CUBEの開発元から公開を控えるように
申し入れがなされたようで公開されていません。残念です。

管理画面が閲覧できればデータベースのダンプ機能が使えますし
コードインジェクションができればもちろん権限内でコマンドが自由に
使えるので当然設定ファイル等をのぞけばデータベースへの
ログインは可能なはずですが…。パッチを見ただけではどうやって
攻撃を再現するのか全然思いつかないのでどうしようもありません。(弱)

ここまで書いておいてなんですが、
8946は他の問題でも脆弱性が実際にあるのではなく
"脆弱性があるという体"で動作するものが多いので
本当に 2.11.X の脆弱性が有効なのかも微妙なところです。
過去の公式ブログやTwitterなどを覗くと、ちょっと
信頼しにくいような言動も見受けられるので…

昔は
8946本体とデモページのデータベースが共用だった次期もあったようで、
8946用のアカウントや平文パスワードが見えてしまっていたという話も
あります。
そのような状態で コードインジェクションなどが行われた場合
致命傷になりかねません。
そんな状態で古いCMSのページを放置していたらまずいのではないか
などと疑心暗鬼にかられてしまいます。

SQLインジェクションに関しては
あまり調査が進んでいません。
SQLインジェクションの対象になりそうなのは

  • 商品検索
  • 商品レビュー機能
  • 商品購入時のお客様情報やコメント

などだと思いますが、これらはEC-CUBE CMS由来の機能で
基本的にはこういった部分へのSQLインジェクションなどは対策済み
なのでよほど条件が揃わないとズバリデータベースが覗けるような
攻撃になりえないと思ってしまって敬遠したままです。

Todo的メモ

流出風logでは
 ebabura と sid が記載されていて
 2012/07/04 15:18:15 のログインに対して
 ログアウトの処理が書かれていない
 ↓
 セッションハイジャックで管理画面に入れる?

 EC-CUBEのsession id transaction id はどうなってるか調べる

気づいた点や参考になりそうな情報などあれば
是非コメントしてください。
コメントで公開するのが不味そうな場合はメール等 でも
お待ちしております。

コメントを追加する