从零开始的白帽子学习--stage1--常见漏洞类型介绍--part3--不安全的文件上传
- Q:什么是文件上传漏洞
- A:文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断 比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重命名后存储在指定的目录。 如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨,则攻击着可能会上传一些恶意的文件,比如一句话木马,从而导致后台服务器被webshell。所以,在设计文件上传功能时,一定要对传进来的文件进行严格的安全考虑。比如:验证文件类型、后缀名、大小,验证文件的上传方式,对文件进行一定复杂的重命名,不要暴露文件上传后的路径等。
- Q:文件上传时校验的姿势有哪些
- 客户端JavaScript校验客户端校验一般只检查文件的后缀名,有白名单和黑名单
- 服务端校验。服务端校验又有多种校验方式。如:文件头中content-type校验,文件内容头校验,后缀黑白名单检查,自定义正则表达式检查等
- WAF检查
Q:绕过校验的姿势有哪些
- 对于客户端校验来说,禁止浏览器使用js
- 对于服务端校验,大部分情况下通过burp抓包即可绕过。检查啥改啥就可以了
- 对于WAF检查,略
- 靶场实验
这里以pikachu靶场为例子来演示文件上传漏洞
此时,我们可以看到这里只支持上传图片文件,不允许上传其他类型的文件,那么我们先上传一下php文件尝试一下(文件内包含一句话木马),然后根据提示来确定他是什么类型的校验方式。

根据网站的报错提示,查看相应的元素代码之后发现这是一个js的弹窗。那么我们只需要禁用js就可以绕开这个检测。在禁用js刷新页面之后,发现1.php文件就可以正常上传了

切换一下校验的种类,切换到服务端校验,选择1.php文件,然后上传。在上传时使用burp抓包



网站提示上传的格式不对。然后我们上传一个正常的,能通过网站检测的文件,并使用burp抓包,对比前后两次抓包数据的区别。这里通过对比之后发现content-type有变化。

我们再次尝试上传1.php文件,并在抓包后修改 content-type 为 image/jpeg。然后将修改之后的数据包发送到burp的repeater中,模拟上传,看能否通过服务器验证

ok了,模拟上传成功了。那么就说明这样绕过检测的姿势是正确的。
由于本人学识有限,暂时就不实验其他的检测方式和检测方式,待日后补充
从零开始的白帽子学习--stage1--常见漏洞类型介绍--part3--不安全的文件上传的更多相关文章
- struts2视频学习笔记 15-17 (访问或添加request属性,文件上传)
课时15 访问或添加request/session/application属性 1.简单说 page指当前页面.在一个jsp页面里有效 2.request 指从http请求到服务器处理结束,返回响应的 ...
- java struts2入门学习实例--使用struts2快速实现多个文件上传
一.错误提示信息配置 昨天说到更改默认错误配置信息,我测试很多遍,一直都不对.下面贴出来,待以后有好方法了再补充吧. 首先新建一个properties文件,这里命名为testupload.proper ...
- Spring 4 官方文档学习(十一)Web MVC 框架之multipart(文件上传)支持
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-multipart 1.简 ...
- web安全之文件上传漏洞攻击与防范方法
一. 文件上传漏洞与WebShell的关系 文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行.这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等.这种攻击方式是最为直接和有效 ...
- WEB安全性测试之文件上传漏洞
1.漏洞描述:文件上传漏洞,是指可以利用WEB上传一些特定的文件包含特定代码如(<?php phpnfo;?> 可以用于读取服务器配置信息.上传成功后可以点击) 上传漏洞是指用户上传了一个 ...
- 7.CSRF攻击和文件上传漏洞攻击
一.CSRF攻击及防范措施 1.概念 请求来源于其他网站,请求并不是用户的意愿,而是伪造的请求,诱导用户发起的请求 2.场景 攻击者盗用了你的身份,以你的名义发送恶意请求.CSRF能够做的事情包括:以 ...
- CVE-2018-20129:DedeCMS V5.7 SP2前台文件上传漏洞
一.漏洞摘要 漏洞名称: DedeCMS V5.7 SP2前台文件上传漏洞上报日期: 2018-12-11漏洞发现者: 陈灿华产品首页: http://www.dedecms.com/软件链接: ht ...
- 1.5 webshell文件上传漏洞分析溯源(1~4)
webshell文件上传漏洞分析溯源(第一题) 我们先来看基础页面: 先上传1.php ----> ,好吧意料之中 上传1.png ----> 我们查看页面元素 -----> ...
- web文件上传漏洞
什么是文件上传漏洞? 指利用系统的对文件上传部分的控制不足或处理缺陷,上传可执行的动态脚本文件/webShell进行攻击行为. 原因 对于上传文件的后缀名(扩展名)没有做较为严格的限制 对于上传文件的 ...
随机推荐
- SpringBoot集成Druid实现监控
application.properties文件完整信息 #连接数据库 spring.datasource.driver-class-name=org.mariadb.jdbc.Driver spri ...
- java Timer和TimerTask(简单的使用)
Timer 是一个定时工具 TimerTask 是一个实现了Runnable接口抽象类,代表可以被Timer执行的任务 (1)Timer.schedule(TimerTask task,Date ti ...
- Anaconda 下 Jupyter 更改默认启动路径和默认浏览器
1.Jupyter 更改默认启动路径方法 输入jupyter notebook --generate-config 会生成jupyter_notebook_config.py 找到文件,并打开 将 # ...
- vs2015 远程调试web
1.找到vs2015远程调试器 针对服务器版本选择 X64 .X86,把文件夹复制到服务器 2.在服务器中运行:msvsmon.exe 选择 工具->选项,修改成 无身份验证,允许任何用户进行调 ...
- add(expr|ele|html|obj[,con]) 把与表达式匹配的元素添加到jQuery对象中。
add(expr|ele|html|obj[,con]) 概述 把与表达式匹配的元素添加到jQuery对象中.这个函数可以用于连接分别与两个表达式匹配的元素结果集. jQuery 1.4 中, .ad ...
- 数据结构实验之链表二:逆序建立链表(SDUT 2117)
题目链接 #include <bits/stdc++.h> using namespace std; struct node { int data; struct node *next; ...
- MySQL 5.7半同步复制技术
一.复制架构衍生史 在谈这个特性之前,我们先来看看MySQL的复制架构衍生史. 在2000年,MySQL 3.23.15版本引入了Replication.Replication作为一种准实时同步方式, ...
- 2017 ZSTU寒假排位赛 #7
题目链接:https://vjudge.net/contest/149498#overview. A题,水题,直接按照题意模拟一下即可. B题,我用的是线段树.大力用的差分标记(上次听zy说过,下次再 ...
- WebSSH2 界面ssh(转载)
工具:Virtual Machines14.1 系统环境:CentOS 7 64位 (2个) IP:192.168.163.138 IP:192.168.163.141 概述:在138系统中安装部 ...
- Leetcode题目169.求众数(简单)
题目描述: 给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. 示例 1: 输入: [3,2,3] ...