Python-penetration-testing-xss-web-attack

提供:Dev Guides
移動先:案内検索

Python侵入テスト-XSS Web攻撃

クロスサイトスクリプティング攻撃は、クライアント側のコードインジェクション攻撃も指すインジェクションの一種です。 ここでは、悪意のあるコードが正当なWebサイトに挿入されます。 Same Origin Policy(SOP)の概念は、クロスサイトスクリプティングの概念を理解するのに非常に役立ちます。 SOPは、すべてのWebブラウザで最も重要なセキュリティプリンシパルです。 Webサイトが別の起源を持つページからコンテンツを取得することを禁止します。 たとえば、Webページhttps://www.finddevguides.com/index[www.finddevguides.com/indexl]は、 www.finddevguides.com/contactl のコンテンツにアクセスできますが、http://www.virus.com/indexl[www.virus.com/indexl]は www.finddevguides.com/contactl のコンテンツにアクセスできません。 このように、クロスサイトスクリプティングはSOPセキュリティポリシーをバイパスする方法であると言えます。

XSS攻撃の種類

このセクションでは、さまざまなタイプのXSS攻撃について学びましょう。 攻撃は、次の主要なカテゴリに分類することができます-

  • 永続的または保存されたXSS
  • 非永続または反射XSS

永続的または保存されたXSS

この種のXSS攻撃では、攻撃者がペイロードと呼ばれるスクリプトを挿入します。このスクリプトは、データベースなどのターゲットWebアプリケーションに永続的に保存されます。 これが理由であり、永続的なXSS攻撃と呼ばれます。 実際、これは最も有害なタイプのXSS攻撃です。 たとえば、悪意のあるコードが攻撃者によってブログのコメントフィールドやフォーラムの投稿に挿入されます。

非永続または反射XSS

これは最も一般的なタイプのXSS攻撃であり、攻撃者のペイロードはリクエストの一部である必要があります。リクエストはWebサーバーに送信され、HTTPレスポンスにHTTPリクエストからのペイロードが含まれるように反映されます。 攻撃者は各被害者にペイロードを配信する必要があるため、非永続的な攻撃です。 このような種類のXSS攻撃の最も一般的な例は、攻撃者が被害者を引き付けてXSSペイロードを含むサーバーにリクエストを送信し、最終的にブラウザー内で反映および実行されるスクリプトを実行するフィッシングメールです。 。

SQLiと同様に、XSS Web攻撃は、アプリケーションへの入力データを操作することで実装できます。 次の例では、前のセクションで行ったSQLi攻撃ベクトルを変更して、XSS Web攻撃をテストします。 以下に示すPythonスクリプトは、 mechanize を使用してXSS攻撃を分析するのに役立ちます-

まず、 mechanize モジュールをインポートしましょう。

import mechanize

次に、フォームの送信後に応答を取得するためのURLの名前を指定します。

url = input("Enter the full url")
   attack_no = 1

ファイルから攻撃ベクトルを読み取る必要があります。

With open (‘vectors_XSS.txt’) as x:

今、私たちは各arrackベクトルでリクエストを送信します-

For line in x:
   browser.open(url)
browser.select_form(nr = 0)
   browser[“id”] = line
   res = browser.submit()
content = res.read()

次のコード行は、印刷された攻撃ベクトルを確認します。

if content.find(line) > 0:
print(“Possible XSS”)

次のコード行は、応答を出力ファイルに書き込みます。

output = open(‘response/’ + str(attack_no) + ’.txt’, ’w’)
output.write(content)
output.close()
print attack_no
attack_no += 1

XSSは、ユーザー入力が検証なしで応答に出力されると発生します。 したがって、XSS攻撃の可能性を確認するために、提供した攻撃ベクトルの応答テキストを確認できます。 エスケープまたは検証なしで攻撃ベクトルが応答に存在する場合、XSS攻撃の可能性が高くなります。