网络安全从入门到精通(第八章-2)文件上传漏洞 —— 解析、验证、伪造(二)

每日一句:
		没有绝对安全的机制
本文内容:
			~%00截断和00截断
			~实战注意
			~条件竞争

一、%00截断和00截断

	1,白名单比黑名单机制安全了太多,但是也不是绝对安全
	2,%00是干嘛的
			在说这的作用之前,先说一下服务器保存机制(其中的一种)
			用户上传图片 -> 上传到临时目录 -> php移动重命名
				%00就是再移动重命名的时候,动手脚
			比如,我们上传木马命名为:1.php%00.jpg,当程序读取到
			%00 他就认为到这结束了,于是保存为1.php
		
		注意:这也是由php版本限制的,高版本貌似修复了此bug
			
			%00是url编码后的,实际上是构造ASCII码值的0

二、实战注意

	1,上传文件漏洞,不能仅仅靠眼睛去判断,最好是用burp
	2,burp修改可以在Hex那修改,改为00
	3,图片马 尽量做成gif图片马,而不是jpg
			~基本不会被渲染影响,渲染影响只会造成gif的部分影响,看情况插马
			~如何防御:二次渲染即可
			~上传成功图片马必须配合文件包含使用

三、条件竞争

	1,服务器验证上传文件的两种形式:
			~先上传后验证
			~先验证后上传
	2,这个知识点就是讲到,利用并发进程,在未删除之前,抢先一步访问这个文件
		简单的说:
					服务器删除文件需要时间--->	假设0.01s
					100个线程不间断得上传的文件 --->
					100个线程不间断得访问的文件 --->
						有的访问到文件 <--> 执行 <-> 占用(执行速度也很快)
						当比删除速度快,就访问成功了(有概率,还得等几分钟)
		代码:
			<?php $a = '<?php @eval($_REQUEST[\'a\'])?>';file_put_contents('1.php',$a)?>
		
		适用条件:先上传后验证
		解决方法:发现较大线程访问,直接ban掉IP
	
	3,具体操作步骤:
		~上传正常图片
		~看看图片保存位置
		~多线程上传图片马,(burp爆破模块)
		~上传图片马的同时,多线程访问,(burp爆破模块)
		~等待。。。
		
		原理容易理解,步骤较为繁琐,还有点看脸的感觉。
原创文章 61 获赞 13 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43970718/article/details/104265700