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
1.3k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
何故「思ってたのと違う」⾒積額が提⽰されるのか / 20190725 - Security Testing Workshop
第75回ハンズオンセミナー脆弱性診断ええんやで(^^)
脆弱性診断の仕組み
何故「思ってたのと違う」⾒積額が提⽰されるのか
脆弱性診断研究会
July 25, 2019
More Decks by 脆弱性診断研究会
See All by 脆弱性診断研究会
20191128 - Security Testing Workshop
security_testing_workshop
3
1.2k
OWASP ZAPのAPIとCLI / 20190830 - Security Testing Workshop
security_testing_workshop
3
1.9k
OWASP ZAP Maniacs #6
security_testing_workshop
2
2.2k
Other Decks in Technology
See All in Technology
自律型AIエージェントは何を破壊するのか
kojira
0
130
エンジニアリング戦略の作り方 / Crafting Engineering Strategy
iwashi86
13
4.2k
Dynamic Workersについて
yusukebe
2
630
Building applications in the Gemini API family.
line_developers_tw
PRO
0
2.3k
もりもり新機能を一挙紹介! AgentCoreに入門して、AWS上にAIエージェントを構築しよう
minorun365
PRO
6
860
[モダンアプリ勉強会]今更聞けないGit/GitHub入門
tsukuboshi
0
310
AIソロプレナー時代に2ヶ月で20人増員した事業創造会社の開発組織の話
miyatakoji
0
230
価格.comをAI駆動で全面刷新する ー 30年分の技術的負債を返し、次の30年の土台をつくる ー / AI Engineering Summit Tokyo 2026
tkyowa
51
57k
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.8k
Chart.js が簡単に使えるようになっていたので OGP 画像生成に使った話
kamekyame
0
170
"何を作るか"を任される エンジニアは、どう育つのか
yutaokafuji
1
240
非定型業務をAI slackbotで自動化する ~ 社内要望を自動壁打ちするbotを作った ~/automating-ad-hoc-work-with-ai-slackbot
shibayu36
0
510
Featured
See All Featured
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Rails Girls Zürich Keynote
gr2m
96
14k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
940
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Optimizing for Happiness
mojombo
378
71k
Six Lessons from altMBA
skipperchong
29
4.3k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
140
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
480
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.5k
Statistics for Hackers
jakevdp
799
230k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
160
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