APIをテストしていますが、1つのパラメーターがSQLインジェクションに対して脆弱です。このパラメーターでOWASPZAPのファザーを実行すると、「;または1 = 1」と入力すると、SQLインジェクションの悪用に成功します。ただし、この入力を手動で指定すると、Oracleエラーコードが発生し、エクスプロイトは成功しません。
それでは、ファザーは、手動テストでは不可能な特定の入力の悪用に成功する可能性があるのでしょうか。私はファザーについてもっと理解しようとしていますが、ファザーは手動テストでは生成できない特定の条件を生成する可能性があるようです。これは正しいです?もしそうなら、なぜですか?
[私]ファザーは、手動テストでは生成できない特定の条件を生成する可能性があるように思われます。
いいえ、できません。サーバーは、HTTPリクエストがまったく同じHTTPリクエストを送信する限り、ZAP、ブラウザ、またはその他のものなどのファザーから発信されているかどうかを認識しません。
ここでのキーワードはまったく同じです。サーバーで何が起こっているのかわからないため、結果に影響を与える可能性があります。 ZAPから送信するHTTPリクエストを確認し( デモ を参照)、手動で送信するHTTPリクエストを確認します。手動テストにブラウザを使用している場合は、開発者ツールを使用して確認してください。別のアプローチは、WireSharkのようなプログラムを使用してリクエストを検査することです。
目の前に2つのリクエストがあったら、それらを比較します。違いはどこですか?それはおそらくこの謎の解決策です。
別の説明は、サーバーでのランダムな動作、またはエクスプロイトが修正されたための動作の変更です。繰り返されるテストはそれらを除外することができます。