『ハッキングAPI』
https://gyazo.com/22227eb19eb6f8f9795c0bb2bbe3fdc9
2023/3/27
物理本で書店で買ったがいったん保留mrsekut.icon
めちゃくちゃ面白そうだmrsekut.icon*4
GraphQLなども扱っていてモダン
本書への推薦の言葉
序文
はじめに
第1部 APIセキュリティの原理
0章 セキュリティテストへの準備
0.1 テスト許可の取得
0.2 APIテストへの脅威モデリング
0.3 テストすべきAPIの機能
0.3.1 API認証テスト
0.3.2 WAF(Web Application Firewalls) 0.3.3 モバイルアプリケーションテスト
0.3.4 APIドキュメントの監査
0.3.5 レート制限テスト
0.4 制限事項および例外事項
0.4.1 クラウドAPIへのセキュリティテスト
0.5 報告書と再テスト
0.6 バグバウンティプログラムのスコープに関する注意点
0.7 まとめ
1章 Webアプリケーションの仕組み
1.1 Webアプリケーションの基本
1.1.1 URL
1.1.2 HTTPリクエスト
1.1.3 HTTPレスポンス
1.1.4 HTTPステータスコード
1.1.5 HTTPリクエストメソッド
1.1.6 ステートフルとステートレス
1.2 データベース
1.2 SQL
1.2 NoSQL
1.3 APIの位置づけ
1.4 まとめ
2章 Web APIの解剖学
2.1 Web APIの挙動
2.2 Web APIの標準形式
2.2.1 RESTful API
2.2.2 GraphQL
2.3 APIの仕様
2.4 APIデータ交換フォーマット
2.4.1 JSON
2.4.2 XML
2.4.3 YAML
2.5 API認証
2.5.1 BASIC認証
2.5.2 APIキー
2.5.3 JSON Web Tokens
2.5.4 HMAC
2.5.5 OAuth 2.0
2.5.6 認証なし(No Auth)
2.6 APIの活用:Twitter APIの分析
2.7 まとめ
3章 一般的なAPI脆弱性
3.3 ユーザ認証の不備
3.4 過剰なデータ露出
3.5 リソース不足とレート制限
3.7 マスアサインメント
3.8 セキュリティ設定ミス
3.9 インジェクション
3.10 不適切な資産管理
3.11 ビジネスロジックの欠陥
3.12 まとめ
第2部 APIテストラボの構築 79
4章 APIハッキングラボの構築
4.2 DevToolsによるWebアプリ分析
4.3.1 FoxyProxyのセットアップ
4.3.2 Burp Suiteの証明書の追加
4.3.3 Burp Suiteの使い方
4.3.4 トラフィックの取得(Intercepting)
4.3.5 Intruderを使ったリクエスト変更
4.4 APIブラウザPostmanによるAPIリクエストの作成
4.4.1 Request Builder
4.4.2 環境
4.4.3 コレクション
4.4.4 コレクションランナー
4.4.5 コードスニペット
4.4.6 テストパネル
4.6 補助ツール
4.6.6 ArjunによるHTTPパラメータの検出
4.7 まとめ
5章 脆弱なAPIラボ環境の準備
5.1 Linuxホストの作成
5.2 DockerとDocker Composeのインストール
5.3 脆弱性アプリケーションのインストール
5.3.1 crAPI(The completely ridiculous API) 5.3.4 DVGA(Damn Vulnerable GraphQL Application) 5.4 他の脆弱なアプリの追加
5.6 まとめ
第3部 APIへの攻撃 139
6章 APIの検出
6.1 受動的偵察
6.1.1 受動的偵察プロセス
6.1.2 Google Hacking
6.1.5 OWASP Amass
6.1.6 GitHubでの情報漏えい
6.2 能動的偵察
6.2.1 能動的偵察のプロセス
6.2.2 Nmapによる検出スキャン
6.2.3 robots.txtから隠されたパスの検出
6.2.4 Chrome DevToolsで機密情報の検出
6.2.5 Burp SuiteでのAPI検証
6.2.6 OWASP ZAPによるURIクローリング
6.2.7 Gobusterを利用したURIブルートフォースの実施
6.2.8 KiterunnerによるAPIコンテンツの発見
6.3 まとめ
7章 エンドポイント分析
7.1 リクエスト情報の調査
7.1.1 ドキュメントから情報調査
7.1.2 APIの仕様をインポート
7.1.3 APIのリバースエンジニアリング
7.2 APIの認証要件をPostmanに追加
7.3 機能分析
7.3.1 正常リクエストのテスト
7.3.2 管理者用操作の実行
7.3.3 APIレスポンスの分析
7.4 情報漏えいの検出
7.5 セキュリティの設定ミスの検出
7.5.1 詳細なエラー
7.5.2 不十分な通信経路上の暗号化
7.5.3 問題のある設定
7.6 過剰なデータ露出の発見
7.7 ビジネスロジックの欠陥の検出
7.8 まとめ
8章 認証への攻撃
8.1 古典的な認証攻撃
8.1.2 パスワード初期化と多要素認証に対するブルートフォース攻撃
8.1.4 ブルートフォース攻撃におけるbase64認証の取り込み
8.2 トークンの偽造
8.2.1 手動分析
8.2.2 ライブトークンキャプチャ分析
8.2.3 推測可能なトークンへのブルートフォース攻撃
8.3 JWTの悪用
8.3.1 JWTの把握と分析
8.3.4 JWTクラック攻撃
8.4 まとめ
9.1 効果的なファジング
9.1.1 適切なファジングペイロードの選択
9.1.2 異常検知(アノマリー検知)
9.2 ワイドファジングとディープファジング
9.2.1 Postmanによるワイドファジング
9.2.2 Burp Suiteによるディープファジング
9.2.3 Wfuzzによるディープファジング
9.2.4 不適切な資産管理に対するワイドファジング
9.3 Wfuzzによるリクエストメソッドのテスト 9.4 入力値検証を回避するディープファジング
9.6 まとめ
10章 認可への攻撃
10.1 BOLAの検出
10.1.1 リソースIDの特定
10.1.2 BOLAのA-Bテスト
10.1.3 サイドチャネル攻撃を活用したBOLA
10.2 BFLAの検出
10.2.1 BFLAのためのA-B-Aテスト
10.2.2 PostmanによるBFLAのテスト
10.3 認可テストのヒント
10.3.1 Postmanのコレクション変数
10.3.2 Burp SuiteのMatch and Replace
10.4 まとめ
11章 マスアサインメント
11.1 マスアサインメントの対象の発見
11.1.1 アカウント登録
11.1.2 組織への不正アクセス
11.2 マスアサインメント変数の発見
11.2.1 ドキュメントから変数調査
11.2.2 未知の変数に対するファジング
11.2.3 ブラインド・マスアサインメント攻撃
11.3 ArjunとBurp Suite Intruderによるマスアサインメント攻撃の自動化
11.4 BFLAとマスアサインメントの組み合わせ
11.5 まとめ
12章 インジェクション攻撃
12.1 インジェクション脆弱性の検出
12.2 クロスサイトスクリプティング(XSS)
12.3 クロスAPIスクリプティング(XAS)
12.4 SQLインジェクション
12.4.1 メタ文字の手動送信
12.4.2 SQLmap
12.5 NoSQLインジェクション
12.6 OSコマンドインジェクション
12.7 まとめ
第4部 実世界におけるAPI攻撃
13章 バイパス技術の応用とレート制限テスト
13.1 APIセキュリティ制御の回避
13.1.1 セキュリティ制御の仕組み
13.1.2 APIセキュリティ制御の検出
13.1.3 使い捨てアカウントの利用
13.1.4 バイパス技術
13.1.5 Burp Suiteによるバイパスの自動化
13.1.6 Wfuzzによるバイパス自動化
13.2 レート制限のテスト
13.2.1 緩いレート制限に関する注意点
13.2.2 パスの回避
13.2.3 オリジンヘッダの詐称
13.2.4 Burp SuiteにおけるIPアドレスのローテーション
13.3 まとめ
14章 GraphQLへの攻撃
14.1 GraphQLリクエストとIDE
14.2 能動的偵察
14.2.1 スキャン
14.2.2 ブラウザ上でのDVGA の表示
14.2.3 DevToolsの利用
14.3 GraphQL APIのリバースエンジニアリング
14.3.1 GraphQLエンドポイントのディレクトリに対するブルートフォース
14.3.2 GraphiQL IDEを有効にするためのCookieの改ざん
14.3.3 GraphQLリクエストのリバースエンジニアリング
14.3.4 イントロスペクションを用いたGraphQLコレクションのリバースエンジニアリング
14.4 GraphQL APIの解析
14.4.1 GraphiQL Documentation Explorerを使ったリクエスト作成
14.4.2 InQL Burp Extensionの利用
14.5 コマンドインジェクションのファジング
14.6 まとめ
15章 データ侵害とバグバウンティ
15.1 データ侵害
15.1 Peloton
15.1.2 USPS Informed Visibility API
15.1.3 T-MobileのAPI流出
15.2 バグバウンティ
15.2.1 優れたAPIキーの代償
15.2.2 プライベートAPIの認可問題
15.2.3 スターバックス:なかったことにされた情報漏えい
15.2.4 InstagramにおけるGraphQL BOLA
15.3 まとめ
最後に
付録A APIハッキングチェックリスト
付録B 参考文献
訳者あとがき
技術監修者あとがき
索引