@1kbfree
2018-04-19T00:39:20.000000Z
字数 1213
阅读 1157
渗透
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>