Python-penetration-testing-application-layer
アプリケーション層
WebアプリケーションとWebサーバーは、オンラインプレゼンスにとって重要であり、それらに対して観察される攻撃は、インターネットで試行された攻撃全体の70%以上を占めています。 これらの攻撃は、信頼できるWebサイトを悪意のあるWebサイトに変換しようとします。 このため、WebサーバーとWebアプリケーションのペンテストは重要な役割を果たします。
Webサーバーのフットプリント
Webサーバーの安全性を考慮する必要があるのはなぜですか? 電子商取引業界の急速な成長に伴い、攻撃者の主な標的はWebサーバーであるためです。 Webサーバーのペンテストでは、Webサーバー、そのホスティングソフトウェアとオペレーティングシステム、およびそれらで実行されているアプリケーションについて知る必要があります。 Webサーバーに関するこのような情報の収集は、Webサーバーのフットプリントと呼ばれます。
次のセクションでは、Webサーバーのフットプリントのさまざまな方法について説明します。
Webサーバーのフットプリントの方法
Webサーバーは、要求の処理と応答の処理専用のサーバーソフトウェアまたはハードウェアです。 これは、Webサーバーのペネトレーションテストを行う際に、ペンタスターが注力する重要な領域です。
次に、Pythonで実装されたいくつかのメソッドについて説明します。これらのメソッドは、Webサーバーのフットプリントのために実行できます-
HTTPメソッドの可用性のテスト
ペネトレーションテスターにとって非常に良いプラクティスは、利用可能なさまざまなHTTPメソッドをリストすることから始めることです。 以下は、ターゲットWebサーバーに接続し、使用可能なHTTPメソッドを列挙できるPythonスクリプトです。
まず、リクエストライブラリをインポートする必要があります-
要求ライブラリをインポートした後、送信するHTTPメソッドの配列を作成します。 「GET」、「POST」、「PUT」、「DELETE」、「OPTIONS」などの標準メソッドと、非標準メソッド「TEST」を使用して、Webサーバーが予期しない入力をどのように処理できるかを確認します。
次のコード行はスクリプトのメインループです。このループはHTTPパケットをWebサーバーに送信し、メソッドとステータスコードを出力します。
次の行では、TRACEメソッドを送信して、クロスサイトトレース(XST)の可能性をテストします。
特定のWebサーバーに対して上記のスクリプトを実行すると、Webサーバーによって受け入れられた特定のメソッドに対して200 OK応答が返されます。 Webサーバーが明示的にメソッドを拒否した場合、403 Forbidden応答を受け取ります。 クロスサイトトレース(XST)をテストするためにTRACEメソッドを送信すると、Webサーバーから 405 Not Allowed 応答が返されます。そうでない場合は、「クロスサイトトレース(XST)が可能です」
HTTPヘッダーのチェックによるフットプリント
HTTPヘッダーは、Webサーバーからの要求と応答の両方にあります。 また、サーバーに関する非常に重要な情報も含まれています。 それが、ペネトレーションテスターが常にHTTPヘッダーを介した情報の解析に関心がある理由です。 以下は、Webサーバーのヘッダーに関する情報を取得するためのPythonスクリプトです-
まず、リクエストライブラリをインポートしましょう-
GET要求をWebサーバーに送信する必要があります。 次のコード行は、要求ライブラリを介して単純なGET要求を作成します。
次に、情報が必要なヘッダーのリストを生成します。
次はtry and exceptブロックです。
特定のWebサーバーに対して上記のスクリプトを実行した後、ヘッダーリストで提供されるヘッダーに関する情報を取得します。 特定のヘッダーに関する情報がない場合は、「詳細が見つかりません」というメッセージが表示されます。 HTTP_headerフィールドの詳細については、リンク— link:/http/http_header_fields [https://www.finddevguides.com/http/http_header_fields]から学ぶこともできます。
安全でないWebサーバー構成のテスト
HTTPヘッダー情報を使用して、安全でないWebサーバー構成をテストできます。 次のPythonスクリプトでは、try/exceptブロックを使用して、テキストファイル名 websites.txt に保存されているURLの数に対する安全でないWebサーバーヘッダーをテストします-
Webアプリケーションのフットプリント
前のセクションでは、Webサーバーのフットプリントについて説明しました。 同様に、Webアプリケーションのフットプリントも、侵入テストの観点から重要であると考えられています。
次のセクションでは、Webアプリケーションのフットプリントのさまざまな方法について学習します。
Webアプリケーションのフットプリントの方法
Webアプリケーションは、クライアントサーバープログラムであり、Webサーバー内のクライアントによって実行されます。 これは、ペンテスターがWebアプリケーションの侵入テストを行う際に焦点を当てるもう1つの重要な領域です。
次に、Pythonで実装されたさまざまなメソッドについて説明します。これらのメソッドは、Webアプリケーションのフットプリントに使用できます-
パーサーBeautifulSoupを使用して情報を収集する
Webページからすべてのハイパーリンクを収集するとします。 BeautifulSoupというパーサーを使用できます。 パーサーは、HTMLおよびXMLファイルからデータを引き出すためのPythonライブラリです。 スープオブジェクトを作成するために入力(ドキュメントまたはURL)が必要であり、Webページ自体を取得できないため、 urlib で使用できます。
まず、必要なパッケージをインポートしましょう。 urlibと BeautifulSoup をインポートします。 BeautifulSoupをインポートする前に、インストールする必要があります。
以下に示すPythonスクリプトは、Webページのタイトルとハイパーリンクを収集します-
ここで、WebサイトのURLを保存できる変数が必要です。 ここでは、「url」という名前の変数を使用します。 また、Webページを保存し、Webページを変数 html_page に割り当てることができる* page.read()*関数を使用します。
次の2行は、それぞれタグ付きおよびタグなしのタイトル名を出力します。
以下に示すコード行は、すべてのハイパーリンクを保存します。
バナーをつかむ
バナーはサーバーに関する情報を含むテキストメッセージのようなものであり、バナーグラブはバナー自体が提供する情報を取得するプロセスです。 次に、このバナーがどのように生成されるかを知る必要があります。 送信されるパケットのヘッダーによって生成されます。 クライアントがポートへの接続を試みている間、ヘッダーにはサーバーに関する情報が含まれているため、サーバーは応答します。
次のPythonスクリプトは、ソケットプログラミングを使用してバナーを取得するのに役立ちます-
上記のスクリプトを実行した後、前のセクションのHTTPヘッダーのフットプリントのPythonスクリプトから取得したのと同様のヘッダーに関する情報を取得します。