整理完自己还有点晕,看来还是得找点靶场自己练习练习Orz

1:客户端JavaScript校验

Burp改包即可

2:服务端对Content-Type进行校验

猜测后,修改对应Content-Type字段

.JPEG;.JPE;.JPG JPGGraphic File

.gif GIF 89A

.zip Zip Compressed

.doc;.xls;.xlt;.ppt;.apr MS Compound

3:文件头绕过
GIF89a<?php phpinfo();?>

或构造图片马,将恶意文本写入图片的二进制代码,避免破坏文件头和尾

一般文件内容的检测使用getimagesize()函数检测,会判断文件是否是有效的图片文件,如果是,则允许上传,否则的话,不允许上传,用下面的命令制作图片木马,如果上传成功改后缀名上传。

Copy xx.jpg/b + yy.txt/a xy.jpg

/b 即二进制模式

/a 即AscII模式 xx.jpg正常图片文件

4:文件后缀绕过

前提:黑名单绕过

黑名单检测一般有个专门的blacklist文件,里面会包含常见的危险脚本

绕过只能找扩展名的漏网之鱼(能被中间件解析) 比如asa和cer之类

可能存在大小写绕过漏洞-比如aSp和pHp之类

能被解析的文件拓展名列表
jsp jspx jspf

asp asa cer aspx cdx

php pht php4 php5

5:结合解析漏洞绕过
IIS
6.0版本中会将a.asp;xx.jpg解析成asp,原因是被;符号截断了。还存在一个目录解析,会将a.asp/目录下文件解析成asp文件,前提是本地确实存在这样的文件或环境

7.5版本中xyz.jpg/.php会被解析成php文件

例子:

目录解析(IIS 6.0)

形式:WWW.XXX.com/xxx.asp/xxx.jpg

原理:服务器默认会把.asp,,asp目录下的文件都解析成asp文件。

文件解析

形式:WWW.XXX.com/xx.asp/xxx.jpg

原理:服务器默认不解析;号后面的内容,因此xxx.asp;.jpg便被解析成asp文件了

APACHE

apache: webshel.php. XXX. XXA. XXB module方式解析php文件的情况下,由于mime. types配置里没有XX文件类型,不认识就往前遍历解析,直到解析到为止.php(1x,2x),

还有个关于 Addtype和 Addhandlere的配置问题, Addtype指令在给定的文件扩展名与特定的内容类型之间建立映射关系。MME-type指明了包含extension扩展名的文件的媒体类型。

而 Addhandler指令的作用是:在文件扩展名与特定的处理器之间建立映射比如: Addhandler php5-script.php就是指定扩展名为.php的文伶应被php5- srcipt处理器来处理。

Addtype是与类型表相关的,描述的是扩展名与文件类型之间的关系。

Addhandler说明什么样的疒展名使用什么样的程序来处理,描述的是扩展名与处理程序之间的关系.

Addtype中application/x-httpd-php.jpg后缓名ipg文件会被当成php解析而Addhandler php5-script.Jpg的话,只要文件名中包含jpg字符串就会被当成php解析

NGINX

在php配置为 fast-cgia的应用中,由于patino模式(参数cgi.fix_pathinfo)的开启,在映射URI的时候,如果是解析xxx/111.jpg/222.php.

其中 SCRIPT NAMES会是xxx/111jpg/222.php,当开启 fix_pathinfo的时候,由于222.php不存在,会被丢弃掉,所以111.jpg会被作为PHP脚本解析。(IIS也存在过相同问题,主要是后缀是

php就扔给php处理了).

6:配合操作系统命名规则

上传不符合windows文件命名规则的文件名

test.asp

test.asp(空格)

test.php:1.jpg

test.php::$DATA

shell.php::$DATA......

会被windows系统自动去掉不符合规则符号后面的内容

linux下后缀名大小写

在linux下,如果上传php不被解析,可以试试上传pHp后缀的文件名

7:分布式配置文件(文件重写) 绕过

htaccess文件(或者"分布式配置文件”)提供了针对目录改变配置的方法,即在一个特定的文栏目录中放置一个包含一个或多个指令的文件,
作用于此目录及其所有子目录。用户可以利用此文件定义解析文件的后缀,从而进行恶意利用。
口分布式配置文件上传漏洞的实例
1.建立 stance文件内容如下:
<FilesMatch "cimer" >
Sethandler application/x-httpd-php
</Files Match>
并将其上传至服务器中

2.上传php木马文件名包含cmer

8:0X00截断

目录路径检测一般就是检测上传的路径是否合法,一旦程序员在写程序的时候对文件的上传路径过滤不严格就很有可能产生0x00上传截断漏洞。

假设文件的上传路径为.http://x.x.x.x/upfiles/hello.php.gif

通过抓包截断将hello.php后面的换成0×O0,当上传的时候,当文件系统读到0X00的时候,会认为文件已经结束,从而将hello.php.gif中的内容写入到hello.php中从而达到攻击目的

文件上传Upload 学习笔记的更多相关文章

  1. Web文件上传靶场 - 通关笔记

    Web应用程序通常会提供一些上传功能,比如上传头像,图片资源等,只要与资源传输有关的地方就可能存在上传漏洞,上传漏洞归根结底是程序员在对用户文件上传时控制不足或者是处理的缺陷导致的,文件上传漏洞在渗透 ...

  2. vue ----element-ui 文件上传upload 组件 实现 及其后台

    1.前台 action 不用改 :https://jsonplaceholder.typicode.com/posts/ getFile: 获取文件 data(){ return { file: {} ...

  3. 文件上传Upload 漏洞挖掘思路

    1:尽可能多的找出网站存在的上传点2:尝试使用如上各种绕过方法3:尝试 geshell4:无法上传webshel的情况下: 尝试上传html等,或可造成存储XSS漏洞 上传点构造XSS等,结合上传后的 ...

  4. 6.学习springmvc的文件上传

    一.文件上传前提与原理分析 1.文件上传必要前提: 2.文件上传原理分析: 3.需要引入的jar包: 二.传统方式文件上传程序 1.pom.xml <dependency> <gro ...

  5. 功能强大的文件上传插件带上传进度-WebUploader

    WebUploader是由Baidu WebFE(FEX)团队开发的一个以HTML5/FLASH构建的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览器,沿用老 ...

  6. Struts2 单个文件上传/多文件上传

    1导入struts2-blank.war所有jar包:\struts-2.3.4\apps\struts2-blank.war 单个文件上传 upload.jsp <s:form action= ...

  7. Javascript Fromdata 与jQuery 实现Ajax文件上传以及文件的删除

    前端HTML代码: <!DOCTYPE html> <html> <head> <title>ajax</title> <script ...

  8. Django之Ajax文件上传

    请求头ContentType ContentType指的是请求体的编码类型,常见的类型共有3种: 1 application/x-www-form-urlencoded(看下图) 这应该是最常见的 P ...

  9. SpringBoot2 上传文件 上传多文件

    项目结构: 1.单文件上传 upload.html <!DOCTYPE html> <html lang="en"> <head> <me ...

随机推荐

  1. 【一起学系列】之命令模式:封装一个简单Jedis

    意图 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化:对请求排队或记录请求日志,以及支持可撤销的操作. 命令模式的诞生 [产品]:开发小哥,来活啦,咱们需要设计一款遥控器,核心功能就 ...

  2. java 之 实例方法和类方法

    类方法:使用static修饰(静态方法),属于整个类的,不是属于某个实例的,只能处理static域或调用static方法: 实例方法:属于对象的方法,由对象来调用. 判断类方法,类方法的前面有stat ...

  3. C++ 深搜调错

    因为前两天某网站的比赛一个深搜错了,我只得了3等奖,我找不到错误,给别的大佬看他们又嫌恶心.emm……,比赛结束后我自己反思了一下,深搜写错了该怎么办,或者说怎样避免写错. 首先,变量名不要太ex,比 ...

  4. 微信小程序 springboot nginx 做图片存储 上传 浏览

    微信小程序前端-springboot后端-nginx图片存储 前言 本人小白一名,这是第一次学习微信小程序,特此做个记录. 首先准备nginx做图片存储 选择一个地址存放图片 #我的地址 [root@ ...

  5. springcloud之Eureka注册中心

    参考博客:https://www.cnblogs.com/ityouknow/p/6854805.html 背景: Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Ser ...

  6. python基础--小数据池,代码块的最详细、深入剖析

    本文转至太白金星 一,id,is,== 在Python中,id是什么?id是内存地址,那就有人问了,什么是内存地址呢? 你只要创建一个数据(对象)那么都会在内存中开辟一个空间,将这个数据临时加在到内存 ...

  7. pip安装第三方包超时

    1. pip安装requests模块超时 [root@2 zabbix_agentd.d]# pip install requests Collecting requests /usr/lib/pyt ...

  8. 图解Kubernetes——故障排查指南

    针对越来多的Kubernetes容器云,对Kubernetes集群的故障排查却成了一个棘手问题.本文虫虫给大家以直观图示方式介绍如何排查Kubernetes的故障.该篇是系列文章续——故障排查篇. 概 ...

  9. 使用 eval(input()) 的便利

    输入列表或者字典时使用eval可以自动转换为其类型 2020-06-18

  10. __new__方法理解

    class Foo(object): def __init__(self, *args, **kwargs): pass def __new__(cls, *args, **kwargs): retu ...