web-dev-qa-db-ja.com

ページのクロール時にViewStateでMACが有効になっているかどうかを確認するにはどうすればよいですか?

サイトでセキュリティテストを行うために Burp Suite を使用していて、ViewStateを検出すると、MACが有効になっているかどうかを自動的に通知することに気付きました。

実際にViewStateを変更せずにサイトをクロールし、送信して何か問題が発生していないかどうかを確認して、MACが有効かどうかを判断するプログラム的な方法を知っている人がいるかどうか知りたいのですが。

Burp Suiteがこれを行うのは、リクエストを確認するだけで(変更/送信ではなく)、私が言えることです。

4
Abe Miessler

「ViewState」は、サーバーに送り返される非表示フィールド値として、ページの一部です。 ViewStateが [〜#〜] mac [〜#〜] によって保護されている場合、MAC値はその一部であるため、ページからViewState値を抽出し、デコードするだけです。 、MACがあるかどうかを確認します。げっぷはまさにそれを行います。

ViewStateフォーマットは公開されていません(いじる必要はありません)が リバースエンジニアリング です。

4
Thomas Pornin

ViewStateは基本的にBASE64でエンコードされた文字列です。だからあなたができることは、BASE64デコーダーでそれらをデコードしようとすることです。暗号化されている場合、実際には読み込めないバイナリコンテンツが表示されます。暗号化を使用しない場合は、内容を見ることができます。たとえば Fiddler2 は、ブラウザでViewStateをデコードするのに役立ちます。

MACを使用するオプションもあります。

ビューステートでMACが有効になっている場合、このシステムのセキュリティは秘密鍵の値の機密性にあります。この値は常にメモリまたは構成ファイル(これについては後で詳しく説明します)のいずれかでサーバーに格納されます。ページに書き込まれることはありません。キーを知らなければ、攻撃者が有効なビューステートハッシュを計算する方法はありません。

from MSDN "View State Security"

これを確認するには、VIEWSTATEをデコードして(暗号化されていない場合)、ViewState構造の最後に20バイトのハッシュが存在するかどうかを確認します。

3
Lucas Kauffman