web-dev-qa-db-ja.com

WebGoatスタイルのXSS攻撃はまだ機能しますか?

XSS攻撃に関する知識を更新するために、WebGoatの演習を行っています。

具体的には、ステージ1のXSS演習を行っています。この演習には、意図的に入力をサニタイズしない形式があります。ソリューションのビデオでは、JavaScriptアラート機能を使用してメッセージとセッションCookieを送信しています。

ステージ3にはXSSコードスニペットが組み込まれており、プロファイルを表示すると「document.cookie」のコンテンツが表示されます。

最近のブラウザでは、アドオンがないため、これを実行できません。 JavaScriptアラートを使用してメッセージを生成できますが、document.cookieの内容を印刷しません

Get-cookieの this ページのチュートリアルは、JavaScriptアラートメッセージでdocument.cookieの内容を印刷できることを示しています。

私が知りたいのは、XSS Webアプリケーションに対して意図的に脆弱な非常に単純なもので同じことができない理由です。すべての最新のブラウザーでこれを防ぐXSS検出はありますか? IE、Firefox、およびChromeでWebセキュリティを無効にするオプションを試してみましたが、違いはありません。

enter image description here

編集:私がWebGoat 5.4とWebGoat 6.0.1の両方で試したこと:

  • 新しいデフォルトのプロファイルを使用し、アドオンなしでFirefox経由でアクセスする
  • --disable-web-securityおよび/または–disable-xss-auditor引数を持つChrome
  • Mantra経由でアクセスする
  • リクエストでX-XSS-Protectionヘッダーを0に設定しています。

WebGoatは、もはや脅威ではなくなったXSS攻撃について教えようとしていますか?

2番目の編集:

マーティンの答えに従って、以下のスクリーンショットにあるように、ヘッダーを手動で設定してみました。レッスンのタイトルを変更して、フィドラーがページを正しくインターセプトしていることを確認しました。

enter image description hereenter image description here

Cookieは、secure3またはhttponlyとして設定されていませんが、ブックマークレットまたはスクラッチパッドを介して、JavaScriptを介してブラウザーから読み取られることを拒否します。 Cookieはブラウザーで正しく設定され、ブラウザーのCookieダイアログで表示できます。

このCookieのどのプロパティが読み取られないのですか?

5
Sonny Ordell

X-XSS-Protection:ヘッダーを設定するのが正しい解決策ですが、このヘッダーは、リクエストではなくresponseに追加する必要があります。手順:

  • notである実際のcookieがHTTPのみのフラグで保護されていることを確認してください。 (たとえば、JSessionID Cookieを編集できます)
  • 正しいJSコマンドを使用してCookieを取得します(最初にコンソールでテストします)。例:var a = document.cookie; alert(a)(注:複数のCookieがある場合、それらを分割するために、私はあなたがJSESSIONID cookieしか持っていないと仮定します)
  • コマンドを通りのフィールドにスクリプトタグを付けて保存します:var a = document.cookie; alert(a)(Stackoverflowはスクリプトタグを非表示にします。必ず追加してください)
  • 保存する前にFiddlerを起動します。応答をインターセプトし、応答にX-XSS-Protection:0ヘッダーを追加します(開発者バージョンをお持ちの場合は、おそらくソースに追加できます)。
  • 応答をインターセプトし、応答ヘッダーを編集し、X-XSS-Protection:0ヘッダーを追加します。確認のためにCTRL + Sを押してから、「完了まで実行」を押します。
  • Etvoilà

Update:明確にするためのスクリーンショット。

  • バイオリン弾き

*: Fiddler header

  • ウェブゴート結果 Webgoat
5
Michael

正解です。主流のブラウザーの大部分には、組み込みのXSS保護が組み込まれています。可能な回避策に関して:

Chrome=でこの機能を無効にするには、「disable-xss-auditor」スイッチを使用してブラウザを起動します(つまり、C:\<PATH>\chrome.exe --args --disable-xss-auditor

別のオプションは、ホスティングWebサーバーにヘッダーを設定して、そのような保護を無効にすることです(以下のApacheの例)。

ヘッダーセットX-XSS-Protection:0

最後に、OWASP MantraなどのWebアプリケーションペンテストブラウザを利用することもできます。

https://www.owasp.org/index.php/OWASP_Mantra_-_Security_Framework

4
vaughank

Cookieのコンテンツを印刷するために使用したXSSペイロードについて言及してもらえますか?
また、一般的に言えば、X-XSSヘッダーに加えて、WebアプリケーションでcookieフラグがHTTPのみに設定されている場合、cookieのコンテンツは、 JavaScriptスニペットまたはXSSペイロード。これにより、上で投稿したスクリーンショットのような空の警告メッセージが出力されます。

0
racec0ndition