web application security testing guide
最高のリモートアクセスソフトウェアは何ですか
Webアプリケーションに保存されている膨大な量のデータと、Webでのトランザクション数の増加により、Webアプリケーションの適切なセキュリティテストは日々非常に重要になっています。
この記事では、Webサイトのセキュリティテストで使用される主要な用語とそのテストアプローチについて詳しく学習します。
学習内容:
セキュリティテストとは何ですか?
セキュリティテスト かどうかをチェックするプロセスです 機密データは機密のままであるかどうか (つまり、それが意図されていない個人/エンティティに公開されていない)、ユーザーは実行を許可されているタスクのみを実行できます
例えば、 ユーザーは、他のユーザーに対してWebサイトの機能を拒否できないようにする必要があります。または、ユーザーが意図しない方法でWebアプリケーションの機能を変更できないようにする必要があります。
セキュリティテストで使用されるいくつかの重要な用語
先に進む前に、Webアプリケーションのセキュリティテストで頻繁に使用されるいくつかの用語をよく理解しておくと便利です。
「脆弱性」とは何ですか?
これがWebアプリケーションの弱点です。このような「弱点」の原因は、アプリケーションのバグ、インジェクション(SQL /スクリプトコード)、またはウイルスの存在が原因である可能性があります。
「URL操作」とは何ですか?
一部のWebアプリケーションは、URLでクライアント(ブラウザー)とサーバーの間で追加情報を通信します。 URLの一部の情報を変更すると、サーバーによる意図しない動作が発生する場合があります。これは、 URL操作 。
「SQLインジェクション」とは何ですか?
これは、Webアプリケーションのユーザーインターフェイスを介してSQLステートメントをクエリに挿入し、サーバーによって実行されるプロセスです。
「XSS(クロスサイトスクリプティング)」とは何ですか?
ユーザーがWebアプリケーションのユーザーインターフェイスにHTML /クライアント側スクリプトを挿入すると、この挿入は他のユーザーに表示され、次のように呼ばれます。 XSS 。
「なりすまし」とは何ですか?
デマそっくりのウェブサイトやメールの作成は、 なりすまし 。
推奨されるセキュリティテストツール
#1)Acunetix
APKファイルを開くにはどうすればよいですか
Acunetix は、エンドツーエンドのWebアプリケーションセキュリティスキャナーです。それはあなたの組織のセキュリティの360度のビューを提供します。 SQLインジェクション、XSS、弱いパスワードなど、6500種類の脆弱性を検出できます。高度なマクロ記録技術を利用して、複雑なマルチレベルフォームをスキャンします。
プラットフォームは直感的で使いやすいです。フルスキャンとインクリメンタルスキャンをスケジュールして優先順位を付けることができます。組み込みの脆弱性管理機能が含まれています。 JenkinsなどのCIツールを使用すると、新しいビルドを自動的にスキャンできます。
=> Acunetix for Web AppSecurityをお試しください
#2) Kiuwan
SDLCのすべての段階で、コードの脆弱性を見つけて修正します。
Kiuwan OWASP、CWE、SANS 25、HIPPAなどを含む最も厳しいセキュリティ標準に準拠しています。KiuwanをIDEに統合して、開発中に即座にフィードバックを提供します。 Kiuwanは、すべての主要なプログラミング言語をサポートし、主要なDevOpsツールと統合します。
=> コードを無料でスキャンする
セキュリティテストアプローチ
Webアプリケーションの有用なセキュリティテストを実行するには、セキュリティテスターはHTTPプロトコルに関する十分な知識を持っている必要があります。
クライアント(ブラウザ)とサーバーがHTTPを使用してどのように通信するかを理解することが重要です。
さらに、テスターは少なくともSQLインジェクションとXSSの基本を知っている必要があります。
うまくいけば、Webアプリケーションに存在するセキュリティ上の欠陥の数は多くないでしょう。ただし、すべてのセキュリティ上の欠陥を必要なすべての詳細とともに正確に説明できることは、間違いなく役立ちます。
Webセキュリティテストの方法
#1)パスワードクラッキング
のセキュリティテスト ウェブアプリケーション 「パスワードクラッキング」で開始できます。アプリケーションのプライベートエリアにログインするには、ユーザー名/パスワードを推測するか、パスワードクラッカーツールを使用します。一般的なユーザー名とパスワードのリストは、オープンソースのパスワードクラッカーとともに利用できます。
Webアプリケーションが複雑なパスワードを適用しない場合( 例えば、 アルファベット、数字、特殊文字、または少なくとも必要な文字数)を使用すると、ユーザー名とパスワードを解読するのにそれほど時間はかからない場合があります。
ユーザー名またはパスワードが暗号化せずにCookieに保存されている場合、攻撃者はさまざまな方法を使用してCookieと、ユーザー名やパスワードなどのCookieに保存されている情報を盗むことができます。
詳細については、「 ウェブサイトのCookieテスト 」。
#2)HTTPGETメソッドによるURL操作
テスターは、アプリケーションがクエリ文字列で重要な情報を渡すかどうかを確認する必要があります。これは、アプリケーションがHTTPGETメソッドを使用してクライアントとサーバー間で情報を渡すときに発生します。
情報は、クエリ文字列のパラメータを介して渡されます。テスターは、クエリ文字列のパラメータ値を変更して、サーバーがそれを受け入れるかどうかを確認できます。
HTTP GETリクエストを介して、ユーザー情報は認証またはデータのフェッチのためにサーバーに渡されます。攻撃者は、必要な情報を取得したり、データを破壊したりするために、このGETリクエストからサーバーに渡されるすべての入力変数を操作できます。このような状況では、アプリケーションまたはWebサーバーによる異常な動作は、攻撃者がアプリケーションに侵入するための入り口になります。
#3)SQLインジェクション
チェックする必要がある次の要素はSQLインジェクションです。テキストボックスに一重引用符( ‘)を入力すると、アプリケーションによって拒否されます。代わりに、テスターでデータベースエラーが発生した場合は、ユーザー入力がクエリに挿入され、アプリケーションによって実行されることを意味します。このような場合、アプリケーションはSQLインジェクションに対して脆弱です。
攻撃者はサーバーデータベースから重要な情報を取得できるため、SQLインジェクション攻撃は非常に重要です。 WebアプリケーションへのSQLインジェクションエントリポイントを確認するには、いくつかのユーザー入力を受け入れることにより、データベースで直接MySQLクエリが実行されるコードベースからコードを見つけます。
ユーザー入力データがSQLクエリで作成されてデータベースにクエリを実行する場合、攻撃者はSQLステートメントまたはSQLステートメントの一部をユーザー入力として挿入して、データベースから重要な情報を抽出できます。攻撃者がアプリケーションのクラッシュに成功した場合でも、ブラウザに表示されるSQLクエリエラーから、攻撃者は探している情報を取得できます。
このような場合、ユーザー入力からの特殊文字は適切に処理/エスケープする必要があります。
#4)クロスサイトスクリプティング(XSS)
テスターは、WebアプリケーションでXSS(クロスサイトスクリプティング)を追加で確認する必要があります。任意のHTML 例えば、 または任意のスクリプト 例えば、 アプリケーションによって受け入れられるべきではありません。そうである場合、アプリケーションはクロスサイトスクリプティングによる攻撃を受けやすい可能性があります。
攻撃者はこの方法を使用して、被害者のブラウザで悪意のあるスクリプトまたはURLを実行できます。攻撃者は、クロスサイトスクリプティングを使用して、JavaScriptなどのスクリプトを使用して、ユーザーのCookieとCookieに保存されている情報を盗むことができます。
多くのWebアプリケーションは、いくつかの有用な情報を取得し、この情報をさまざまなページからいくつかの変数に渡します。
例えば、 http://www.examplesite.com/index.php?userid=123 &query = xyz
ビジネスアナリストが要件収集に使用するツール
攻撃者は、悪意のある入力を簡単に渡すか、ブラウザ上の重要なユーザー/サーバーデータを探索できる「&query」パラメータとして渡すことができます。
重要: セキュリティテスト中、テスターは次のいずれも変更しないように十分に注意する必要があります。
- アプリケーションまたはサーバーの構成
- サーバーで実行されているサービス
- アプリケーションによってホストされている既存のユーザーまたは顧客データ
さらに、本番システムではセキュリティテストを回避する必要があります。
結論
セキュリティテストの目的は、Webアプリケーションの脆弱性を発見して、開発者がこれらの脆弱性をアプリケーションから削除し、Webアプリケーションとデータを不正なアクションから保護できるようにすることです。
推奨読書=> SAST / DAST / IAST / RASPの違い
この記事についてのコメント/提案をお気軽に共有してください。