码迷,mamicode.com
首页 > Web开发 > 详细

文件上传漏洞及其绕过

时间:2018-07-31 15:25:55      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:代码   支持   js验证   eva   symlink   文件名   检验   info   php5   

1.前端JS验证

基于本地验证文件是否符合要求:直接将JavaScript禁用。或者burp抓包后修改后缀,将php文件后缀现先改为jpg,burp抓包后后缀改回php。

2.MIME 类型验证

burp抓包将Content-type类型修改为image/jpeg,image/png等
技术分享图片

3.黑名单验证

①寻找没有过滤的类型:

phtml php3 php4 php5 PHP phtm

例如phtml php3 php4 php5 PHP phtm这些后缀名首先得让服务器支持这些解析为php脚本运行,httpd.conf配置文件中可以查看设置。

技术分享图片

从图中可以看到,我安装的Apache默认解析php和phtm的,如果黑名单并没有过滤phtm,就可以上传phtm的木马。

②大小写绕过

例如phP,黑名单上不存在的话就可以绕过,过滤严格的话一般会用个strtolower()把后缀全变为小写,那个时候就不行了。

4.检查文件内容

①getimagesize() 函数用于获取图像信息:

构造图片马,或者用winhex在图片后边添加上木马的内容,一个原理。

②检验关键字

例如<?php

<script language="php">eval($_POST[‘cmd‘]);</script>  

③检验文件大小

没啥用,一般上传的木马超不过那个大小。

5。00截断

计算机处理文件遇到0x00(代表NULL)则会自动截断后边的内容,而较低版本的php就会因为这个出现漏洞。
一般分为两种那个情况:

①可以自己构造上传路径。

burp抓包在上传路径后边加上muma.php%00,然后将%00进行url编码(crtl+shift+u),(浏览器还要进行url解码,所以先编码后解码,保证原来的字符不变)上传。

②不知道上传路径:

文件名改为muma.php+.jpg,这个+ 其实就是个标识作用,改别的字符也行。burp抓包后,hex打开,将+的数值改为00,实际上代表就是0x00.
上传。不过00截断很旧了已经,现在基本找不到这种漏洞了。

6. .htaccess上传

Apache才有效的一个配置文件,直接配置Apache达到为所欲为的目的,默认开启。如果不开启,找到httpd.conf配置文件:
Options FollowSymLinks

AllowOverride None
改为:
Options FollowSymLinks

AllowOverride All
即完成了开启。

在有的时候黑名单过滤不严格,就会漏掉过滤.htaccess文件 。

技术分享图片

这段代码就是让以ma.jpg的文件以php文件执行。上传图片后,不管图片名字有没有被自动重命名,访问的图片的地址看最后会有服务器上图片的名字,然后用.htaccess进行配置即可。
也可以直接Addtype application/x-httpd-php .jpg.所有的jpg都会以php脚本运行。

7.白名单检测扩展名

最难绕过的方法。绕过方法请参考其他方法。

文件上传漏洞及其绕过

标签:代码   支持   js验证   eva   symlink   文件名   检验   info   php5   

原文地址:https://www.cnblogs.com/zaqzzz/p/9395409.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!