• 文件上传验证


    文件上传的攻击方式

    一、JS检测绕过

    1、使用浏览器插件,删除检测文件后缀的js代码,然后上传文件即可绕过

    2、先把需要上传的文件后缀改成允许上传的格式,通过js校验,抓包把后缀名改为可执行文件的后缀上传实现绕过

    二、文件后缀绕过

    Apache的解析顺序是从右到左解析文件后缀的,如果最右侧的扩展名不可识别,继续往左判断,直到遇到可以解析的扩展名为止。

    比如:xxx.xls.xxx.xxx.xxx 因为后缀xxx不可以解析,所以向左解析后缀,最后解析出来是一个Excel表格

    看道哥那本书上写的是在1.x,2.x版本下有这个解析问题,现在使用的都是6,7甚至更高版本

    三、文件类型绕过

    如果服务器代码是通过Content-Type的值来判断文件的类型,那么就存在被绕过的可能。

    Content-Type的值是客户端传递的,是可以任意修改的。

    四、文件截断绕过

    %00代表结束符,有可能会把后边的字符删掉。

    http://www.xxx.xom/jieshu=111

    把111改为 1.php%00a.jpg,文件被保存到服务器时,%00会把“a.jpg”截断,保存到服务器的是1.php

    五、竞争条件攻击

    一些网站是先允许上传任意文件,然后检查上传文件是否包含特殊脚本,如果有则删除文件。这就存在上传和检验的时间差问题。

    可以事先写好 一句话,还没校验完成程序读取来内容就直接给我返回。

    六、文件内容绕过

    前256个字节是合规的,在后边加上可攻击脚本

    修复方案

    1、文件上传的目录设置为不可执行,去掉x

    2、判断文件类型,建议使用白名单的形式,对于图片的处理可以使用压缩函数或者resize函数,处理图片的同时破坏图片中可能包含的html代码

    3、使用随机数改写文件名和文件路径

    4、单独设置文件服务器域名(如果有条件),由于浏览器的同源策略一系列客户端攻击将失效。

      

  • 相关阅读:
    把本地的jar包安装到maven库中
    mybatis 查询
    freemarker
    python——线程相关
    【python-sql】sql操作时遇到的坑
    专项测试——移动app安装包检测
    【Android端 adb相关】adb相关总结
    for 语句
    Python2.x与3​​.x版本区别
    Python 运算符
  • 原文地址:https://www.cnblogs.com/hanxiaobei/p/9479402.html
Copyright © 2020-2023  润新知