整理完自己还有点晕,看来还是得找点靶场自己练习练习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. Odoo13之在tree视图左上角添加自定义按钮

    前言 首先展示效果图,如下图所示,在资产设备模块tree视图的左上角添加了一个同步资产的按钮. 要完成按钮的添加,分为四步,分别是: 1.编写xml文件,找到相关模型tree视图,并给模型tree视图 ...

  2. bzoj3062[Usaco2013 Feb]Taxi*

    bzoj3062[Usaco2013 Feb]Taxi 题意: Bessie在农场上为其他奶牛提供出租车服务,她必须赶到这些奶牛的起始位置,并把他们带到它们的目的地.Bessie的车很小,所以她只能一 ...

  3. bzoj3621我想那还真是令人高兴啊

    bzoj3621我想那还真是令人高兴啊 题意: T组数据,每组给出两个三角形各点坐标,要求求出一个点使第一个三角形可以绕这个点放缩和旋转得到另一个三角形.T≤10,坐标为≤10000的实数,数据保证三 ...

  4. 小白从零开始阿里云部署react项目+node服务接口(二:node服务+web)

    我们用极简的方式来创建服务,没有任何附加功能 1 新建一个server文件夹 2 使用npm init 或者yarn init  一路enter 3  yarn add  express cors  ...

  5. Cyber Security - Palo Alto Firewall V-Wires

    Leveraging V-Wires Bridge two physical connections and apply security Policies without influencing a ...

  6. Mysql报Too many connections,不要乱用ulimit了,看看如何正确修改进程的最大文件数

    背景 今天在学习mysql时,看到一个案例,大体来说,就是客户端报Too many connections.但是,客户端的连接池,限制为了200,两个客户端java进程,那也才400,然后mysql配 ...

  7. INSERT插入WHERE判断是否插入(MySQL)

    一.INSERT INTO IF EXISTS 具体语法:INSERT INTO table(field1, field2, fieldn) SELECT 'field1', 'field2', 'f ...

  8. abp vnext 开发快速入门 2 实现基本增删改查

    上篇说了abp vnext 的大体框架结构,本篇说下如何实现基础的增删改查.实现增删改查有以下几个步骤: 1.配置数据库连接 2.领域层(Domain)创建实体,Ef core 层配置Dbset( 用 ...

  9. Pycharm远程解释器SFTP开发和调试

    转载:https://blog.csdn.net/ll641058431/article/details/53049453 使用PyCharm进行远程开发和调试 你是否经常要在Windows 7或MA ...

  10. BuuCTF Web Writeup

    WarmUp index.php <html lang="en"> <head> <meta charset="UTF-8"> ...