この記事では、Webアプリケーションのセキュリティをテストするための最新の方法とアプローチについて説明します。
研究開始
Webアプリケーションのテストを成功させるには、体系的なアプローチまたは方法論が必要です。 最も有名なのはOWASPとWASCです。 それらは、これまでで最も包括的で形式化された方法論です。
次に、Webアプリケーションを決定する必要があります。調査のために、無料のCMSの1つの最新バージョンを取得し、脆弱なプラグインをインストールできます(脆弱なバージョンはexploit-db.comからダウンロードできます)。
試験方法
なぜなら 私たちはこのアプリケーションのWeb開発者ではありません。アーキテクチャを作成してアプリケーションを開発するときはテスト段階をスキップします(ただし、開発時には重要であることに注意してください)。
適用できるテスト原則がいくつかあります。
DAST-ソースコードとサーバー側にアクセスしないアプリケーションの動的(つまり、実行が必要な)分析、本質的にはBlackBox。
SASTは、WebアプリケーションのソースコードとWebサーバーにアクセスするアプリケーションの静的な(実行を必要としない)分析です。実際には、脆弱性の正式な兆候とサーバーセキュリティの監査に基づいたソースコードの分析です。
IAST-ソースコードであるWebサーバーへのフルアクセスを備えたWebアプリケーションのセキュリティの動的分析は、本質的にWhiteBoxのテスト中です。
ソースコード分析-サーバー環境にアクセスせずにソースコードにアクセスできる静的または動的分析。
これらの方法は、Webアプリケーションにアクセスできる場合、または例えばBugBountyプログラムに参加しているときにWebアプリケーションを調査している場合、Webアプリケーションの脆弱性を識別するスキルをトレーニングするのに完全に適しています。
マイルストーン
テストを完全に行うには、以下の推奨事項に従って、Webアプリケーションに応じて特定の段階をカスタマイズする必要があります。
知能
- ポートスキャン。
- サブドメインをスキャンします。
- 目に見えるコンテンツの検査。
- 非表示のコンテンツ(ディレクトリ、ファイル)を検索する
- プラットフォームとWeb環境の定義。
- 入力フォームの定義。
アクセス制御
- 認証および承認ツールの検証。
- パスワードポリシーの要件を特定します。
- 資格情報の選択をテストします。
- アカウント復旧のテスト。
- セッション保存機能のテスト。
- アカウント認証機能のテスト。
- 権限とアクセス権の検証。
- セッション調査(ライフタイム、セッショントークン、サイン、同時試行など)
- CSRFを確認してください。
ファジングパラメーター
- さまざまなタイプのインジェクション(SQL、SOAP、LDAP、XPATHなど)に対するアプリケーションのテスト
- XSS脆弱性のアプリケーションのテスト。
- HTTPヘッダーの確認。
- リダイレクトとリダイレクトを確認してください。
- OSコマンドの実行を確認します。
- ローカルおよびリモートの包含を確認します。
- XMLエンティティの実装の検証。
- 注入テンプレートを確認してください。
- Webソケットの相互作用を確認します。
Webアプリケーションロジックチェック
- クライアント側でアプリケーションのロジックをテストします。
- いわゆるテスト 「レース状態」-レース状態。
- データチャネルのテスト。
- アクセス権またはその不在に基づいて情報の可用性をテストします。
- データの重複または分離を確認します。
サーバー環境の確認
- サーバーアーキテクチャを確認します。
- 公開されている脆弱性の検索と特定。
- サーバーアカウント(サービス)の検証。
- サーバーまたはコンポーネントの設定の定義(SSLなど)。
- アクセス権の検証。
合計
アプリケーションをテストする計画があれば、特定の脆弱性の有無について、すべてのコンポーネントを段階的に調べることができます。 Webアプリケーションに基づいて、特定のアイテムにアプリケーション固有のチェックを追加できます。
次の記事では、このチェックリストを使用してWebアプリケーションをテストするのに適したツールについて説明します。