O'Reilly Japan - リアルワールドバグハンティング

リアルワールドバグハンティング

―ハッキング事例から学ぶウェブの脆弱性

[cover photo]
TOPICS
Security
発行年月日
PRINT LENGTH
280
ISBN
978-4-87311-921-2
原書
Real-World Bug Hunting
FORMAT
Print PDF EPUB
Ebook
3,300円
Ebookを購入する
Print
3,300円

セキュリティの脆弱性を発見し、アプリケーションの所有者に報告するエシカルハッキング(倫理的ハッキング)の事例から、ソフトウェアのバグを見つける方法と手順を解説します。 Twitter、Facebook、Google、Uber などのアプリケーションで発生した報奨金がかかった脆弱性の実例を紹介し、攻撃者がどのようにユーザーを騙し機密情報を抜き取るか、レース条件を利用する方法、サイトがユーザーに自らの脆弱性を公開してしまう過程などを解説します。 基本的なウェブハッキングの概要、攻撃者がウェブサイトを侵害する仕組み、脆弱性に共通する要素の見分け方を解説し、さらにクロスサイトスクリプティング、安全でないダイレクトオブジェクト参照、サーバーサイドリクエストフォージェリなど様々なバグについて説明します。
ウェブセキュリティの脆弱性について、報告された実例から学ぶ本書は、バグハンターはもちろん、セキュアなアプリケーションを開発運用したいエンジニア必携の一冊です。

目次

序文
はじめに

1章 バグバウンティの基本
    1.1 脆弱性とバグバウンティ
    1.2 クライアントとサーバー
    1.3 Webサイトにアクセスしたときに起こること
        1.3.1 ステップ1:ドメイン名の展開
        1.3.2 ステップ2:IPアドレスの解決
        1.3.3 ステップ3:TCP接続の確立
        1.3.4 ステップ4:HTTPリクエストの送信
        1.3.5 ステップ5:サーバーのレスポンス
        1.3.6 ステップ6:レスポンスの描画
    1.4 HTTPリクエスト
        1.4.1 リクエストメソッド
        1.4.2 HTTPはステートレスである
    1.5 まとめ

2章 オープンリダイレクト
    2.1 オープリダイレクトの動作
    2.2 Shopifyテーマインストールのオープンリダイレクト
        2.2.1 教訓
    2.3 Shopifyログインオープンリダイレクト
        2.3.1 教訓
    2.4 HackerOneインタースティシャルリダイレクト
        2.4.1 教訓
    2.5 まとめ

3章 HTTPパラメーターの汚染
    3.1 サーバーサイドHPP
    3.2 クライアントサイドHPP
    3.3 HackerOneソーシャル共有ボタン
        3.3.1 教訓
    3.4 Twitterのサブスクライブ解除通知
        3.4.1 教訓
    3.5 TwitterのWebインテント
        3.5.1 教訓
    3.6 まとめ

4章 クロスサイトリクエストフォージェリ
    4.1 認証
    4.2 GETリクエストでのCSRF
    4.3 POSTリクエストでのCSRF
    4.4 CSRF攻撃に対する防御
    4.5 Shopify Twitterの切断
        4.5.1 教訓
    4.6 ユーザーのInstacartゾーンの変更
        4.6.1 教訓
    4.7 Badooの完全なアカウントの乗っ取り
        4.7.1 教訓
    4.8 まとめ

5章 HTMLインジェクションとコンテンツスプーフィング
    5.1 キャラクターエンコーディングを通じたCoinbaseコメントインジェクション
        5.1.1 教訓
    5.2 HackerOneの意図せぬHTML取り込み
        5.2.1 教訓
    5.3 HackerOneの意図せぬHTML取り込みでの修正のバイパス
        5.3.1 教訓
    5.4 Within Securityコンテンツスプーフィング
        5.4.1 教訓
    5.5 まとめ

6章 キャリッジリターンラインフィードインジェクション
    6.1 HTTPリクエストスマグリング
    6.2 v.shopify.comのレスポンス分割
        6.2.1 教訓
    6.3 TwitterのHTTPレスポンス分割
        6.3.1 教訓
    6.4 まとめ

7章 クロスサイトスクリプティング
    7.1 XSSの種類
    7.2 Shopifyの卸売り
        7.2.1 教訓
    7.3 Shopifyの通貨のフォーマッティング
        7.3.1 教訓
    7.4 Yahoo! Mailのstored XSS
        7.4.1 教訓
    7.5 Googleの画像検索
        7.5.1 教訓
    7.6 Google Tag Managerのstored XSS
        7.6.1 教訓
    7.7 United AirlineのXSS
        7.7.1 教訓
    7.8 まとめ

8章 テンプレートインジェクション
    8.1 サーバーサイドテンプレートインジェクション
    8.2 クライアントサイドテンプレートインジェクション
    8.3 UberにおけるAngularJSテンプレートインジェクション
        8.3.1 教訓
    8.4 UberのFlask Jinja2テンプレートインジェクション
        8.4.1 教訓
    8.5 Railsの動的な描画
        8.5.1 教訓
    8.6 UnikrnのSmartyテンプレートインジェクション
        8.6.1 教訓
    8.7 まとめ

9章 SQLインジェクション
    9.1 SQLデータベース
    9.2 SQLiへの対策
    9.3 Yahoo! SportsのブラインドSQLi
        9.3.1 教訓
    9.4 UberのブラインドSQLi
        9.4.1 教訓
    9.5 DrupalのSQLi
        9.5.1 教訓
    9.6 まとめ

10章 サーバーサイドリクエストフォージェリ
    10.1 サーバーサイドリクエストフォージェリのインパクトのデモンストレーション
    10.2 GETリクエストの発行とPOSTリクエストの発行
    10.3 ブラインドSSRFの実行
    10.4 SSRFレスポンスでのユーザーへの攻撃
    10.5 ESEA SSRFとAWSメタデータへのクエリ
        10.5.1 教訓
    10.6 Google内部のDNSのSSRF
        10.6.1 教訓
    10.7 webhooksを使った内部ポートのスキャン
        10.7.1 教訓
    10.8 まとめ

11章 XML外部エンティティ
    11.1 eXtensible Markup Language
        11.1.1 文書型定義
        11.1.2 XMLエンティティ
    11.2 XXE攻撃の動作
    11.3 Googleへの読み取りアクセス
        11.3.1 教訓
    11.4 Microsoft WordでのFacebookのXXE
        11.4.1 教訓
    11.5 WikilocのXXE
        11.5.1 教訓
    11.6 まとめ

12章 リモートコード実行
    12.1 シェルコマンドの実行
    12.2 関数の実行
    12.3 リモートコード実行のエスカレーション戦略
    12.4 PolyvoreのImageMagick
        12.4.1 教訓
    12.5 facebooksearch.algolia.com上のAlgolia RCE
        12.5.1 教訓
    12.6 SSH経由のRCE
        12.6.1 教訓
    12.7 まとめ

13章 メモリの脆弱性
    13.1 バッファオーバーフロー
    13.2 境界外読み取り
    13.3 PHPのftp_genlist()の整数オーバーフロー
        13.3.1 教訓
    13.4 PythonのHotshotモジュール
        13.4.1 教訓
    13.5 libcurlの境界外読み取り
        13.5.1 教訓
    13.6 まとめ

14章 サブドメインの乗っ取り
    14.1 ドメイン名を理解する
    14.2 サブドメインの乗っ取りはどのように行われるか
    14.3 Ubiquitiのサブドメインの乗っ取り
        14.3.1 教訓
    14.4 Zendeskを指しているScan.me
        14.4.1 教訓
    14.5 Shopify Windsorのサブドメイン乗っ取り
        14.5.1 教訓
    14.6 Snapchat Fastlyの乗っ取り
        14.6.1 教訓
    14.7 Legal Robotの乗っ取り
        14.7.1 教訓
    14.8 UberのSendGridメールの乗っ取り
        14.8.1 教訓
    14.9 まとめ

15章 レース条件
    15.1 HackerOneの招待の複数回の受諾
        15.1.1 教訓
    15.2 Keybaseの招待制限の超過
        15.2.1 教訓
    15.3 HackerOneの支払いのレース条件
        15.3.1 教訓
    15.4 Shopifyパートナーのレース条件
        15.4.1 教訓
    15.5 まとめ

16章 安全ではないダイレクトオブジェクト参照
    16.1 単純なIDORの発見
    16.2 より複雑なIDORの発見
    16.3 Binary.comの権限昇格
        16.3.1 教訓
    16.4 Moneybirdのアプリケーション作成
        16.4.1 教訓
    16.5 TwitterのMopub APIトークンの盗難
        16.5.1 教訓
    16.6 ACMEの顧客情報の暴露
        16.6.1 教訓
    16.7 まとめ

17章 OAuthの脆弱性
    17.1 OAuthのワークフロー
    17.2 SlackのOAuthトークンの盗難
        17.2.1 教訓
    17.3 デフォルトパスワード付きでの認証の受け渡し
        17.3.1 教訓
    17.4 Microsoftのログイントークンの盗難
        17.4.1 教訓
    17.5 Facebookの公式アクセストークンの盗難
        17.5.1 教訓
    17.6 まとめ

18章 アプリケーションロジックと設定の脆弱性
    18.1 Shopifyの管理者権限のバイパス
        18.1.1 教訓
    18.2 Twitterのアカウント保護のバイパス
        18.2.1 教訓
    18.3 HackerOneのSignal操作
        18.3.1 教訓
    18.4 HackerOneの正しくないS3バケットの権限
        18.4.1 教訓
    18.5 GitLabの2要素認証のバイパス
        18.5.1 教訓
    18.6 Yahoo!のPHP Infoの公開
        18.6.1 教訓
    18.7 HackerOneのHacktibity投票
        18.7.1 教訓
    18.8 PornHubのmemcache環境へのアクセス
        18.8.1 教訓
    18.9 まとめ

19章 独自のバグバウンティの発見
    19.1 探索
        19.1.1 サブドメインの列挙
        19.1.2 ポートスキャン
        19.1.3 スクリーンショットの取得
        19.1.4 コンテンツの発見
        19.1.5 過去のバグ
    19.2 アプリケーションのテスト
        19.2.1 技術スタック
        19.2.2 機能のマッピング
        19.2.3 脆弱性の発見
    19.3 さらに進む
        19.3.1 作業を自動化する
        19.3.2 モバイルアプリケーションを見てみる
        19.3.3 新しい機能の特定
        19.3.4 JavaScriptファイルの追跡
        19.3.5 新機能へのアクセスに支払う
        19.3.6 技術を学ぶ
    19.4 まとめ

20章 脆弱性レポート
    20.1 ポリシーを読もう
    20.2 詳細を含める。そしてさらに含める
    20.3 脆弱性の再確認
    20.4 あなたの評価
    20.5 企業への尊敬を示す
    20.6 バウンティの報酬のアピール
    20.7 まとめ

付録A ツール
    A.1 Webプロキシー
    A.2 サブドメインの列挙
    A.3 発見
    A.4 スクリーンショット
    A.5 ポートスキャン
    A.6 探索
    A.7 ハッキングツール
    A.8 モバイル
    A.9 ブラウザープラグイン

付録B リソース
    B.1 オンライントレーニング
    B.2 バグバウンティプラットフォーム
    B.3 文献
    B.4 ビデオリソース
    B.5 ブログ

索引