Burp Suite Proで自動Webスキャンを実行しました。スキャナーの結果は、私たちのWebサイトがコードインジェクションの深刻度が高いことを示していました。それは次の証明を与えました:
しかし、なぜそれがそのように解釈されたのか理解できません:
"アプリケーションはユーザー入力をコードとして評価しているようです。0秒間スリープするように指示され、1.1369998455秒間の応答時間が観察されました。次に10秒間スリープするように指示されました。結果は15.8949999809秒の応答時間でした」
Webアプリがxxx秒間スリープするという指示に従っていたことを示す応答はどこにありますか?そして、なぜそれが証明を与えられたコードとしてアプリケーションがユーザー入力を評価しているように見えると評価したのですか?
(私はWebセキュリティペンテストに特化していませんが、スタッフのスケルトンのためにこのタスクを実行するために割り当てられました)。
自動スキャンの結果は潜在的に悪用可能な問題を示しています。他のすべての自動スキャン結果と同様に、偽陽性分析を実行する必要があります。
これを分析する最も簡単な方法は、コードレビューを実行して、影響を受けるパラメーターがサーバー側でどのように処理されるかを確認することです。これがブラックボックス/グレーボックスのセキュリティテストであり、コードを確認できない場合は、次のようにします。
Burpプロキシーを使用して、リピーターツールを使用してリクエストを再生し、スリープ時間の値を操作して結果が一貫しているかどうかを確認する必要があります(応答時間については、リピータータブの右下隅を参照してください)。動作が続く場合は、他のコマンドを挿入して確認することをお勧めします。例えばホストがユーザーが制御するWebサーバーに再接続するコマンド(これは、ホストのネットワークアクセスなどの他の変数に依存します)。
脆弱性はサーバー側のコードインジェクションです。スキャナーはパスワードフィールドにスリープコマンドを2回挿入し、サーバーが10秒間スリープするように要求されたとき、サーバーが応答するのに通常より長い時間がかかることに気付きました。これは、コマンドインジェクションが可能なことを示しています。