iwebsec靶场 文件上传漏洞通关笔记3 Content-type过滤绕过

第03关 Content-type过滤绕过

1.打开靶场

iwebsec 靶场漏洞库iwebsechttp://iwebsec.com:81/upload/03.php靶场打开后效果如下所示

iwebsec靶场 文件上传漏洞通关笔记3 Content-type过滤绕过_第1张图片

 尝试上传info.php提示仅允许上传jpg,gif和png格式的文件

iwebsec靶场 文件上传漏洞通关笔记3 Content-type过滤绕过_第2张图片

2.content-type检测

在HTTP协议消息头中,使用Content-Type来表示请求和响应中的媒体类型信息。它用来告诉服务端如何处理请求的数据,以及告诉客户端(一般是浏览器)如何解析响应的数据。以上传图片为例,有如下标志:

JPEG图片标记:image/jpeg;
GIF图片标记:image/gif;
PNG图片标志:image/png;

3.源码分析

如下所示服务端的源码仅检查content-type类型,而不是检查后缀等其他信息,基于此我们在渗透时只需将报文发送到bp时,用bp将报文的content-type修改为图片即可。




	
		Content-Type过滤绕过
	
	

Content-Type过滤绕过

请上传PHP文件

上传文件:
* 1:超过了文件大小,在php.ini文件中设置
* 2:超过了文件的大小MAX_FILE_SIZE选项指定的值
* 3:文件只有部分被上传
* 4:没有文件被上传
* 5:上传文件大小为0 */ $error=$upfile["error"];//上传后系统返回的值 echo "================
"; echo "上传文件名称是:".$name."
"; echo "上传文件类型是:".$type."
"; echo "上传文件大小是:".$size."
"; echo "上传后系统返回的值是:".$error."
"; echo "上传文件的临时存放路径是:".$tmp_name."
"; echo "开始移动上传文件
"; //把上传的临时文件移动到up目录下面 move_uploaded_file($tmp_name,'up/'.$name); $destination="up/".$name; echo "================
"; echo "上传信息:
"; if($error==0){ echo "文件上传成功啦!"; echo "
图片预览:
"; echo ""; //echo " alt=\"图片预览:\r文件名:".$destination."\r上传时间:\">"; }elseif ($error==1){ echo "超过了文件大小,在php.ini文件中设置"; }elseif ($error==2){ echo "超过了文件的大小MAX_FILE_SIZE选项指定的值"; }elseif ($error==3){ echo "文件只有部分被上传"; }elseif ($error==4){ echo "没有文件被上传"; }else{ echo "上传文件大小为0"; } }else{ echo "请上传jpg,gif,png等格式的图片!"; } }

根据源码,需要将content-type修改为如下四种类型才可以绕过

Content-Type: image/jpeg
Content-Type: image/pjpeg
Content-Type: image/gif;
Content-Type: image/png;

4.上传脚本

bp开启抓包

iwebsec靶场 文件上传漏洞通关笔记3 Content-type过滤绕过_第3张图片

上传脚本

iwebsec靶场 文件上传漏洞通关笔记3 Content-type过滤绕过_第4张图片

bp拦截到报文后发送到repeater

iwebsec靶场 文件上传漏洞通关笔记3 Content-type过滤绕过_第5张图片
5.bp改包

如下所示,repeater中需要修改如下红框处

iwebsec靶场 文件上传漏洞通关笔记3 Content-type过滤绕过_第6张图片

(1)image/png方法

iwebsec靶场 文件上传漏洞通关笔记3 Content-type过滤绕过_第7张图片

(2)bp改包(image/jpeg)

image/jpeg方法

iwebsec靶场 文件上传漏洞通关笔记3 Content-type过滤绕过_第8张图片

(3) image/pjpeg方法

iwebsec靶场 文件上传漏洞通关笔记3 Content-type过滤绕过_第9张图片

(4)image/gif方法

iwebsec靶场 文件上传漏洞通关笔记3 Content-type过滤绕过_第10张图片

6.访问上传脚本

phpinfo()

 如上所示,渗透成功

你可能感兴趣的:(iwebsec靶场,php,开发语言)