文件上传绕过总结
上传绕过总结
一、前端js绕过
我们上传1.php文件时,前端阻止上传弹窗,说明存在前端验证文件。
绕过:
- 修改前端js代码,利用f12可修改
- 把1.php改为1.jpg,再利用bp抓包,修改回1.php也可上传
二、黑白名单绕过,如果可以上传phtml php3 php4 php5 Php php (空格) php.,
pphphp
如果上传成功,测试是否能够解析不能就判断此方法不行。
三、针对文件类型绕过
如上有这种提示的话,说明程序对文件的类型content-type进行了判断
绕过:
- 上传1.php文件,进行bp抓包,
2、当然难一点的题不仅仅判断content-type,还判断了内容,文件头
判断文件头:上传1.php抓包在文件内容增加GIF89a
判断文件内容:上传图片马1.jpg,再修改回1.php
当然很多题目不会只判断一种,类型,文件头,内容都可混合使用。如果还不行那就是下面的这些情况
四、路径截断绕过与普通截断绕过
上传图片马(可以在图片马头加GIF89a),发现有保存路径
成功的条件:php版本小于5.3.4
php的magic_quotes_gpc=off
可能为路径截断绕过
1、Get:在上传路劲处../upload/1.php%00
2、Post:对../upload/1.php后进行16进制hex修改为00
3、还有一种非路径截断,上传图片马(视情况加GIF89a)
抓包修改为:1.php;jpg或者1.php%00.jpg或者1.php/00.jpg
五、win系统解析漏洞绕过(win服务器比较难报出来,一般是知道它的绝对路径特点,有盘符可能为win 二是利用错误文件报错如正确为index.php,改为错误的1index.php 或者index.xxxx,如果报错服务器中间件信息为iis那它是win服务器)
绕过:
1、上传1.php(或者图片马),抓包改为1.php.
2、上传1.php(或者图片马),抓包改为1.php::$DATA
3、上传1.php(或者图片马),抓包改为1.php:1.jpg
4、上传1.php(或者图片马),抓包改为1.php::$DATA…….
六、中间件解析漏洞之apache
同样利用报错我们知道中间件信息
绕过:利用了apache从右向左解析漏洞
1、上传图片马,bp抓包为1.php.xxxx.abc
2、上传.htaccess文件(内容:SetHandler application/x-httpd-php
)(如果允许上传),再上传图片马
Ps:如果能上传.htacess文件,但不能解析,可以试试下面
内容改为
<FilesMatch "filename">
SetHandler application/x-httpd-php
</FilesMatch>
Filename 为你想要上传的文件后缀名。如jpg
然后我们再上传1.jpg图片马即可。
七、中间件之iis6.0 6.5 版本解析漏洞
- 上传图片马,抓包修改为1.asp;.jpg或者%00 /00也可以
- 上传图片马抓包,修改后缀为.asa、.cer和.cdx等,当然不检测内容和类型是直接上传也可以
- 上传图片马,抓包发现有保存图片的路径,如../upload/image
我们修改路劲为../upload/image/1.asp
(然后就会存在../upload/image/1.asp/目录,在这个目录下任何文件当作asp文件解析) iis7.0也存在这漏洞
八、中间件解析漏洞之nginx
- 上传图片马,拿到图片马的路径,访问的时候加上/.php 就可作为php文件解析
如/upload/image/1.jpg/.php
九、中间件tomcat之后台文件上传
一般为肉口令进入tomcat后台,上传war包即可,shell.jsp-->shell.zip-->shell.war
十 、条件竞争漏洞
为特别漏洞,是文件上传进行验证的短暂时间内。
对传入的文件进行了临时保存,可能是一秒,也可能是0.几秒。
但在这短暂时间内php是可以解析的,如果解析的速度够快
绕过:
上传1.php文件,利用bp抓包,设置多线程,不断发包。
浏览器访问连接我们上传的1.php文件。
不断刷新,会在某瞬间,执行1.php成功。
十一、二次渲养
上传图片加载后,会对图片进行二次渲养,改变大部分图片源码,绕过为:对照上传后的图片与原图片放在winhex中对不,查看图片哪个数据块没有被改变。将木马代码放在没有改变的一块中,在不损坏图片的前提下,即可绕过上传
十二、编辑器解析漏洞
得根据版本利用。需要百度 google
上一篇: 文件上传-绕过白名单验证
下一篇: 关于A4J的oncomplete事件