@1kbfree
        
        2018-04-18T16:39:20.000000Z
        字数 1213
        阅读 1378
    渗透
www.xxx.com/1.asp/1.txt会解析成asp文件来执行 
www.xxx.cin/1.asp;1.jpg也会解析成asp文件
在1.x和2.x中存在此漏洞
www.xxxx.com/1.php.name.it.hack会被解析成PHP文件执行(因为当Apache遇到不认识的扩展名的时候,会从后向前解析,直到碰到能解析的扩展名为止) 
Apache认识哪些扩展名可以在这而看/conf/mime.types
Nginx解析漏洞
www.xxx.com/1.jpg/1.php会成PHP文件来解析
黑名单和白名单验证绕过方式
白名单是设置能通过的用户,白名单以外的用户都不能通过。 
黑名单是设置不能通过的用户,黑名单以外的用户都能通过。
黑名单绕过:
一般人都会选择不允许这些后缀的文件上传: 
1. php 
2. jsp 
3. asp 
4. php5 
5. asa 
6. aspx
cre,这个后缀名可以当作ASP代码执行ASP、PHP这样的后缀文件,而此类的后缀文件在Window里依然会被Web容器解析 
.或者空格之类的,会被系统自动除去,可利用这个特性绕过黑名单限制。 
 
白名单绕过: 
可以利用前面说的解析漏洞。 
或者用Burp修改数据包。
MIME验证
MIME验证用来设定某扩展名文件的打开方式,浏览器会使用指定的程序打开,比如GIF图片的MIME是image/gif,PDF文件的MIME是application/pdf,详细的自行百度。
<?php/*** @Author: iamfree* @Date: 2018-04-18 13:47:03* @Last Modified by: iamfree* @Last Modified time: 2018-04-18 22:44:19*/if(isset($_POST['submit'])){if($_FILES['file']['type']=='image/png' or $_FILES['file']['type']=='image/jpeg' or $_FILES['file']['type']=='image/php'){ //这里对上传的文件的MIME类型进行了判断$name = '上传成功!上传的文件是:'.$_FILES['file']['name'].' ';$size = '文件大小是:'.$_FILES['file']['size'].' ';}else{$name = '抱歉!你上传的文件有误,请阻止你那肮脏的思想~';}}else{$name = "你没上传文件";}?><div class="jumbotron"><h3><?php echo @$name,@$size?> <small><a href="./index2.php">返回文件上传处</a></small></h3></div>
