网络安全笔记--文件上传1(文件上传基础、常见后端验证、黑名单、白名单、后端绕过方式)
1. 基础
1.1 初识文件上传漏洞
文件上传漏洞是一种非常严重的漏洞,如果Web没有对用户上传的文件进行有效地过滤,若有不法分子上传恶意脚本,就有可能获取执行服务端命令的能力,严重影响服务器安全。
文件上传漏洞如何查找和判断呢?
黑盒中,可以通过扫描获取上传、或者查找后台系统上传以及会员中心上传等找到上传入口
白盒中,通过分析源代码查找有没有文件上传功能以及上传漏洞
接下来判断文件上传的类型,并选择对应的方法进行测试
1.2 常规文件上传地址获取
WebPathBrute下载
- 搜索upload.php的页面,在页面中找到上传入口
- 用扫描工具进行扫描
1.3 配合解析漏洞下的文件类型后门测试
解析漏洞
- IIS6/7.X
- Apache
- Nginx
Nginx解析漏洞复现
- 使用vulhub启动漏洞环境
路径:
/root/vulhub-master/nginx/nginx_parsing_vulnerability
执行docker-compose up -d启动容器
打开网址:
选取一张图片,打开并写入<?php phpinfo();?>,如下:
上传并打开:
输入/.php后回车,代码执行:
1.4 本地文件上传漏洞靶场环境测试
测试环境:upload-labs靶场
upload-labs下载
测试思路:js代码过滤非图像文件,因此下载html文件,删除其中关于过滤的js代码,再次进行上传操作。
上传成功!
1.5 CVE编号文件上传漏洞测试
- 使用vulhub启动漏洞环境
路径:
/root/vulhub-master/weblogic/CVE-2018-2894
查看密码:
docker-compose logs | grep password
打开网站,并登录,点击base_domain的配置,在“高级”中开启“启用 Web 服务测试页”选项:
访问http://ip:7001/ws_utc/config.do,设置Work Home Dir为
/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css
点击安全,增加,然后上传webshell
获取提交后系统返回的时间戳:
访问:
http://xxx:7001/ws_utc/css/config/keystore/[时间戳]_[文件名]
上传的jsp文件被执行!
2. 后端绕过
2.1 常见验证
- 后缀名: 黑名单、白名单
- 文件类型: MIME信息
- 文件头: 内容头信息
黑名单:明确不让上传的格式后缀,如jsp、asp、war等
白名单:明确可以上传的格式后缀,如jpg、zip、gif等
2.2 黑名单
2.2.1 MIME绕过
upload-labs : Pass-02
打开BurpSuit工具进行抓包,在网页中选择文件,点击上传后,BurpSuit抓到包,说明文件过滤功能应该在服务端。
方法: 修改Content-Type数据,改为:image/jpeg
点击Forward按钮进行提交,上传成功!
打开目录,可以看到刚刚上传的文件。
2.2.2 黑名单绕过
upload-labs : Pass-03
查看题目源码,发现这是一个黑名单验证,黑名单不允许上传.asp, .aspx, .php, .jsp后缀的文件,但可以上传.phtml、 .php3 .php5、phps等等。
本节刚开始讲过,黑名单是规定不允许上传的文件,因此我们可以找其它后缀的文件,这里我们上传一个.php5文件。
上传成功!
输入上传的文件地址,回车后,文件执行:
2.2.3 大小写绕过
upload-labs : Pass-06
看第六关的代码可以看出来,这一关没有强制小写转换,因此可以考虑大小写绕过的方式:
执行成功!
2.2.4 空格绕过
upload-labs : Pass-07
对比前面关的代码,发现本关少了“首尾去空”代码
因此,可以考虑通过空格绕过,通过抓包工具抓取数据包,在文件名后缀上加空格,以此绕过后端检测:
拖动图片,执行php代码:
2.2.5 点绕过
upload-labs : Pass-08
查看源码,发现没有对后缀名末尾的点进行处理:
因此,可以考虑通过空格绕过,通过抓包工具抓取数据包,在文件名后缀上加.,以此绕过后端检测:
执行成功!
2.2.6 ::$DATA绕过
upload-labs : Pass-09
查看源码,发现缺少了过滤后缀名::$DATA的源码:
文件名+::$DATA 会把::$DATA之后的数据当成文件流处理。不会检测后缀名,且会保持::$DATA之前的文件名
拖动图片,跳转到代码执行页面:
执行成功!
2.2.7 文件后缀点、空格绕过
upload-labs : Pass-10
查看源代码,发现会过滤空格和点,但是只过滤一次,因此可以写两个空格和点,这样代码只会过滤一个空格和点,以此成功绕过
成功绕过!
2.2.5 双写绕过
upload-labs : Pass-11
通过查看代码得知,所有在黑名单里的代码会被替换成“”,但是与上关一样,它只替换以此,因此,可以将后缀双写:
2.3 白名单
2.3.1 GET方式%00截断
upload-labs : Pass-12
查看源代码如下:
其原理在于:%00后面的字符会被截断,如:
…/upload/12.php%00128ab385fdac28a9.jpg
128ab385fdac28a9.jpg会被%00截断,最后系统保留的是:…/upload/12.php
【注意:此关测试时需要低版本的的php,亲测php5.2.17可用】
2.3.2 POST方式%00截断
upload-labs : Pass-13
与上一关思路一样,不同的是本关的提交方式为POST,在数据包中按上关在POST数据中添加即可
添加%00时要手动解码,因为get会自动将%00解码,而在POST不会解码,需要自己手动解码
网络安全笔记--文件上传1(文件上传基础、常见后端验证、黑名单、白名单、后端绕过方式)相关推荐
- 文件上传后端黑名单白名单绕过
大家好! 我是小黄,很高兴又跟大家见面啦 ! 拒绝水文,从我做起 !!!! 未经允许,禁止转载 ,违者必究!!!! 本实验仅适用于学习和测试 ,严禁违法操作 ! ! ! 今天更新的是: 文件上传后端黑 ...
- 文件上传/JS/MIME/黑名单/白名单/htaccess/00截断详解篇[代码审计]
文件上传漏洞定义 文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力,这种攻击方式是最为直接和有效的,"文件上传"本身没有问题,有问题的是 ...
- 文件上传 黑名单白名单绕过(上)
前言 文件上传常见验证: 后缀名:类型,文件头 后缀名:黑名单,白名单 文件类型:MIME信息 文件头:内容信息 php与html代码混编 $_FILES[表单上传name]['name'] < ...
- 网络安全笔记——第十二天:Linux文件和目录操作命令(一)——文件操作
第十二天笔记 ls命令 ls命令参数 文件操作 创建文件 touch命令 复制文件 cp命令 连接文件 ln命令 重命名文件 mv命令 删除文件 rm命令 告别 ls命令 作用:查看当前目录下的文件和 ...
- 网络安全笔记——第十二天:Linux文件和目录操作命令(二)——目录操作
第十二天笔记 目录操作 创建目录 mkdir命令 删除文件 rmdir命令 rm命令 目录操作 创建目录 mkdir命令 在Linux中,有些命令(比如 cp 命令)对文件和目录都有效,而有些只对目录 ...
- 第二天学习笔记:(MDN HTML学习、web安全策略与常见攻击、语义化)
一:Web入门 1:web文件命名 在文件名中应使用连字符(-).搜索引擎把连字符当作一个词的分隔符, 但不会以这种方式处理下划线. 养成在文件夹和文件名中使用小写,并且使用短横线而不是空格来分隔的习 ...
- web漏洞“小迪安全课堂笔记”文件操作安全,文件上传
文件上传小迪安全笔记 思维导图 利用思路 什么是文件上传漏洞? 文件上传漏洞有哪些危害? 文件上传漏洞如何查找及判断? 文件上传漏洞有哪些需要注意的地方? 关于文件上传漏洞在实际应用中的说明? 案例 ...
- 架构探险笔记10-框架优化之文件上传
确定文件上传使用场景 通常情况下,我们可以通过一个form(表单)来上传文件,就以下面的"创建客户"为例来说明(对应的文件名是customer_create.jsp),需要提供一个 ...
- 阿里云使用笔记-Lrzsz上传下载文件-centos7
2019独角兽企业重金招聘Python工程师标准>>> 上传文件时提示: -bash: rz: command not found rz命令没找到? 执行sz,同样也没找到. 原来是 ...
最新文章
- Beam Search
- 文件流能转换格式吗_amr转换mp3格式文件
- Eclipse: “Update SVN cache” hangs and locks up
- atitit.词法分析的实现token attilax总结
- 一文讲解自动机器学习(AutoML)!
- 测试nb信号的软件_NB-IoT和LORA,谁才是真正的低功耗?从数据看真相
- C++ : STL常用算法: inner_product , sort ,itoa
- leetcode50. Pow(x, n)(快速幂)
- 【cocos2d-x从c++到js】12:回调函数1——按键回调
- Java零基础学习(三)封装继承多态
- iOS利用OpenCV 实现文字行区域提取的尝试
- 多个字段去重 多关联查
- SELinux permissive模式 设置
- html左侧树形图,Qunee for HTML5 - 中文 : 树形布局
- ADSL拨号工作原理
- 从远程服务器下载文件
- 简单了解cri,runtimes,CRI,shim
- 是 jsv 而不是 jsx:这可能是尤雨溪更想要的vue代码编写方式
- 超详细超快的免费图床设置教程
- 【论文简读】Diffusion Kernel Attention Network for Brain Disorder Classification用于脑疾病分类的扩散核注意力网络
热门文章
- 【医学图像处理】CT成像技术之CT设备
- 地球形状与重力场简述总结
- 《七哥说道》第十六章:程序员,江湖见
- 44个路由器知识要点
- 【C++基础入门】C++全栈体系(一)
- pyqt5中利用搜索框和按钮,搜索表中内容
- python自动生成word报表之使用win32com插入自带可编辑的图表
- 机器学习、深度学习、神经网络学习资料集合(开发必备)
- 论文理解:“Designing and training of a dual CNN for image denoising“
- 你不可不知的《哈利波特》秘密(五)