24、文件上传漏洞

文件上传漏洞原理

大部分的网站和应用系统都有上传功能,而程序员在开发文件上传功能时,没有对上传的文件做合理严谨的过滤,导致用户可以利用此功能。上传一个与网站脚本语言相对应的恶意代码动态脚本,例如(jsp、asp、php、aspx文件后缀)到服务器上,通过访问这些恶意脚本中代码,进一步影响服务器安全。

文件上传检测方法

客户端校验

​ 一般是在网页中写一段JS脚本,用JS去检测,校验上传文件名的后缀名,有白名单和黑名单

判断方法:

​ 在浏览加载文件,但还未点击上传按钮时便弹出对话框,内容如:只允许上传.jpg/.jpeg/.png后缀名的文件,而此时并没有发送数据包,所以可以通过抓包来 判断,如果弹出不准上传,但是没有抓到数据包,那么就是前端验证

**注意:**前端验证非常不可靠,传正常文件改数据包就可以绕过,甚至关闭JS都可以尝试绕过

服务端检测

常见手段:

  • 检查Content-Type(内容类型)
  • 检查后缀(检查后缀是主流)
  • 检查文件名头

文件上传程流程

文件上传流程:

​ 网页上传 -> 目标服务器的缓存 -> 移动到开发写好的地址 -> 重命名(开发决定命名方式)

​ 1、先上传后检测

​ 2、先检测后上传

文件上传绕过方法

前端验证绕过

Content-Type方式绕过

黑名单绕过

  • 利用php、asp等脚本的别名绕过
  • .htaccess文件绕过
  • 大小写绕过
  • 文件后缀(空)绕过
  • 文件后缀(点)饶过【windows有一个特性,会自动去掉后缀名最后的】
  • :: D A T A ( W i n d o w s 文 件 流 绕 过 ) 【 利 用 w i n d o w s 特 性 , 可 在 后 缀 名 中 加 ” : : DATA(Windows文件流绕过)【利用windows特性,可在后缀名中加” :: DATAWindowswindows::DATA”绕过】
  • 构造文件后缀绕过
  • 双写饶过

白名单绕过

  • %00截断(GET型和POST型)
  • 图片马(配合解析漏洞)
  • 二次渲染饶过
  • 条件竞争

解析漏洞

Windows自带的中间件:

  • Windows server 2003 ==>IIS6.0
  • Windows server 2008 ==>IIS7.0-7.5
  • 注意:有些网站是混合的,既可以上传PHP又可以上传ASP

IIS6.0解析漏洞

1、

  • IIS6.0==>1.asp;.jpg==>00截断的变形
  • 检测时会以最后一个.去判断,为jpg
  • 中间件解析时会以.asp解析
  • 将aspshell.jpg重命名为shell.asp;1.jpg进行上传

2、

  • a.asp/123.jpg==>会不会是个目录?
  • 当中间件IIS6.0遇到a.asp/ 时 会把a.asp/ 下的所有内容当作asp文件执行
  • asp站点 IIS6.0
  • 一般来说aspx的站点会兼容asp

PHP CGI解析漏洞

  • PHP和中间件Nginx交互时,会在本地开一个9000端口,PHP和Nginx通信全走9000端口
  • 例如:
    www.xx.com/phpinfo.jpg/1.php
  • 当中间件访问1.php 会认为它是一个PHP文件,当1.php不存在时,会自动跳转至上一级phpinfo.jpg,会把phpinfo.jpg误当作php文件去执行

防范措施

客户端

不在前端使用JS限制策略

通过服务端对上传文件进行限制

  • 进行多条件组合检查:如文件的大小、路径、扩展名、文件类型、文件完整性
  • 对上传的文件在服务器上存储时进行重命名
  • 对服务端上传文件的目录进行权限控制,限制执行权限带来的危害
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值