4.6 KiB
☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 YouTube 🎥
-
你在一家网络安全公司工作吗?想要在HackTricks中看到你的公司广告吗?或者想要获取PEASS的最新版本或下载HackTricks的PDF吗?请查看订阅计划!
-
发现我们的独家NFTs收藏品The PEASS Family
-
加入💬 Discord群组或电报群组,或者关注我在Twitter上的🐦@carlospolopm。
-
通过向hacktricks repo和hacktricks-cloud repo提交PR来分享你的黑客技巧。
攻击摘要
想象一个服务器正在通过附加一个秘密到一些已知的明文数据上并对该数据进行哈希来签名。如果你知道:
- 秘密的长度(这也可以从给定的长度范围中进行暴力破解)
- 明文数据
- 算法(且它对这种攻击是脆弱的)
- 填充是已知的
- 通常使用默认填充,所以如果满足其他3个要求,这个也是已知的
- 填充根据秘密+数据的长度而变化,这就是为什么需要秘密的长度
那么,一个攻击者就可以附加数据并为先前的数据+附加的数据生成一个有效的签名。
如何实现?
基本上,脆弱的算法通过首先哈希一个数据块,然后,从先前创建的哈希(状态)中,添加下一个数据块并对其进行哈希。
然后,想象一下秘密是"secret",数据是"data","secretdata"的MD5是6036708eba0d11f6ef52ad44e8b74d5b。
如果攻击者想要附加字符串"append",他可以:
- 生成64个"A"的MD5
- 将先前初始化的哈希状态更改为6036708eba0d11f6ef52ad44e8b74d5b
- 附加字符串"append"
- 完成哈希,生成的哈希将是**"secret" + "data" + "padding" + "append"**的有效哈希
工具
{% embed url="https://github.com/iagox86/hash_extender" %}
参考资料
你可以在https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks中找到对这种攻击的很好解释。
☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 YouTube 🎥
-
你在一家网络安全公司工作吗?想要在HackTricks中看到你的公司广告吗?或者想要获取PEASS的最新版本或下载HackTricks的PDF吗?请查看订阅计划!
-
发现我们的独家NFTs收藏品The PEASS Family
-
加入💬 Discord群组或电报群组,或者关注我在Twitter上的🐦@carlospolopm。
-
通过向hacktricks repo和hacktricks-cloud repo提交PR来分享你的黑客技巧。