Web安全基础学习:文件上传漏洞之后端后缀黑名单

理论基础

注:本靶场环境基于Python,以下内容根据PHP/Java/Python等WEB环境进行总结,部分内容可能不适用于本题。

  • 文件上传漏洞介绍

    文件上传漏洞,字如其意,就是可能出现在一切允许上传文件的功能点。

    它是指由于程序员未对上传的文件进行严格的验证和过滤,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。这种攻击方式是最为直接和有效的,“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。

  • 漏洞分类
    1. 前端绕过
    2. 后端绕过—后缀校验
    3. 后端绕过—黑白名单校验
    4. 后端绕过—文件类型校验
    5. 后端绕过—文件头检测
    6. 后端绕过—WAF绕过
    7. 其他绕过
  • 漏洞产生原因
    1. 服务器配置不当
    2. 文件上传过滤缺陷
    3. 服务器权限管理不当
    4. 文件和服务器隔离不当
    5. 上传功能开发缺陷
    6. 开源编辑器或上传组件存在漏洞
  • 文件上传漏洞利用条件
    1. 上传的文件能够被web容器解释执行
    2. 用户能够从web访问这个文件
    3. 上传的文件内容完整
  • 文件上传漏洞利用点
    1. 允许上传脚本语言文件且解析 ==> getshell
    2. 允许上传html ==> xss、csrf、登陆劫持…
    3. 允许上传压缩包 ==> 压缩包DOS、解压文件getshell
    4. 允许上传pdf ==> pdf xss
    5. 允许上传swf ==> swf xss
    6. 允许上传excel、docx ==> xxe
  • 测试流程

    图自:https://github.com/c0ny1/upload-labs/raw/master/doc/sum_up.png

    在这里插入图片描述

  • 上传绕过思路

    图自:https://github.com/c0ny1/upload-labs/blob/master/doc/mind-map.png

    在这里插入图片描述

  • 后端绕过之后缀替换

    后缀可替换(部分后缀为特定情况下可用)
    asp/aspxasa,asax,ascx,ashx,asmx,cer,aSp,aSpx,aSa,aSax,aScx,aShx,aSmx,cEr
    phpphp5,php4,php3,php2,pHp,pHp5,pHp4,pHp3,pHp2,
    jspjsp,jspa,jspx,jsw,jsv,jspf,jtml,jSp,jSpx,jSpa,jSw,jSv,jSpf
    htmlhtm,phtml,pht,Html,Htm,pHtml,HTML,jHtml
  • 后端绕过之Content-Type介绍

    文件类型Content-type
    超文本标记语言文本.html,.html text/html
    普通文本.txt text/plain
    RTF文本.txt text/plain
    GIF图形.gif image/gif
    JPEG图形.jpeg,.jpg image/jpeg
    au声音文件.au audio/basic
    MIDI音乐文件.mid,.midi audio/midi,audio/x-midi
    RealAudio音乐文件.ra, .ram audio/x-pn-realaudio
    MPEG文件.mpg,.mpeg video/mpeg
    AVI文件.avi video/x-msvideo
    GZIP文件.gz application/x-gzip
    TAR文件.tar application/x-tar
  • 后端绕过之文件头

    .jpg    Value = FF D8 FF E0 
    .gif    Value = 47 49 46 38 ==> GIF89a
    .png    Value = 89 50 4E 47
    .html    Value = 68 74 6D 6C 3E 10
    .xml    Value = 3C 3F 78 6D 6C
    
  • 漏洞防御
    1. 后缀白名单,只允许上传jpg、jpeg、png、gif
    2. 内容完整性检测
    3. 文件和服务器分离
    4. 文件名加密,不暴露文件路径
    5. 使用安全的上传框架、组件
    6. 使用WAF拦截

实践学习

漏洞环境以Pilot靶场为例:下载地址与部署教程

  1. 进入漏洞页面,发现只能上传图片;准备一个可造成XSS的HTML文件或PDF文件:

    • 例如在HTML文件中写入<img src=1 onerror=alert(1)>
  2. 通过F12找到上传检查的代码,发现并无限制。选择文件,抓包上传:

    l2-1

  3. 发现后端加入了文件类型判断,考虑进行绕过。

  4. 绕过方式1:尝试未被屏蔽的其他后缀替代,如html->htmphp->php5docx->doc

    l2-2

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  5. 绕过方式2:尝试使用大小写绕过,如html->Html

    l2-4

    l2-5

  6. 除此之外,还有一些绕过方式不适合本题(代码写法和Linux系统原因):双写绕过、后缀加.、后缀加空格或其他非法字符、::$DATA绕过、%00截断绕过等。

  • 18
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值