Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
何故「思ってたのと違う」⾒積額が提⽰されるのか / 20190725 - Security T...
Search
脆弱性診断研究会
July 25, 2019
Technology
2
1.1k
何故「思ってたのと違う」⾒積額が提⽰されるのか / 20190725 - Security Testing Workshop
第75回ハンズオンセミナー脆弱性診断ええんやで(^^)
脆弱性診断の仕組み
何故「思ってたのと違う」⾒積額が提⽰されるのか
脆弱性診断研究会
July 25, 2019
Tweet
Share
More Decks by 脆弱性診断研究会
See All by 脆弱性診断研究会
20191128 - Security Testing Workshop
security_testing_workshop
3
1k
OWASP ZAPのAPIとCLI / 20190830 - Security Testing Workshop
security_testing_workshop
3
1.6k
OWASP ZAP Maniacs #6
security_testing_workshop
2
1.9k
Other Decks in Technology
See All in Technology
顧客が本当に必要だったもの - パフォーマンス改善編 / Make what is needed
soudai
24
6.8k
来年もre:Invent2024 に行きたいあなたへ - “集中”と“つながり”で楽しむ -
ny7760
0
470
【若手エンジニア応援LT会】AWS Security Hubの活用に苦労した話
kazushi_ohata
0
170
Amazon FSx for NetApp ONTAPを利用するにあたっての要件整理と設計のポイント
non97
1
160
WINTICKETアプリで実現した高可用性と高速リリースを支えるエコシステム / winticket-eco-system
cyberagentdevelopers
PRO
1
190
APIテスト自動化の勘所
yokawasa
7
4.2k
ガバメントクラウド先行事業中間報告を読み解く
sugiim
1
1.3k
Datachain会社紹介資料(2024年11月) / Company Deck
datachain
3
16k
IaC運用を楽にするためにCDK Pipelinesを導入したけど、思い通りにいかなかった話
smt7174
1
110
初心者に Vue.js を 教えるには
tsukuha
5
390
Gradle: The Build System That Loves To Hate You
aurimas
2
150
新卒1年目が挑む!生成AI × マルチエージェントで実現する次世代オンボーディング / operation-ai-onboarding
cyberagentdevelopers
PRO
1
160
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
328
21k
Building an army of robots
kneath
302
42k
Producing Creativity
orderedlist
PRO
341
39k
Making Projects Easy
brettharned
115
5.9k
10 Git Anti Patterns You Should be Aware of
lemiorhan
654
59k
Into the Great Unknown - MozCon
thekraken
31
1.5k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.8k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
167
49k
How to Think Like a Performance Engineer
csswizardry
19
1.1k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
3
370
Product Roadmaps are Hard
iamctodd
PRO
48
10k
Transcript
第75回ハンズオンセミナー 脆弱性診断ええんやで(^^) 脆弱性診断の仕組み 何故「思ってたのと違う」 ⾒積額が提⽰されるのか 2019年7⽉25⽇(⽊) 脆弱性診断研究会 (Security Testing Workshop)
脆弱性診断研究会とは Webアプリケーションの脆弱性を診断す る⼿法や脆弱性診断ツールの使⽤法な どを研究するコミュニティ。コワーキ ングスペース茅場町Co-Edo様にて第1 回セミナーを2014年8⽉に開催して以 来2019年7⽉現在で75回のセミナーを 実施。 © 2019
脆弱性診断研究会 Security Testing Workshop 2
⾃⼰紹介 松本 隆則 • @nilfigo(ニルフィーゴ、ニルフィ) • EGセキュアソリューションズ株式会社 (旧社名:HASHコンサルティング) • OWASP
Japan プロモーションチーム 3 © 2019 脆弱性診断研究会 Security Testing Workshop
アジェンダ 1. OWASPってナニ? 2. OWASP ZAPってナニ? 3. サイト調査とは 4. 診断対象の数え⽅
5. パラメーター送信⽅法 6. まとめ 4 © 2019 脆弱性診断研究会 Security Testing Workshop
OWASP ってナニ? The Open Web Application Security Project 5 ©
2019 脆弱性診断研究会 Security Testing Workshop
OWASP ってナニ? OWASPとは、Webをはじめとするソフトウェア のセキュリティ環境の現状、またセキュアな ソフトウェア開発を促進する技術・プロセス に関する情報共有と普及啓発を⽬的としたプ ロフェッショナルの集まる、オープンソー ス・ソフトウェアコミュニティです。 http://blog.owaspjapan.org/ より引⽤
6 © 2019 脆弱性診断研究会 Security Testing Workshop
OWASP ZAP ってナニ? • https://www.owasp.org/index.php/OWASP_Zed_Attac k_Proxy_Project • 世界中のエンジニアによって開発されている セキュリティ診断⽤プロキシツール •
ZAP = Zed Attack Proxy プロキシとして動作して、ブラウザとWebアプリケーショ ン間の通信の閲覧および改変が可能 • オープンソース(Apache License 2.0) • 商⽤・⾮商⽤問わず無償で利⽤可能 © 2019 脆弱性診断研究会 Security Testing Workshop
OWASP ZAPの基本設定 nモード • セーフモード • プロテクトモード • 標準モード •
攻撃モード © 2019 脆弱性診断研究会 Security Testing Workshop
OWASP ZAPの基本設定 【重要】プロテクトモード以外は使⽤禁⽌!! なぜなら 管理外のサイトへの診断を実⾏する危険性が⾼い © 2019 脆弱性診断研究会 Security Testing
Workshop
OWASP ZAPの基本設定 nオプション • ローカル・プロキシ • Address、ポート • スパイダー •
動的スキャン © 2019 脆弱性診断研究会 Security Testing Workshop
OWASP ZAPの基本設定 nアドオン • インストール • アップデート nポリシー • スキャンポリシー
© 2019 脆弱性診断研究会 Security Testing Workshop
何故「思ってたの と違う」⾒積額が 提⽰されるのか © 2019 脆弱性診断研究会 Security Testing Workshop
⾒積額が想定外になる原因 対象画⾯数を基準に考察してみる © 2019 脆弱性診断研究会 Security Testing Workshop 13
⾒積額が想定外になる原因 © 2019 脆弱性診断研究会 Security Testing Workshop 14 対象画⾯数を基準に考察 発注者
受注者 脆弱性診断業務を依頼 脆弱性診断業務を受託
⾒積額が想定外になる原因 © 2019 脆弱性診断研究会 Security Testing Workshop 15 対象画⾯数を基準に考察 対象画⾯数の数え⽅が異なる
発注者 受注者
2. サイト調査とは • クローリング • ウェブサイトの画⾯を収集 • 診断対象選定 • 診断すべき画⾯を抽出
© 2019 脆弱性診断研究会 Security Testing Workshop 16
2-1. クローリング 診断時は原則として⼿動で実施 ※ クローリングツールを補助的に 使⽤する場合あり © 2019 脆弱性診断研究会 Security
Testing Workshop 17
2-2. 診断対象選定 「診断すべき画⾯」 →パラメーターを伴うリクエスト により動的に⽣成された画⾯ © 2019 脆弱性診断研究会 Security Testing
Workshop 18
3. 診断対象選定の考え⽅ 診断すべき画⾯(機能)の例 • パラメーターを使⽤して動的に⽣成 • 認証/認可⽤パラメーターを送受信 • 特定の権限保有者のみが閲覧可能 ©
2019 脆弱性診断研究会 Security Testing Workshop 19
3-1. パラメーターとは プログラムの動作を決定する数値や⽂字 © 2019 脆弱性診断研究会 Security Testing Workshop 20
3-2. パラメーターの例 • 検索⽂字列 • ログイン時のIDとパスワード • 商品購⼊時の商品ID • セッションID、CSRF対策⽤トークン
© 2019 脆弱性診断研究会 Security Testing Workshop 21
4. パラメーター送信⽅法 1. クエリー⽂字列(Query String) 2. HTTPリクエストヘッダー 3. HTTPリクエストボディ(POST) 4.
URLの⼀部がパラメーター 5. ⾮同期通信 © 2019 脆弱性診断研究会 Security Testing Workshop 22
4. パラメーター送信⽅法 1. クエリー⽂字列(Query String) 2. HTTPリクエストヘッダー 3. HTTPリクエストボディ(POST) 4.
URLの⼀部がパラメーター 5. ⾮同期通信 © 2019 脆弱性診断研究会 Security Testing Workshop 23
4-1. クエリー⽂字列 http://example.com/index.php?user=test&pswd=test 診断対象パラメーター • user • pswd © 2019
脆弱性診断研究会 Security Testing Workshop 24
4-1. クエリー⽂字列 例1 a. http://example.com/index.php? page=info.php&user=test&pswd=test b. http://example.com/index.php? next=info.php&user=test&pswd=test aとbは[page]と[next]が異なるため、⼀般的にはそれぞれ独⽴した診断対
象として数える © 2019 脆弱性診断研究会 Security Testing Workshop 25
4-1. クエリー⽂字列 例2 c. http://example.com/index.php? page=info.php&user=test&pswd=test d. http://example.com/index.php? user=test&pswd=test&page=info.php cとdは⼀⾒異なるパラメーター群に⾒えるが、並び順が異なるだけで含ま
れているパラメーターは同⼀なため、ひとつの診断対象として数える © 2019 脆弱性診断研究会 Security Testing Workshop 26
4. パラメーター送信⽅法 1. クエリー⽂字列(Query String) 2. HTTPリクエストヘッダー 3. HTTPリクエストボディ(POST) 4.
URLの⼀部がパラメーター 5. ⾮同期通信 © 2019 脆弱性診断研究会 Security Testing Workshop 27
4-2. HTTPリクエストヘッダー 例1 Cookieヘッダー • ログイン処理が存在する ⼀般に、Cookieにセッション情報を管理するための⽂字列(セッ ションID)が含まれるため診断対象となる • ログイン処理が存在しない(検索やお問い合わせなど)
Cookieが発⾏されていてもサイト内部で使⽤していない可能性 があるため診断対象としない場合あり © 2019 脆弱性診断研究会 Security Testing Workshop 28
4-2. HTTPリクエストヘッダー 例2 User-Agentヘッダー サイトへアクセスしたブラウザを識別するために当ヘッダーを使⽤した 結果、画⾯のレイアウトやメニュー構成などが変化する場合は診断対象 識別対象の例 • パソコン •
スマートフォン • フィーチャーフォン(ガラケー) © 2019 脆弱性診断研究会 Security Testing Workshop 29
4. パラメーター送信⽅法 1. クエリー⽂字列(Query String) 2. HTTPリクエストヘッダー 3. HTTPリクエストボディ(POST) 4.
URLの⼀部がパラメーター 5. ⾮同期通信 © 2019 脆弱性診断研究会 Security Testing Workshop 30
4-3. HTTPリクエストボディ POST http://example.com/index.php?page=login.php HTTP/1.1 Host: example.com ... username=test&password=test&login-php-submit-button=Login ©
2019 脆弱性診断研究会 Security Testing Workshop 31
4. パラメーター送信⽅法 1. クエリー⽂字列(Query String) 2. HTTPリクエストヘッダー 3. HTTPリクエストボディ(POST) 4.
URLの⼀部がパラメーター 5. ⾮同期通信 © 2019 脆弱性診断研究会 Security Testing Workshop 32
4-4. URLの⼀部がパラメーター http://example.com/user/123456/detail/ URLに含まれている「123456」がユーザーID © 2019 脆弱性診断研究会 Security Testing Workshop
33
4-4. URLの⼀部 例1 a. http://example.com/user/123456/detail/ b. http://example.com/user/987654/detail/ aとbは、URLとしては異なるが、ユーザーIDが異なるだけでサイト 内部では同⼀の処理と推測されるため、ひとつの診断対象と⾒なす ただし、リクエストの結果、⼤幅にメニュー構成やレイアウトなど
が異なる画⾯が表⽰される場合は、別の診断対象とする場合あり © 2019 脆弱性診断研究会 Security Testing Workshop 34
4-4. URLの⼀部 例2 c. http://example.com/user/123456/detail/ d. http://example.com/user/123456/edit/ cとdでは、[〜user/123456/]までは同⼀のURLだが、そ の後に続くURLが異なるため、それぞれ別の診断対象と する
© 2019 脆弱性診断研究会 Security Testing Workshop 35
4. パラメーター送信⽅法 1. クエリー⽂字列(Query String) 2. HTTPリクエストヘッダー 3. HTTPリクエストボディ(POST) 4.
URLの⼀部がパラメーター 5. ⾮同期通信 © 2019 脆弱性診断研究会 Security Testing Workshop 36
4-5. ⾮同期通信 ⾮同期にサーバーに接続してHTMLやJSONなどを取得 • 住所⾃動⼊⼒フォーム(郵便番号で検索) • プルダウンリスト群の項⽬を⾃動変更 © 2019 脆弱性診断研究会
Security Testing Workshop 37
2-2. 診断対象選定(再掲) 「診断すべき画⾯」 →パラメーターを伴うリクエスト により動的に⽣成された画⾯ © 2019 脆弱性診断研究会 Security Testing
Workshop 38
5. まとめ • サイト調査とは、パラメーターを伴うリクエス トにより動的に⽣成された診断対象画⾯を数え 上げる作業 • 診断対象の「数え上げ⽅」を把握していれば、 セキュリティ業者が提⽰したページ単価により、 診断の概算費⽤をあらかじめ想定できる
© 2019 脆弱性診断研究会 Security Testing Workshop 39