zoukankan      html  css  js  c++  java
  • 文件上传

    文件上传

    概述

    因为业务功能需求,很多web站点都有文件上传的接口,如:

    1. 注册上传头像(如jpg,png,gif等)
    2. 上传文件附件

    文件上传本身没有问题关键在于文件上传后服务器怎么处理、解释文件。

    要能利用有几个要素

    1. 文件能被访问(可配合php文件解析漏洞)
    2. 文件能被当作脚本执行

    上传和绕过

    客户端

    • javascript校验(一般只校验后缀名)

    服务端

    • 文件头content-type字段校验(image/gif)
    • 文件内容头校验(GIF89a)
    • 后缀名黑名单校验
    • 后缀名白名单校验

    PUT方法

    当WebDAV开启PUT,MOVE,COPY,DELETE方法时,攻击者就可以向服务器上传危险脚本文件。使用OPTIONS探测服务器支持的http方法,如果支持PUT,就进行上传脚本文件,在通过MOVE或COPY方法改名。当开启DELETE时还可以删除文件。

    客户端校验

    JS通过验证上传文件的扩展名来判定是否符合上传行为

    通过修改js代码绕过验证,或之间通过burp抓包改字段,绕过js验证

    服务器端校验

    文件头content-type字段校验

    绕过方式

    使用Burp截取上传数据包,修改Content-Type的值,改为image/gif即可成功绕过上传webshell

    服务端文件扩展名检测

    检测扩展名发生在存储文件之前,然后保存,也就是说保存的文件扩展名一定,只能通过web容器等漏洞来欺骗http服务器,让他执行这个文件,即使他的扩展名不应当被执行。

    1. Apache的.htaccess文件上传解析漏洞
    2. IIS6.0解析漏洞:(Windows2003)目录路径检测解析绕过上传漏洞、分号解析、畸形文件名解析
    3. ngnix解析漏洞

    参考

    http://thief.one/2016/09/21/服务器解析漏洞/

    https://paper.seebug.org/560/#_17

    https://www.secpulse.com/archives/78800.html

    白帽子讲web安全

    黑白名单绕过

    1. 文件名大小写绕过:用像 AsP,pHp 之类的文件名绕过黑名单检测
    2. 名单列表绕过:用黑名单里没有的名单进行攻击,比如黑名单里没有 asa 或 cer 之类

    白名单绕过

    1. 0x00 截断绕过:用像 test.asp%00.jpg 的方式进行截断。

    如果上传是程序员自己写的可以尝试上面的,如果是编辑器的搜一下历史漏洞。

    防御

    1. 存储与web服务器分离
    2. 白名单文件类型检测
    3. 随机生成文件名不暴露在前端
  • 相关阅读:
    开发工具 编程风格
    WinServer2003 Computer Browser服务每隔一段时间自动关闭问题解决方法
    VSS 无法与服务器建立连接 以及与服务器断开连接
    VSS 部署
    db2 服务器启动项目
    Sublime Text 2 编辑器实用技巧
    WdatePicker日历控件使用方法
    02.微博账号注册
    01.微博三方登录原理讲解
    3.celery发送短信接口
  • 原文地址:https://www.cnblogs.com/wan-xiang/p/11563709.html
Copyright © 2011-2022 走看看