java 文件上传漏洞_文件上传漏洞(File Upload)
简介
File Upload,即文件上传漏洞,通常是由于对用户上传文件的类型、内容没有进行严格的过滤、检查,使得攻击者可以通过上传木马,病毒,恶意脚本等获取服务器的webshell权限,并进而攻击控制服务器,因此文件上传漏洞带来的危害常常是毁灭性的。简单点说,就是用户直接或者通过各种绕过方式将webshell上传到服务器中进而执行利用。例如,如果你的服务器为php环境,用户上传了一个php一句话木马,并通过菜刀连接获取webshell,就可能对你的服务器文件进行篡改甚至执行命令。
文件上传校验方法
客户端javascript校验(一般只校验后缀名)
当客户端选择文件点击上传的时候,客户端还没有向服务器发送任何消息,前端的 js 脚本就对文件的扩展名进行检测来判断是否是可以上传的类型
服务端校验
文件头content-type字段校验 后端通过对上传文件的MIME类型进行黑白名单检测过滤
文件内容头校验
不同的文件都有不同的文件头,文件头就是为了描述一个文件的一些重要的属性,它告诉了打开并处理该文件的程序这些属性。有些上传接口会检测你上传的文件头信息以此来判断是否为正真的文件类型,比如 jpg 格式图片头部是 JFIF ,gif头部是GIF89a,png头部是%PNG。
校验文件大小
一些上传接口通过函数比如 getimagesize() 函数检测你上传的图片的大小是否是正常的图片大小,防止上传一句话木马。
后缀名黑名单校验
后缀名白名单校验
自定义正则校验
WAF设备校验
(根据不同的WAF产品而定)
绕过姿势
1)客户端校验
先将所上传文件扩展名改为符合脚本检测规范的拓展名,在上传时通过burpsuite抓包,将数据包中文件的拓展名还为原来的,以达到绕过的目的
在本地浏览器中直接禁用JS
2)文件头content-type字段校验
使用burpsurite或firebug等篡改http header中Content-Type的内容,即将Content-Type: application/php改为其他web程序允许的类型,如Content-Type: image/jpg,Content-Type: image/png,Content-Type: text/plain。
常见MIME类型:
text/plain(纯文本)
text/html(HTML文档)
text/javascript(js代码)
application/xhtml+xml(XHTML文档)
image/gif(GIF图像)
image/jpeg(JPEG图像)
image/png(PNG图像)
video/mpeg(MPEG动画)
application/octet-stream(二进制数据)
application/pdf(PDF文档)
application/(编程语言) 该种语言的代码
application/msword(Microsoft Word文件)
message/rfc822(RFC 822形式)
multipart/alternative(HTML邮件的HTML形式和纯文本形式,相同内容使用不同形式表示)
application/x-www-form-urlencoded(POST方法提交的表单)
multipart/form-data(POST提交时伴随文件上传的表单)
3)文件内容头校验
在上传的脚本的头部加上相应的文件头字节(php引擎会将 <?之前的内容当作html文本 ,不解释而跳过之,后面的代码仍然能够得到执行)
附一张各种格式文件内容头表
找一个符合上传过滤类型的文件与脚本文件合并制作图片木马,后将新文件上传,再结合文件包含漏洞getshell
4)校验文件大小
在上传数据里不断填充垃圾数据或制作图片木马进行绕过。
5)黑名单校验文件后缀名
寻找遗漏文件类型绕过
6)其他绕过方法
00截断
后缀名大小写绕过
条件竞争
解析漏洞
总结:上传绕过方法要灵活运用,不能死板,可以多种方法结合以达到上传效果
实验
实验环境:phpstudy2016
靶机:DVWA file upload HIGH安全级别
源码
可知,此等级采用了白名单过滤,只允许后缀名为jpg,jpeg或png格式的文件上传,并且文件大小要小于100000字节。
在cmd中用copy命令生成图片木马
发现一句话木马一插入图片尾部
上传成功
可见文件位于C:\phpstudy\WWW\DVWA\hackable\uploads目录下
尝试用菜刀连接
发现出现错误,因为木马被当作图片解析而不被当作php解析
此时可利用文件包含漏洞
利用DVWA的File Inclusion漏洞来将图片解析为php
构造url
连接发现错误,这是为DVWA需要登陆
可以右键点击刚添加的shell,选择浏览网址,在菜刀自带的浏览器中登陆DVWA将安全等级设为high及以下.
然后就可以成功连接.
防护
1.文件上传的目录设置为不可执行
只要web容器无法解析该目录下面的文件,即使攻击者上传了脚本文件,服务器本身也不会受到影响,因此这一点至关重要。
2.判断文件类型
在判断文件类型时,可以结合使用MIME Type、后缀检查等方式。在文件类型检查中,强烈推荐白名单方式,黑名单的方式已经无数次被证明是不可靠的。此外,对于图片的处理,可以使用压缩函数或者resize函数,在处理图片的同时破坏图片中可能包含的HTML代码。
3.使用随机数改写文件名和文件路径
文件上传如果要执行代码,则需要用户能够访问到这个文件。在某些环境中,用户能上传,但不能访问。如果应用了随机数改写了文件名和路径,将极大地增加攻击的成本。再来就是像shell.php.rar.rar和crossdomain.xml这种文件,都将因为重命名而无法攻击。
4.单独设置文件服务器的域名
由于浏览器同源策略的关系,一系列客户端攻击将失效,比如上传crossdomain.xml、上传包含Javascript的XSS利用等问题将得到解决。
java 文件上传漏洞_文件上传漏洞(File Upload)相关推荐
- java 文件上传漏洞_文件上传漏洞(绕过姿势)
文件上传漏洞可以说是日常渗透测试用得最多的一个漏洞,因为用它获得服务器权限最快最直接.但是想真正把这个漏洞利用好却不那么容易,其中有很多技巧,也有很多需要掌握的知识.俗话说,知己知彼方能百战不殆,因此 ...
- nginx 上传文件漏洞_文件上传及解析漏洞
注:本文仅供学习参考 文件上传定义: 文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行.这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等. 这种攻击方式是最为直接和有效的, ...
- nginx 上传文件漏洞_文件上传漏洞小结
1 概念 上传文件时,服务器端脚本语言,未对上传的文件进行严格的验证和过滤,就有可能上传恶意的脚本文件,从而控制整个网站,甚至是服务器. 2 危害 • 网站被控制,对文件增删改查,执行命令,链接数据库 ...
- php post 漏洞_文件包含上传漏洞目录遍历命令执行漏洞
制丨阿星 来源丨freebuff 作者丨Deutsh 文件上传漏洞: 一句话木马 一句话木马主要由两部分组成:执行函数与 接收被执行代码的变量 执行函数: eval() assert() create ...
- nginx 上传文件漏洞_文件上传漏洞,解析漏洞总结
文件上传漏洞.解析漏洞总结 1.文件上传漏洞是什么 文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力.常见场景是web服务器允许用户上传图片或者普通文本文件 ...
- 上传文件显示进度条_文件上传带进度条进阶-断点续传
说明 1. 把文件按大小1M分割成N份 2. 每次上传时,告诉后台大文件的md5.当前第几份(从0开始).总共几份 3. 并行上传,前端同时开启5个请求进行传输增加速度 4. 上传失败或出错后,继续上 ...
- bootstrapinput传参数_***文件上传控件bootstrap-fileinput的使用和参数配置说明
特别注意: 引入所需文件后页面刷新查看样式奇怪,浏览器提示错误等,可能是因为js.css文件的引用顺序问题,zh.js需要在fileinput.js后面引入.bootstrap最好在fileinput ...
- vue获取上传进度_文件上传与读取实时进度展示-demo(Vue)
监听进程的方法onprogress 1 )文件读取的progress事件属于FileReader对象. 2 )下载的progress事件属于XMLHttpRequest对象. 3 )上传的progre ...
- php 蓝奏网盘上传文件,蓝奏云_文件上传_API
~~~[api] post:https://api-lanzou.anyhulian.ml/v2/upload.php *content-type=multipart/form-data; bound ...
最新文章
- Unix/Linux环境C编程入门教程(27) 内存那些事儿
- 美团面试:如何设计一个注册中心?
- [转]php连接postgresql
- WinForm窗体重要属性与公共控件的重要属性
- 【Oracle】ORA-01157: cannot identify/lock data file 201 - see DBWR trace file
- 小白的python之路Linux部分10/2829
- 使用docker搭建zookeeper集群
- Atitit .h5文件上传
- 地震(earthquake)
- 查找文件命令find和文件内容查找命令grep
- 思科路由器及交换机基本配置
- Nginx配置基础-proxy_pass
- 2022年朝阳区科技创新课之“产品创新与成果转化”训练营活动圆满结束
- Android 亮度调节
- 容器安全:深度防御策略
- 游戏人物装备技能数据表怎么设计(整理)
- K3s+Rainbond默认集群添加server节点
- 【论文复现】中值滤波改进:Noise Adaptive Fuzzy Switching Median Filter(NAFSMF)
- pppoe指定服务器ip,PPPoE服务器相关配置
- python 鼠标连点脚本
热门文章
- 前端常考手写面试题汇总
- Laravel 5.1 文档攻略 —— Eloquent:模型关系
- Office 2011 2016 2019 For Mac 下载合集
- ICO图标制作-Axialis IconWorkshop
- 2021-07-12Git - git pull时遇到error: cannot lock ref ‘refs/remotes/origin/master‘: unable to resolve...
- Jdbc--2--jdbc的使用,数据库schema和catalog介绍
- 对称加密、非对称加密、数字证书
- 【单片机学习笔记】(33):直流无刷电机基础知识、六步换相控制原理、无刷电机驱动电路
- 福特翼虎1.5 北京买车 老家用车 注意事项
- Unity日历选择器ZCalendar下载