Mirror王宇阳 2019年10月28日
Web网站通常存在文件上传(例如:图片、文档、zip压缩文件^等)只要存在上传功能,就有可能会有上传漏洞的危机。和SQL注入漏洞相比较而言,上传漏洞更加危险,因为该漏洞可以直接上传一个WebShell到服务器上。
利用上传漏洞,通常需要结合Web容器(IIS、Nginx、Apache、Tomcat)的解析漏洞来让上传的漏洞得到实现
.asp
字符串的(目录下)均按照asp文件进行解析;例如:index.asp/
目录中的所有文件都会asp解析
当出现xx.asp
命名的文件名,访问目录下任意一个文件,均会送给asp.dll解析(执行asp脚本)
.asp;
字符,即使时jpg格式文件,IIS也会按照asp对文件进行解析
当文件名xx.asp;xx.jpg
,IIS6会将文件送给asp.dll解析(按照asp脚本解析);
请求时:IIS从左往右检查.
号,查询到;
或/
号则(内存)截断;如此执行后,IIS认识的就是xx.asp
.asa
.cer
.cdx
IIS6 同时默认解析前面三个文件后缀,都会给asp.dll解析
xx.php
会将xx.jpg/xx.php
解析为PHP文件
cgi.fi: x_pathinfo
设置为 0
IIS7的解析漏洞主要是由于PHP的配置不当导致的
Windows操作系统中,文件名不能以空格或“.”开头,也不能以空格或“.”结尾。当把一个文件命名为以空格或“.”开头或结尾时,会自动地去掉开头和结尾处的空格和“.”。利用此特性,也可能造成“文件解析漏洞”。
影响版本:0.5/0.6/<0.7.65/<0.8.37
xx.php
会将xx.jpg/xx.php
解析为PHP文件
空字节:xx.jpg%00.php
(部分版本中,Fast-CGI关闭下也会被执行)
cgi.fix_pathinfo
设置为 0 [关闭]
再Nginx配置中设置:当类似xx.jpg/xx.php
的URL访问时候,返回403;
if ( $fastcgi_script_name ~ ..*/.*php) { return 403 ; }
xxx.php.owf.zip
其中.owf
和.zip
文件后缀Apache不识别,直至判断.php
才会按照PHP解析文件
xx.php.xxx
类似的文件执行
<Files ~ "/.(php.|php3.)"> Order Allow,Deny Deny from all </Files>
\x0A
,不能是\x0D\x0A
,所以我们用hex功能在1.php后面添加一个\x0A
:
访问/1.php%0A
,即课成功getShell;
Content-Length
定义的长度要与实际相符)
Content-type
字段校验(MIME类型校验)
Content-type
字段显示文件的MIME类型,判断MIME类型可以对文件做简单的过滤
# 校验Content-type字段MIME类型 <?php if($_FILES['file']['type'] != 'image/jpeg'){ // 判断文件的MIME格式 echo "Sorry!文件上传格式错误 Error"; exit; } ?>
content-type
字段改为需要的MIME类型
<?php
if(isset($_POST['submit'])){
$name = $_FILES['file']['name'] ;
$type = $_FILES['file']['type'] ;
$tmp = "./image/";
}
file_array = new array('jpeg','png','jpg','gif');// 白名单
for ($i=0; $i < file_array.length; $i++) {
if (substr(strrchr($name, "."),1) == file_array[i]) {
if( $type == "image/gif" | $type == "image/jpeg" ){
move_uploaded_file($tmp, $name);
echo "图片上传成功……".$name;
exit;
}
}
}
?>
常见文本编辑器:FCKEditor、Ewebeditor、UEditor、KindEditor、XHditor;合俗称“富文本编辑器”
笔者接触文本编辑器不多,贡献一个不错的参考文章: https://blog.yuntest.org/jszy/stcs/91.html