首页 > Web开发 > 详细

OWASP Top 10之文件上传漏洞简析(二)

时间:2015-07-22 01:26:07      阅读:451      评论:0      收藏:0      [点我收藏+]

0x01.

在问题一(详见上文)中,获取文件后缀名$file_type = $_FIELS[‘file‘][‘type‘],通过和白名单比较,假如相同,则取上传文件的后缀名。上文说过,MIME头欺骗问题(这里不考虑重命名文件名问题),如果上传数据包修改Content-type的类型,$file_type就获取修改后文件类型。

如:上传1.php=>burpsuite拦截修改数据包中的Content-Type为:image/jpg=>$file_type="image/jpg",$file_name="1.php"。

1.GIF89a文件头绕过,程序规定只能上传gif文件,由于获取文件类型也是通过$file_type获取,程序判断上传文件头部信息是否符合白名单类型。

伪代码:$filetype = fileHeaderRead($uploadFile);if $fileType ==‘GIF89a‘ echo ‘upload success‘;

修改上传webshell里的头部信息,由于GIF代码头部信息是GIF89a,所以webshell里代码:GIF89a<?php code?>

2.黑名单绕过

事先规定不允许上传的类型列表,asp|aspx|jsp|php|asa|....

加入上传shell.cer,或者大小写绕过,shell.Asp/shell.pHp....

3.后缀名解析漏洞

IIS6.0/Apache/Nginx(php-fpm)

常见shell.asp;.jpg,/shell.asp/shell.jpg,shell.php.xxx(apache从右往左解析,不识别,跳到下一个解析)

4.0x00截断

上传shell.php.jpg=>burpsuite拦截,在.php后加空格,在十六进制,对应的0x20修改为0x00(空),程序在处理这个文件名时,直接丢弃后面的.jpg,保存的文件名为shell.php

5.apache重写文件.htaccess。move_uploaded_file()函数,在移动文件时,如果文件存在,新文件直接覆盖旧文件。

OWASP Top 10之文件上传漏洞简析(二)

原文:http://www.cnblogs.com/developd/p/4666030.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!