ZAPでスキャンを実行していると、報告された脆弱性の多くに、悪意のあるコンテンツを「query」という名前のパラメーターの値として送信することが含まれていることに気付きました。例えば:
http://<url>:<port>/path/path/path?query=query+AND+1%3D1+--+
ただし、問題のapiメソッドには、この名前で使用されるパラメーターがないため、ツールがこれを使用して脆弱性を検出できる可能性があるのではないかと考えていました。実際、ZAPはSQLインジェクションの脆弱性を報告しており、上記のようなURLを使用することによる「中」の信頼性があり、パストラバーサルとxssでも同様の結果が得られています。
これは、ZAPを正しく設定しなかった結果でしょうか?開発者が定義していないパラメーターをAPIに読み取らせることは可能ですか? ZAPはAPIが使用するパラメーターを推測しているだけですか?
はい、このコードによって追加されました: https://github.com/zaproxy/zaproxy/blob/develop/zap/src/main/Java/org/parosproxy/paros/core/scanner/VariantAbstractQuery.Java# L148-L15
これは、Webアプリケーションがクエリにどのように反応するかを確認するために追加されます-それらがクエリを適切に処理しない場合、はい、これは脆弱性をもたらす可能性があります。
ZAPが誤検知を報告したと思われる場合は、私たちにも報告してください: https://github.com/zaproxy/zaproxy/issues/new?labels=bug&template=Bug_report.md
注:ZAP 2.8以降、元々それらを持っていなかったリクエストへのパラメーターの追加はオプションになりました(デフォルトはオフ)。参照: https://github.com/zaproxy/zap-core-help/wiki/HelpUiDialogsOptionsAscaninput#add-url-query-parameter