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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
脆弱性診断研究会
July 25, 2019
Technology
1.2k
2
Share
何故「思ってたのと違う」⾒積額が提⽰されるのか / 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.8k
OWASP ZAP Maniacs #6
security_testing_workshop
2
2.1k
Other Decks in Technology
See All in Technology
Choose your own adventure in agentic design patterns
glaforge
0
140
エージェントスキルを作って自分のインプットに役立てよう
tsubakimoto_s
0
410
基盤を育てる 外部SaaS連携の運用
gamonges_dresscode
1
120
「責任あるAIエージェント」こそ自社で開発しよう!
minorun365
9
2.1k
MLOps導入のための組織作りの第一歩
akasan
0
340
AIを共同作業者にして書籍を執筆する方法 / How to Write a Book with AI as a Co-Creator
ama_ch
2
130
スクラムの中で AI-DLC workflow を 使い始めて3ヶ月の振り返り
kaminashi
0
100
「誰一人取り残されない」 AIエージェント時代のプロダクト設計思想 Product Management Summit 2026
mizushimac
1
610
CloudTrail を見つめ直してみる
kazzpapa3
1
100
Rapid Start: Faster Internet Connections, with Ruby's Help
kazuho
2
710
AIはハッカーを減らすのか、増やすのか?──現役ホワイトハッカーから見るAI時代のリアル【MEGU-Meet】
cscengineer
0
180
Do Vibe Coding ao LLM em Produção para Busca Agêntica - TDC 2026 - Summit IA - São Paulo
jpbonson
3
130
Featured
See All Featured
SEO for Brand Visibility & Recognition
aleyda
0
4.5k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
160
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
170
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.5k
Git: the NoSQL Database
bkeepers
PRO
432
67k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.5k
Discover your Explorer Soul
emna__ayadi
2
1.1k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
99
Become a Pro
speakerdeck
PRO
31
5.9k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
53k
Six Lessons from altMBA
skipperchong
29
4.2k
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