文件上传漏洞及其绕过

1.前端JS验证

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

2.MIME 类型验证

burp抓包将Content-type类型修改为image/jpeg,image/png等
1397720-20180731134038877-1767308360.png

3.黑名单验证

①寻找没有过滤的类型:

phtml php3 php4 php5 PHP phtm

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

1397720-20180731134001941-876605062.png

从图中可以看到,我安装的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文件 。

1397720-20180731134200195-626668368.png

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

7.白名单检测扩展名

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

8.双写绕过

如果对文件的内容例如<?php用str_replace()使其变为空,就可以构造特殊的内容例如<?p<?phphp,过滤后就变为了<?php,达到了绕过的目的。

不过我觉得没啥用,他要是循环过滤那不就完了,写代码的时候肯定不会只给你过滤一次啊。

转载于:https://www.cnblogs.com/zaqzzz/p/9395409.html

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值