zoukankan      html  css  js  c++  java
  • 文件上传漏洞及其绕过

    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.白名单检测扩展名

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

    8.双写绕过

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

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

  • 相关阅读:
    Python是如何进行内存管理的?
    scrapy利用set()对数据进行去重
    python快速抓取新闻标题及内容
    python爬虫第三方库
    Spring使用@Scheduled定时调度
    redis启动失败
    视图系统
    路由系统
    Django框架 part 2
    Django框架
  • 原文地址:https://www.cnblogs.com/zaqzzz/p/9395409.html
Copyright © 2011-2022 走看看