最近、新しいDASTツールを含むBurpの最新バージョンにアップグレードしました。 DOMベースのJavascriptインジェクションが見つかったというレポートをツールから受け取っていますが、出力のダイジェストに問題があります。
データはtextarea.valueから読み取られ、evalに渡されます。ソース要素のIDはpastBoxFieldで、名前はpastBoxFieldです。以前の値は次のようにシンクに達しました:(dkezib%2527%2522` '"/ dkezib /> xrpjqc&)
デモのPortswiggerの投稿はこちらです: https://portswigger.net/blog/dynamic-analysis-of-javascript この例は、注入された実際の値と概念実証。私が得ている出力にはこれがありません。上記のブロッククォートにあるものとソースとシンクのスタックトレースのみ。
私の人生では、これを再現したり、これが誤検出であるかどうかを確認したりすることはできません。注入された値がないので、シンクで到達した値である可能性があっても、これを確認できません。私はこのタイプのテストに比較的慣れていないので、これを手動でテストする方法があると確信しています。私はそのようなことを説明する詳細な説明を見つけようとしましたが、見つけることができません。明らかにPortswiggerのものですが、私の例よりも多くの情報を提供します。
これが誤検出であるかどうかを手動で確認する方法の正しい方向に誰かが私を向けることができますか?私は研究や何かを通して読んでもかまわない。 Firefoxでデバッグできることはわかっていますが、必要なものを追跡する方法がわかりません。それが事実である場合、私が明白な何かを見逃していることを叫んで、叱って、または指摘してください。
私は新しいDASTスキャナーを使用していませんが、入力フィールド/変数に_(dkezib%2527%2522``'"/dkezib/>xrpjqc&)
_を挿入し、JavaScriptを実行して、エスケープされずにeval()
に達したようです。通常、これがJavaScript注入に必要なすべての要素です。
alert(1)
のバリエーションで遊んで、ポップアップを取得できるかどうかを確認します。おそらく最初はうまくいかないでしょう。その理由を理解するには、ページのソースを詳しく調べる必要があります。この1時間後、私は通常、ポップアップ(脆弱であることが確認された)を取得することに成功したか、コードが90%確実に脆弱でないことを確認できるようにコードを十分に理解しました。