mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
41 lines
2.2 KiB
Markdown
41 lines
2.2 KiB
Markdown
# ハッシュ長拡張攻撃
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|
||
|
||
## 攻撃の概要
|
||
|
||
サーバーが**データ**に**秘密**を**追加**してからそのデータをハッシュ化して**署名**していると想像してください。もしあなたが以下を知っているなら:
|
||
|
||
- **秘密の長さ**(これは与えられた長さの範囲からもブルートフォース可能です)
|
||
- **平文データ**
|
||
- **アルゴリズム(そしてそれがこの攻撃に対して脆弱であること)**
|
||
- **パディングが知られていること**
|
||
- 通常はデフォルトのものが使用されるため、他の3つの要件が満たされていれば、これもそうです
|
||
- パディングは秘密+データの長さによって異なるため、秘密の長さが必要です
|
||
|
||
その場合、**攻撃者**は**データ**を**追加**し、**以前のデータ + 追加されたデータ**の有効な**署名**を**生成**することが可能です。
|
||
|
||
### どうやって?
|
||
|
||
基本的に、脆弱なアルゴリズムは最初に**データのブロックをハッシュ化**し、その後、**以前に**作成された**ハッシュ**(状態)から**次のデータのブロックを追加**して**ハッシュ化**します。
|
||
|
||
例えば、秘密が「secret」でデータが「data」の場合、「secretdata」のMD5は6036708eba0d11f6ef52ad44e8b74d5bです。\
|
||
攻撃者が「append」という文字列を追加したい場合、彼は以下のことができます:
|
||
|
||
- 64の「A」のMD5を生成する
|
||
- 以前に初期化されたハッシュの状態を6036708eba0d11f6ef52ad44e8b74d5bに変更する
|
||
- 文字列「append」を追加する
|
||
- ハッシュを完了し、結果のハッシュは「secret」 + 「data」 + 「padding」 + 「append」の**有効なもの**になります
|
||
|
||
### **ツール**
|
||
|
||
{{#ref}}
|
||
https://github.com/iagox86/hash_extender
|
||
{{#endref}}
|
||
|
||
### 参考文献
|
||
|
||
この攻撃については[https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks](https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks)でよく説明されています。
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|