文件上传

【安全】文件上传绕过技巧

纵然是瞬间 提交于 2019-11-28 18:50:01
1 文件任意上传漏洞 如果能够绕过正常的文件上传类型,上传恶意的webshell ,那么程序就存在任意文件上传漏洞。 2 常见上传过滤规则与绕过方式 页面javascript后缀效验,如判断是否以jpg结尾 绕过方式: 先提交符合规则的后缀(如jpg),然后通过burpsuite拦截进行后缀修改(如改为php) 服务端效验content-type(如image/jpeg) 绕过方式: 通过burpsuite抓包将content-type修改为符合规则的内容(如image/jpeg) 服务端文件内容头效验,判断文件内容是否以某些字符开头 绕过方式: 可以在Webshell头部,添加规则所需字符,如添加GIF标准头部字符,GIF89a<?php 服务端黑名单效验,即不允许某些页面文件上传,如php 绕过方式: 大小写绕过,如pHp,Jsp 黑名单不完整绕过,附,可解析扩展名列表: jsp jspx jspf asp asa cer aspx php php php3 php4 exe exee 服务端白名单效验,指定仅接受某些后缀的文件 绕过方式: 0x00截断,如t.php(0x00).jpg、t.php%00.jpg、路径/up/1.php(0x00),文件名1.jpg,/up/1.php(0x00)/1.jpg相当于上传了1.php(常见于CTF竞赛,修改上传路径为路径/1

文件上传漏洞——解析、验证、伪造(一)

与世无争的帅哥 提交于 2019-11-28 15:16:02
title: 文件上传漏洞——解析、验证、伪造(一) 什么是文件上传漏洞? 文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。这种攻击方式是最为直接和有效的,“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。 造成文件上传漏洞的原因 对于上传文件的后缀名(扩展名)没有做较为严格的限制 对于上传文件的MIMETYPE(用于描述文件的类型的一种表述方法) 没有做检查 权限上没有对于上传的文件目录设置不可执行权限,(尤其是对于shebang类型的文件) 对于web server对于上传文件或者指定目录的行为没有做限制 文件上传校验姿势 1. 客户端js校验 (也称前端验证,一般只校验后缀名) 一般都是在网页上写一段javascript脚本,校验上传文件的后缀名,有白名单形式也有黑名单形式。 判断方式:在浏览加载文件,但还未点击上传按钮时便弹出对话框,内容如:只允许上传.jpg/.jpeg/.png后缀名的文件,而此时并没有发送数据包。前端验证非常不可靠,通过修改数据包后缀名即可绕过,甚至关闭js都可以尝试绕过。 2. 服务端校验: (1).文件头content

文件上传漏洞——解析、验证、伪造(二)

女生的网名这么多〃 提交于 2019-11-28 15:16:02
title: 文件上传漏洞——解析、验证、伪造(二) 之前做了一篇文件上传漏洞的文章,但是知识点和靶场都没讲完,所以这篇文章接着讲。 %00截断绕过 %00实际上就是十六进制的0x00,就是表示ASCII码值为0,有些函数在处理这个字符的时候会把这个当做结束符。在上传文件的时候如果遇到了白名单机制,只允许上传jpg格式。这时候可以使用%00截断。 思路就是上传一个1.php%00.jpg传参之后,有些过滤都是直接匹配字符串,然后允许上传,但是php的函数去执行的时候读取到0x00认为这是结束符。抓住一点 图片存储路径可控 在保存路径的位置使用%00截断,这样这个上传的1.jpg的马儿最后会被保存为example.php执行 这里推荐一种一句话木马的写法 <?php eval($_REQUEST['value']);?> 这样写get和post都能传参。 %00截断绕过(二) 这题其实和第一题差不多就是路径的传参变成了post传参。而get传参是经过url编码的,而修改post的话就通过抓包然后修改hex值在十六进制里00是结束的意思。 抓包在路径上附上example.phpa这加a是为了修改a的hex值为00截断 使服务器存储的这个文件为example.php 即可传入绕过上传php文件。 图片马绕过 这里看到程序检查了上传文件的前两个字节,就是查看了文件头

JavaWeb之文件上传和下载

别来无恙 提交于 2019-11-28 15:06:17
在如今的互联网时代,人们越来越喜欢将自己的数据存放到互联网上,于是便诞生了很多类型的软件,比如360网盘,百度网盘,云盘之类的。所以说,文件上传和下载的功能是现在非常主流的一个功能,应用十分广泛。 那现在,我们就来学习一下,在web中,如何去实现文件上传和下载! 实现web开发中的文件上传功能,需完成如下二步操作: 在web页面中添加上传输入项 在servlet中读取上传文件的数据,并保存到服务器硬盘中。 如何在web页面中添加上传输入项? 标签用于在web页面中添加文件上传输入项,设置文件上传输入项时须注意: 1、必须要设置input输入项的name属性,否则浏览器将不会发送上传文件的数据。 2、必须把form的enctype属值设为multipart/form-data.设置该值后,浏览器在上传文件时,将把文件数据附带在http请求消息体中,并使用MIME协议对上传的文件进行描述,以方便接收方对上传数据进行解析和处理。 3、表单的提交方式要是post 这是页面的实现,接下来是具体功能的实现。 如何在Servlet中读取文件上传数据,并保存到本地硬盘中? Request对象提供了一个getInputStream方法,通过这个方法可以读取到客户端提交过来的数据。但由于用户可能会同时上传多个文件,在servlet端编程直接读取上传数据,并分别解析出相应的文件数据是一项非常麻烦的工作。

大文件上传控件

我只是一个虾纸丫 提交于 2019-11-28 08:15:06
文件夹上传:从前端到后端 文件上传是 Web 开发肯定会碰到的问题,而文件夹上传则更加难缠。网上关于文件夹上传的资料多集中在前端,缺少对于后端的关注,然后讲某个后端框架文件上传的文章又不会涉及文件夹。今天研究了一下这个问题,在此记录。 先说两个问题: 是否所有后端框架都支持文件夹上传? 是否所有浏览器都支持文件夹上传? 第一个问题:YES,第二个问题:NO 只要后端框架对于表单的支持是完整的,那么必然支持文件夹上传。至于浏览器,截至目前,只有 Chrome 支持。 如果需要其它的浏览器支持则需要借助于插件,比如泽优大文件上传控件: www.webuploader.net 关于WebUploader的功能说明: 大文件上传续传 支持超大文件上传(100G+)和续传,可以关闭浏览器,重启系统后仍然继续上传。 开源 提供ASP.NET,JSP,PHP示例和源代码,其中JSP提供MySQL,Oracle,SQL Server数据库的配置和示例代码。 分片、并发 分片与并发结合,将一个大文件分割成多块,并发上传,极大地提高大文件的上传速度。 当网络问题导致传输错误时,只需要重传出错分片,而不是整个文件。另外分片传输能够更加实时的跟踪上传进度。 预览、压缩 支持常用图片格式jpg,jpeg,gif,bmp,png预览与压缩,节省网络数据传输。 解析jpeg中的meta信息

Struts2 文件上传和下载 -- 青鸟

空扰寡人 提交于 2019-11-28 00:47:28
前言 学习一下Struts2框架中文件上传和下载。 文件上传 Struts2 提供了对commons-fileupload 组件的支持,上传文件需要导入两个Jar包或者(Maven的依赖) common-fileuplaod-x.x.x.jar commons-io-x.x.x.jar 单文件上传 1. 准备一个上传页面 (Jsp) 表单method必须是post; 必须设定enctype,并且enctype取值必须是multipart/form-data; < s: form action = " upload " enctype = " multipart/form-data " method = " POST " > 选择文件: < s: file name = " upload " label = " 选择文件 " /> < br > < s: submit name = " sub " value = " 文件上传 " /> < br > </ s: form > 2. 单文件上传的Action package com . bdqn . Control ; import com . opensymphony . xwork2 . ActionSupport ; import org . apache . struts2 . ServletActionContext ;

阶段3 3.SpringMVC·_05.文件上传_5 文件上传之跨服务器上传分析和搭建环境

烈酒焚心 提交于 2019-11-28 00:05:49
使用这个jar包来跨服务器上传 搞两个tomcat。一个springmvc一个fileupload 选中tomcat server点击左边的加号 需要改端口和JMX pport这个端口 部署文件上传的项目 springmvc是引用服务器。fileupad是图片服务器 新建项目 这个项目主要用来存文件的 新建文件夹 uplaods 把这个项目部署到tomcat服务器 启动这个服务器 图片服务器的环境就搭建完成了。 来源: https://www.cnblogs.com/wangjunwei/p/11381891.html

javaWeb中的文件上传下载

五迷三道 提交于 2019-11-27 23:51:13
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现。   对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件。这个common-fileupload上传组件的jar包可以去apache官网上面下载,也可以在struts的lib文件夹下面找到,struts上传的功能就是基于这个实现的。common-fileupload是依赖于common-io这个包的,所以还需要下载这个包,也可以直接去maven库中搜索这个包。如果使用servlet3.0的话就不需要下载包了,直接支持文件上传。 apache官网也有servlet部分的代码演示和讲解,地址: http://commons.apache.org/proper/commons-fileupload/ 环境目录: index.jsp <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4