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
Amazon CloudWatch Network Monitor のススメ
yuki_ink
1
210
Taming you application's environments
salaboy
0
190
TypeScript、上達の瞬間
sadnessojisan
46
13k
[CV勉強会@関東 ECCV2024 読み会] オンラインマッピング x トラッキング MapTracker: Tracking with Strided Memory Fusion for Consistent Vector HD Mapping (Chen+, ECCV24)
abemii
0
230
Shopifyアプリ開発における Shopifyの機能活用
sonatard
4
250
アジャイルでの品質の進化 Agile in Motion vol.1/20241118 Hiroyuki Sato
shift_evolve
0
170
アジャイルチームがらしさを発揮するための目標づくり / Making the goal and enabling the team
kakehashi
3
140
The Rise of LLMOps
asei
7
1.7k
誰も全体を知らない ~ ロールの垣根を超えて引き上げる開発生産性 / Boosting Development Productivity Across Roles
kakehashi
1
230
第1回 国土交通省 データコンペ参加者向け勉強会③- Snowflake x estie編 -
estie
0
130
オープンソースAIとは何か? --「オープンソースAIの定義 v1.0」詳細解説
shujisado
9
1.1k
SREが投資するAIOps ~ペアーズにおけるLLM for Developerへの取り組み~
takumiogawa
1
430
Featured
See All Featured
The Language of Interfaces
destraynor
154
24k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.3k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
Producing Creativity
orderedlist
PRO
341
39k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.2k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
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