WEB 漏洞-文件上传之后端黑白名单绕过

前言

文件上传常见验证

后缀名,类型,文件头等

后缀名:黑名单,白名单

黑名单:明确不允许上传的格式后缀

asp php jsp cgi war…

缺陷:在定义不完整的时候,可以使用其他格式达到绕过效果

白名单:明确可以上传的格式后缀

jpg png zip rar gif

相对于黑名单,验证会更安全一些

文件类型:MIME 信息(检测类型,不严谨,可以进行伪造)

Content-Type为MIME信息,通过这个信息来猜测你的文件是什么格式的,什么后缀(验证方式之一)

有时候我们可以通过改变其值,实现欺骗操作,从而成功绕过。

文件头:内容头信息(检测内容,不严谨,可以进行伪造)

对应详解:https://blog.csdn.net/chinabinlang/article/details/11797587?utm_source=blogxgwz3

简要上传表单代码分析解释

$_FILES函数详解:https://www.cnblogs.com/laijinquan/p/8682282.html

演示案例(基于代码分析)

uploadlabs 关卡分析

Pass-01(白名单)

方式一
  • 尝试上传php文件发现上传不了,对代码进行分析,发现验证代码时用前端js编写的

  • 这时候我们上传一个图片格式(内有后门代码),直接打开bp进行抓包操作,修改filename后缀,发现成功上传!

方式二
  • 通过f12将网页代码复制下来发现验证代码时用前端js编写的

  • 这时候我们在自己本地新建一个文件(存放我们的第一关,防止误删其他重要代码),在代码中我们将验证部分删掉,同时加上对应的提交位置

  • 进行上传操作,在对应文件看到php文件,成功上传!

Pass-02(MIME 信息验证)(白名单)

  • 我们先上传PHP文件,发现提示:文件类型不正确,请重新上传!

  • 通过分析代码,我们知道验证的地方是Content-Type这个地方,进行修改后成功将文件上传!

Pass-03(黑名单)(特殊解析后缀)

  • 我们先上传PHP文件,发现提示:不允许上传.asp,.aspx,.php,.jsp后缀文件!

  • 基础:trim函数详解

    ​ strrchr() 函数详解

  • 通过分析代码,我们知道过滤方式为截图这些,我们首先要把代码读懂,发现这里限制条件并没有包括过滤php5后缀(Apache能够解析php5,但前提是apache的httpd.conf中有如下配置代码, AddType application/x-httpd-php .php .phtml .phps .php5 .pht .php3 .txt)

  • 尝试修改下后缀名为php5,上传成功!

Pass-04(黑名单)(.htaccess解析)

  • 查看代码,我们对其进行分析,发现其过滤的文件后缀更多,但是没有过滤 .htaccess

  • 创建并上传.htaccess文件,文件内容为下面,然后上传带有shana的文件名(自定义),就会被解析成php

    <FilesMatch "shana">SetHandler application/x-httpd-php
    </FilesMatch>
    
    • 成功上传.htaccess文件和xshana.jpg文件

    • 成功访问,解析php代码成功!

Pass-05(黑名单)(大小写绕过)

  • 查看代码,我们对其进行分析,相对于前面少了这行代码

      $file_ext = strtolower($file_ext); //转换为小写
    
  • 过滤很充分,也过滤了.htaccess和.ini,但是没有将文件后缀名转换为小写,故大写绕过即可

Pass-06(黑名单)(空格绕过)

  • 查看代码,我们对其进行分析,相对于前面少了这行代码

    $file_ext = trim($file_ext); //收尾去空
    
  • 我们可以在文件名后缀最后面加上空格,来绕过黑名单的过滤。到服务器后,会强制将空格去除,从而在服务器上是正常的文件!

Pass-07(黑名单)(点绕过)

  • 查看代码,我们对其进行分析,相对于前面少了这行代码

    $file_name = deldot($file_name);//删除文件名末尾的点
    
  • 少了对点的过滤,因此直接在文件名后缀后面加上.即可实现上次

  • 上传到对应网站后,系统会强制将点去掉,所以在那边我们看到的文件是正常的格式(最后没有一个点)

Pass-08(白名单)(::DATA 绕过)

  • ::DATA

    php在 windows中如果文件名 + " : :DATA"之后的数据当成文件流处理,不会检测后缀名,且保持"::DATA"之后的数据当成文件流处理,不会检测后缀名,且保持" : :DATA"之后的数据当成文件流处理,不会检测后缀名,且保持"::DATA"之前的文件名,它的目的就是不检查后缀名(Windows文件流特性)

  • 查看代码,我们对其进行分析,相对于前面少了这行代码

  $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
  • 我们直接上传a.php,然后抓包进行修改(如下图),实现绕过!

Pass-09(黑名单)

  • 基础知识

    deldot函数

  • 查看代码,我们发现和之前的没有太大区别,这时候我们从代码进行入手,对代码进行分析

    获取对应文件名->设立黑名单数组->首位去空->删除末尾的点->截取.后面的字符(包括点)->转换成小写->去除字符串::$DATA->首位去空

  • 主要思路:我们可以通过在末尾加点、空格来实现上传脚本的操作!在这里我们使用bp进行抓包,对其进行修改。

    变化过程:

    1234.php.空格 . ——>1234.php.空格. ——>1234.php.空格——>1234.php.——>1234.php(window特性)

Pass-10(黑名单)

  • 查看代码,我们发现其中有句语句是将黑名单中后缀改成空格的语句,但这里只执行一次,我们以此为突破口

  • 主要思路:上传php文件,使用bp进行抓包,对其进行修改。将后缀改成pphphp即可

Pass-11(白名单)(%00截断)

  • 基础知识

    substr

    strrpos

  • %00和0x00的区别

    前者用于地址方面的(get和post提交数据的位置进行修改)(修改位置有所不同,详情看第11和12关),后者是用于文件命名(在filename位置进行修改)

  • 查看代码,进行对应分析

  • 使用bp进行抓包发现这两个地方好像有点关联,我们尝试在后面加上x,1.jpg都不行,我们尝试使用截断 …/upload/1.jpg%00 (get会自动解码),发现能够成功上传!

    • 分析

Pass-12(白名单)

  • 跟Pass-11的方法类似,不过这个是post提交,POST不会像GET那样对%00进行自动解码,post内容修改为下面画框的位置。因此,我们需要在burp中选中%00右击->url ->urldecode->go 即可。

最后感谢小迪师傅的视频!!

笔记来源视频:点击这里

2020小迪培训(第21天 WEB 漏洞-文件上传之后端黑白名单绕过)相关推荐

  1. 第21天-WEB漏洞-文件上传之后端黑白名单绕过

    思维导图 文件上传常见验证 后缀名,类型,文件头等 黑名单:明确不允许上传的格式后缀 如:$deny_ext = array('.asp','.aspx','.php','.jsp'); 不允许上传后 ...

  2. WEB漏洞-文件上传之后端黑白名单绕过

    WEB漏洞-文件上传之后端黑白名单绕过 文件上传常见验证:后缀名,类型,文件头 后缀名:黑名单,白名单 黑名单:asp php jsp aspx cgi war- 白名单: txt jpg zip r ...

  3. 22.WEB漏洞-文件上传之内容逻辑数组绕过与解析漏洞

    本文参考: https://www.cnblogs.com/zhengna/p/15624867.html 加上自己的实验笔记 知识点 文件头检测 图像文件信息判断 逻辑安全-二次渲染 逻辑安全-条件 ...

  4. 2020小迪培训(第20天WEB 漏洞-文件上传之基础及过滤方式)

    WEB 漏洞-文件上传之基础及过滤方式 前言 知识点 什么是文件上传漏洞? 有文件上传不一定存在漏洞 凡是存在文件上传的地方/功能的地方都可以进行文件上传漏洞测试 上传文件操作的代码的完整性.安全性, ...

  5. 第20篇:WEB漏洞~文件上传~基础及过滤方式

    目录 Q&A 1. 文件上传漏洞的类型 2. 案例 2.1. 常规文件上传地址的获取说明 2.2. ★不同格式下的文件类型后门测试 2.3. 配合解析漏洞下的文件类型后门测试 2.3. 本地文 ...

  6. WEB漏洞-文件上传基础

    小迪 参考笔记 https://www.bilibili.com/video/BV1JZ4y1c7ro?p=19 https://www.yuque.com/samxara/swro13/tqdn5k ...

  7. 上传文件白名单_十大常见web漏洞——文件上传漏洞

    漏洞介绍 在我们浏览网页时,文件上传是非常常见的,比如我们会上传头像.附件.视频等文件,文件上传漏洞通常由于网页代码中的文件上传路径变量过滤不严造成的,如果文件上传功能实现代码没有严格限制用户上传的文 ...

  8. 第20天-WEB漏洞-文件上传之基础及过滤方式

    思维导图 文件上传漏洞 1-什么是文件上传漏洞? 凡是存在文件上传的地方均有可能存在文件上传漏洞,关于上传文件操作的时候对方代码写的是否完整.是否安全,一旦疏忽了某个地方可能会造成文件上传漏洞. 2- ...

  9. 第三十二天学习笔记-web漏洞-文件上传的条件竞争、.htaccess文件与.user.ini文件使用前提、二次渲染

    目录 二次渲染原理 绕过方法 htaccess配置文件 .user.ini 二次渲染原理 在我们上传文件后,网站会对图片进行二次处理(格式.尺寸,保存,删除 要求等),服务器会把里面的内容进行替换更新 ...

最新文章

  1. 向服务器请求数据的五种技术
  2. 重启docker 服务命令
  3. Java instanceof运算符
  4. Nessus扫描器的使用
  5. Vscode Todo Tree插件
  6. mac Git本地服务器配置
  7. 你必须掌握的常用正则表达式大全
  8. html5 datepicker使用方法,WdatePicker.js时间日期插件的使用方法
  9. open jdk 证书 问题
  10. CJOJ 1070 【Uva】嵌套矩形(动态规划 图论)
  11. 系统性能测试实施流程
  12. 【稀饭】react native 实战系列教程之项目初始化
  13. 互联网公司的完整开发流程是怎样的?
  14. oracle dba_users,为什么dba_users里有的用户却总是select不出来
  15. 巨无霸Win8PE X64服务器维护专用,无垠PE组合WIN8PE ISO版v2017.09.23网络+维护版
  16. 为什么 MySQL 唯一索引会导致死锁,“有心杀贼,无力回天”?
  17. 数值计算与MATLAB微积分
  18. ofd转成html,如何把Word或者Excel文档转换为ofd格式?
  19. appemit使用mpvPlayer在谷歌chrome浏览器播放RTSP
  20. fiddle抓包详细教程

热门文章

  1. 全球及中国网络漫画行业发展前景及未来趋势调研报告2021年版
  2. Stata:如何处理固定效应模型中的单期数据-xtfesing
  3. 空调主板电路设计特点
  4. break语句的题目
  5. EditText的getText()方法
  6. Metis异常检测算法源码概要
  7. 中国平安增持华夏幸福5.69%股权
  8. ROS2入门教程—理解话题(Topic)
  9. 数字IC所用软件及IP分类
  10. android+捕获google账户+cancel按钮,MVVM: 这是一个android MVVM 框架,基于谷歌dataBinding技术实现...