Hash Length Extension Attack
Last updated
Last updated
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
サーバーがデータにシークレットを追加してハッシュ化していると想像してください。もしあなたが以下を知っているなら:
シークレットの長さ(これは与えられた長さの範囲からもブルートフォース可能です)
クリアテキストデータ
アルゴリズム(そしてそれがこの攻撃に対して脆弱であること)
パディングが知られている
通常はデフォルトのものが使用されるため、他の3つの要件が満たされていれば、これもそうです
パディングはシークレット+データの長さによって異なるため、シークレットの長さが必要です
その場合、攻撃者はデータを追加し、以前のデータ + 追加データの有効な署名を生成することが可能です。
基本的に、脆弱なアルゴリズムは、最初にデータのブロックをハッシュ化し、その後、以前に作成されたハッシュ(状態)から次のデータブロックを追加してハッシュ化します。
例えば、シークレットが「secret」でデータが「data」の場合、「secretdata」のMD5は6036708eba0d11f6ef52ad44e8b74d5bです。 攻撃者が「append」という文字列を追加したい場合、彼は以下のことができます:
64の「A」のMD5を生成する
以前に初期化されたハッシュの状態を6036708eba0d11f6ef52ad44e8b74d5bに変更する
文字列「append」を追加する
ハッシュを完了し、結果のハッシュは「secret」 + 「data」 + 「padding」 + 「append」の有効なものになります
この攻撃については、https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacksで詳しく説明されています。
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)