web-dev-qa-db-ja.com

XSS脆弱性を見つけるための効率的な方法は?

手動(信頼できる)方法:HTMLで特別な意味を持つ文字を含む文字列をHTTPリクエストのいくつかのパラメーターに入れ、HTTPレスポンスでこの文字列を探します(そしておそらく)レンダリングされる他の場所で。ただし、入力をパラメーターに入れたり、HTTP応答でこれらの文字列を検索したりするようなすべてのアクションが手動で実行されるため、この方法は非常に長くなります。

自動(高速)方法:Arachniのようなセキュリティスキャナーを実行します。しかし それは(コードを見た後) は通常のコンテキストでのみ脆弱性を見つけ、CSS値、JSコードなどを特別に扱いません。

では、XSSの脆弱性を見つけるためのより効率的な(高速で信頼できる)方法は何でしょうか。プロセスをより速くするために手動の方法を半自動に変更することに興味があります

6
Andrei Botalov

私が見たものから、実際にスキャナーに依存する幅広いXSS問題を見つけることに関して(それの優れた開始点 here )、それらのどれも完璧ではありません(つまり、常にあります)ブラックボックススキャンの場合、手動テスターがスキャナーで見逃してしまう問題を見つける場合があります)。いくつかは他のものよりも幅広いベクトルとテクニックを持っています。

自動化ツールの対象範囲を広げたい場合は、ブラックボックスアプローチでは特定が難しい問題を見つけることができるため、グレー/ホワイトボックスツールを追加できます。例として ブレーキマン for Ruby on RailsアプリケーションはXSS問題を検出します。

また、@ Tate HansenがDOMXSSの問題について上記のDominatorについて言及している他の専門ツール。

基本的にセキュリティのほとんどのものと同様に、特効薬はありません。複数のツールとアプローチを組み合わせることで、自動カバレッジを改善できますが、手動で検出するのが最も適切な領域がいくつかあります。

5
Rory McCune

DOMinator Pro は、DOM XSSを識別するための優れた半自動ツールです。

DOMinatorとは何ですか?
DOMinatorは、DOMベースのクロスサイトスクリプティングの問題(DomXss)を分析および特定するためのFirefoxベースのソフトウェアです。これは、セキュリティテスターがDomXssを識別するのに役立つ最初のランタイムツールです。

使い方?
DomXssの脆弱性が実際に悪用可能かどうかを理解するために、文字列に動的ランタイム汚染モデルを使用し、汚染伝播操作を追跡できます。

6
Tate Hansen

独自のアプリをテストしている場合、またはソースコードがあるアプリをテストしている場合は、手動+自動化の組み合わせが最善の方法です。ソースコードで静的分析ツールを使用してみてください。いくつかのXSS脆弱性(ある場合)が見つかります。ただし、使用するツールによっては、いくつかの誤検知が発生する可能性があることに注意してください。

次に、手動テスト-おそらく最も効率的です(何をしているのかわかっている場合)。 XSSは、テキストボックスへの<script>alert('hi')</script>インジェクションだけではなく、反映(または保存)されているかどうかを確認します。あなたがチェックする必要がある無数のベクトルがあります。 XSSチートシート 新しいXSSチートシート? を使用してください。多くの失敗した試みがありますが、何かを注入し、戻りHTMLページを確認し、ベクトルを変更した後にこのプロセスを繰り返すと、結果が得られます。

2
sudhacker

興味深いトピック。

XSSは興味深い課題です。自動化ツールを使用したテストは、失敗する場合と失敗する場合があります。その理由は、多くの潜在的な攻撃があるため、ツールはそれらのいくつかを選択して無限のスキャンを回避するためです。

攻撃を選択的に行う前にパラメータをプロファイリングすると、精度が劇的に向上することがわかっています。

覚えておかなければならないもう1つの面白い点は、多くの最新のブラウザーがこれらの攻撃の多くをブロックすることです。これにより、修正する前に攻撃を悪用できるブラウザーのパーセンテージに関する開発者の魅力的な議論につながります。

1
Matthew Cohen