可以直接上传Shell,导致服务器getshell

Web应用程序没有对上传文件的格式进行严格过滤 , 还有一部分是攻击者通过 Web服务器的解析漏洞来突破Web应用程序的防护;通常都会出现在,上传功能上

​ 没有解析漏洞的情况下,格式代码必须要和文件格式一直,否则无法正常解析运行,如果存在解析漏洞的情况下,格式代码可以和不同格式相互解析

​ 之后也会发出关于解析漏洞的文章!

可以针对文件名文件大小文件内容文件类型等进行防御

  1. 检查文件上传路径 ( 避免 0x00 截断、 IIS6.0 文件夹解析漏洞、目录遍历 )

  2. 文件扩展名检测 ( 避免服务器以非图片的文件格式解析文件 )

  3. 文件 MIME验证 ( 比如 GIF 图片 MIME为 image/gif,CSS 文件的 MIME为 text/css 等 ) 3. 文件内容检测 ( 避免图片中插入 webshell)

  4. 图片二次渲染 ( 最变态的上传漏洞防御方式 , 基本上完全避免了文件上传漏洞 )

  5. 文件重命名 ( 如随机字符串或时间戳等方式 , 防止攻击者得到 webshell 的路径 )

注意:若攻击者上传了shell之后,肯定会通过某刀剑进行连接,所以尽量不要暴露文件路径,并且设置访问权限,以进一步防御

  1. 文件头验证

  2. 文件类型验证

  3. 文件后缀验证

    1. 修改文件头,伪造文件属性
    2. 修改文件类型,伪造文件类型 MIME绕过
    3. 增加多重后缀,伪造文件后缀 命名绕过
    1. 复制js代码,创建本地文件删除相应验证代码后直接上传(无防盗链可用)

    2. %00 截断 shell.php%00.jpg => shell.php

      1561570879811

      上传成功之后仍然是图片格式

      1561571019578

      这时候需要抓包修改

      1561571165909

      1561571213255

      1561571221469

      • 注意:直接通过burp抓包修改,可能上传的文件还是shell.php%00.jpg
      • 需要通过修改%00的URL编码格式:
        • 选中%00 右键选中 URL
        • 点击 URL-decode
        • %00 乱码则可以上传

1561571285973

请选择要上传的文件:

版权声明:本文为r0ckysec原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/r0ckysec/p/11527474.html