zoukankan      html  css  js  c++  java
  • 上传漏洞(二)

    绕过上传漏洞

    程序员在防止上传漏洞时可以分为以下两种:

    客户端检测:客户端使用Javascript检测,在文件未上传时,就对文件进行验证。

    服务端检测:服务端脚本一般会检测文件的MIME类型,检测文件扩展名是否合法,检测文件内容是否合法。

    一、客户端检测绕过

    (1)Firebug

    firebug是火狐浏览器的插件,可以轻松调试前端代码。新版本的火狐浏览器应该自带了这个插件。使用firebug删除javascript的验证事件,javascript验证就会失效。

    (2)中间人攻击

    使用burpsuit进行中间人攻击,上传前先把文件改为合法名字,用burpsuit拦截请求,此时已经通过了客户端检测,然后在burpsuit中将文件名修改掉,Content-Length也要修改为对应的长度。

    客户端验证是防止用户输入错误,减少服务器开销,服务器验证才可以真正防御攻击者。

    二、服务端检测

    (1)黑名单验证

    在黑名单中定义一些不安全的扩展名,服务器收到文件后,与黑名单中的扩展名进行匹配,若匹配到,则认为文件不合法。黑名单过滤是不安全的,因为很可能漏掉一些扩展名。而且还有其他绕过方式,如:大小写绕过,windows下可以用‘asp.‘绕过,‘.’会被忽略。

    (2)白名单验证

    与黑名单方式相反,上传的文件与白名单的扩展名进行匹配,若匹配到,则上传成功,否则,拒绝上传。

    白名单方式也不是绝对安全,如果配合一些解析漏洞,还是会有被攻击的可能,如IIS6.0会将1.asp;1.jpg当做JPG格式,但是会把它当做asp脚本来执行。

    (3)MIME验证

    MIME类型用来设定某种扩展名文件的打开方式,如GIF图片的MIME为image/gif,CSS文件的MIME类型为text/css。

    这种验证方式得绕过也很简单,拦截HTTP上传文件的请求,将Content-Type修改,即可绕过。

    (4)目录验证

    有些网站在上传文件时,如果上传的目录不存在,则会新建一个文件夹,这是很危险的,如果Web容器为IIS6.0,我上传到一个后缀为.asp的目录,这个目录不存在,就会新建,然后上传恶意文件到这个目录,就会造成攻击。

    (5)截断上传攻击

    %00截断,比如:username%00admin,则只会显示username,%00之后的字符串被截断了。

    我们上传一个1.asp php,然后用burpsuit拦截请求,点击HEX选项将文件名中的空格(16进制是20)改为00,即NULL,然后提交请求,上传的文件为1.asp,这样就造成了%00截断上传。

    修复上传漏洞

    修复上传漏洞也不难:

    ①查看Web容器版本,要及时更新,如果不需要,关闭危险配置项。

    ②使用白名单验证文件扩展名。

    ③接收文件,对文件进行重命名。

    ④严格控制文件上传路径,只要攻击者不知道文件路径,就很难造成攻击。

  • 相关阅读:
    Air-WIFI使用方法
    libeasy代码学习:一次简单的TCP请求处理流程
    log_pipe日志收集分析系统介绍
    asp.net 项目在 IE 11 下出现 “__doPostBack”未定义 的解决办法
    用命令行实现“一键休眠”
    C#几个经常用到的字符串的截取
    MYSQL存储过程怎么写
    如何用myeclipse和eclipse搭建安卓开发环境
    C#随机生成不重复字符串
    Inno setup 简单打包教程
  • 原文地址:https://www.cnblogs.com/whitehawk/p/9892506.html
Copyright © 2011-2022 走看看