おちこんだりもしたけど、 
私は元気です。 
I was kind of blue for a while, but I'm fine.
自己紹介 
Twitter:abend@number3to4 
セキュリティエンジニア。アルコールが好きな元ダメ人間(時間さえあれ 
ばどこでも飲んでしまうスタイルは、今は個性だととらえるようになった 
ので卒ダメ人間)
概要 
脆弱性を探すとあるバウンティハントに参加した時の感想をまとめてみました。 
<概要> 
2日間にわたり、主催が用意したテスト用サイトにみんなでいろいろやってみて 
脆弱性を報告する。順位は、検出されたCVSS値で評価される。また、その数値 
に応じて、賞金がでちゃうというもの。 
夕飯・風 
ハント呂ハント 
1日目 
2日目飲酒 
ハントハント 
飲酒飲酒 
朝 
食 
昼 
食
ギャップ 
セキュアなサイトだったので、幾度となく心が折れました。 
理想と現実のギャップをまた知る。
ソーシャルエンジニアリング 
validationがしっかりしてそうだったので、XSSやSQLインジェクションなど 
のパラメータまわりの脆弱性(ツールなどで診断可能な項目)はやめて、 
ツールでは診断が困難な項目に特化して診断を実施しました。 
理由として、ツールで検出可能な脆弱性はすでに検出されている可能性が 
高いため、ツールで検出困難な項目であれば、見つかりやすいと思ったから 
です。 
また、いろいろな方から昼食時に状況をヒアリングし、自分の方向性を確認。 
「社会人」なので、そういったソーシャルエンジニアリングも活用します。
ツールで診断が困難な項目って 
ツールの種類によっても、検出可能な脆弱性は変わってくると思いますが 
アクセス制御不備については、どのツールも検出は困難な脆弱性の一つです。 
では、アクセス制御不備って?
アクセス制御不備1 
リクエスト操作により、権限のない情報へのアクセスや操作ができてしまう脆弱性 
Application 
Server 
利用者IDを改変して 
アクセス 
他ユーザでログイン 
被害 
攻撃者 
・なりすましによるサービスの不正利用や情報漏えい 
※一般的な脆弱性の説明です。
アクセス制御不備2 
攻撃手法① 
利用者メニュー 
個人設定確認 
https://example.com/profile.cgi?userid=345 
Aさんの個人設定 
アドレス:○○ 
氏名:×××× 
https://example.com/profile.cgi?userid=346 
アドレス:△△ 
氏名:□□□□ 
id=345 
id=346 
※識別子の値を変更すると 
他人の情報が見えてしまう。 
攻撃手法② 
利用者メニュー 
管理者用 
https://example.com/admin 
システム変更 
※管理者用URLが表示されていなくても、URLさえわかればアクセスできてしまう。 
原因: 処理や表示時に、権限の確認がされていない。 
Bさんの個人設定 
管理者機能 
対策: 権限情報をセッション変数に保持し、処理や表示前に権限を確認。 
※一般的な脆弱性の説明です。
どうする? 
アクセス制御不備の項目を診断するには、アプリケーションの仕様を理解 
しないと、なにがダメか指摘できないので、仕様理解を実施。 
① ユーザAでしかアクセスできない状態を作り出す。 
② ユーザBでアクセスしてみる。 
<観点> 
・複数権限(ゲスト、一般利用者、管理者など)が定義されているか。 
・不特定多数のユーザが利用できるのか。 
・グループ内で利用できるのか。 
・特定のユーザしか利用できないのか。 
ワークフローシステムの場合、だれがどの情報を見れていいの? 
掲示板の場合は?この掲示板は公開されているものなの? 
業務アプリの場合、仕様理解することが非常に難しいケースもあり 
社会人力が問われる。
幻覚 
仕様理解ができていないと、「おっ!!これ行ったんじゃね!!」って 
調子のっていると 
そんな、つらいことも
とある細胞より早く発見!! 
そんなこんなで、いろいろと試行錯誤し、何らかの脆弱性発見。幻覚では 
ないことを何度も確認した。 
実験ノートはつけていないし、200回以上確認はしていないが、HTTPログを 
複数回確認し、「脆弱性はあります」。
成果発表 
2日間にわたる激闘の結果、自分がどんなことをやったのかを一人4分程度で 
発表。自分の前に7人くらい発表していたが、みんなテクニカルなことを 
発表していたので、自分もと意気込み・・・ 
<発表した概要> 
・脆弱性が全然見つからないから、スタイルシート変えて遊んでました。 
オレ、技術者じゃないかもしれないと気づく。 
ただ、ツラい。
結果発表 
一応、何件か報告したが、脆弱性として認定されたかは分からないまま 
結果発表へ 
なぜか、2位になり 
2位になれた理由は、発見した脆弱性を横展開し、他の箇所でも同様の脆弱性 
を発見し、件数を稼いだ結果だと思う。 
これを「社会人力」というらしい。
さいごに 
昨年の賞金は、すべて飲み代に消えた。 
今年もその予定。 
No Drink No Hack!!

おちこんだりもしたけど、私は元気です。