第九周文件上传

文件上传漏洞

不同的网站要不同的webshell。我们使用是php开发的网站。

一服务器白名单绕过

服务端白名单(Whitelist)是⼀种安全机制,它只允许预定义的合法元素通过(只有有限的元素进入),其他所有内容默认被拒绝。相比黑名单,白名单通常更安全。但某些情况也会被绕过。
分为两种:

1.1MIME类型检测绕过

利用burp来整。可以修改Content-Type来发送php,把类型改为image就ok。

不过都是可以在发送图形时,掺一点php代码就。

1.2 00截断绕过

该类型漏洞比较老且条件苛刻,实战当中几乎不会出现,仅理解原理即可.

操作系统在识别字符串时,当读取到\0字符时,就认为读取到了⼀个字符串的结束符号。系统是C语⾔或汇编语⾔定义字符串时以\0作为字符串的结尾,电脑在读取到\0时认为到结尾了,因此,我们可以通过修改数据包,插⼊\0字符的方式,达到字符串截断的⽬的。
⽤户在前端输⼊的时候是不能直接使⽤\0的,通常会使⽤%00或者0x00。
举例子
http://www.XXX.com/upload/aaa.php%00bbb.jpg
\0在ASCII码表中意味空字符,所以输入的时候%00bbb.jpg是省略的。

二服务器黑名单绕过

服务端⿊名单(Blacklist)是⼀种安全防护机制,它会明确禁⽌某些已知的危险元素,但这玩意太多了,所以相比于白名单较为容易绕过。

缺点
说明案例
覆盖不全无法穷尽所有危险项漏掉.phtml
导致绕过
静态防御难以应对新型攻击变种新型扩展名不断出现
维护成本高需持续更新黑名单每个新漏洞都需添加规则
误杀风险可能组织合法请求禁止 select
影响正常查询
绕过手段多攻击者创新速度快大小写/编码/截断等多种方式
依赖实现细节受服务器解析逻辑影响IS/APACHE/Nginx处理差异

2.1特殊可解析后缀

就是说除了代码中的禁止个后缀名的,我们可以写入许多 Web 服务器配置也会将以下扩展名识别为 PHP 脚本并执⾏其中的代码:

其他的后缀名:
  1. .phtml:传统上⽤于 "PHP + HTML" 混合⽂件,许多默认配置中已启⽤
  2. .phps:本应⽤于显示 PHP 源代码(Source),但如果配置不当,可能会被执⾏⽽⾮显示
  3. php5:⽤于 PHP 5 特定脚本,在⼀些服务器上显式⽀持
  4. .pht:较少⻅但可被解析的扩展
  5. 其他变种:.php4   .php3 (旧版 PHP 3)    .php7     .phar (PHP 归档⽂件)

2.2.htaccess⽂件绕过

Upload-labs(Pass-04)源码分析,又多了黑名单后缀,相中间件为Apache的情况下,⿊名单未校验 .htaccess ⽂件,导致可上传该⽂件,绕过⿊名单检测.

2.2.1什么是.htaccess 呢?

.htaccess ⽂件也被称为分布式配置⽂件,全称是 Hypertext Access。.htaccess ⽂件提供了针对目录改变配置的⽅法, 即在特定的⽂档⽬录中放置⼀个包含⼀条或者多条规则指令的该文件,以作⽤于此⽬录及其所有子目录。通过.htaccess⽂件,可以帮我们实现:
  • 网页301重定向、⾃定义404错误⻚⾯、
  • 改变⽂件扩展名、允许/阻⽌特定的⽤户或者⽬录的访问(我们就是着重与这个)
  • 禁⽌⽬录列表、配置默认⽂档等功能。

.htaccess⽂件⽣效的前提条件

  • mod_rewrite模块开启
  • AllowOverride All

由于没有过滤 .htaccess ⽂件,可以重写⽂件解析规则绕过,上传⼀个.htaccess文件

<FilesMatch "a.jpg">  #名字非常重要,发送后下面的名字要相同
Sethandler application/x-httpd-php
</FilesMatch>

记住 filename要改为".htaccess "。.htaccess针对的是文件夹生效的。这样子就会把a.jpg当成php来解析。

然后再把a.jpg发送进去,记住名字一定改为a.jpg

2.3.user.ini⽂件绕过

.user.ini和.htaccess⼀样是⽬录的配置⽂件,.user.ini就是⽤户⾃定义的php.ini,可以利用这个⽂件来构造后⻔和隐藏后⻔。不过有一个前提是传输的服务器里面必须有一个php文件,否则.user.ini无法生效
.user.ini使⽤范围很⼴,不仅限于 Apache 服务器,同样适⽤于 Nginx服务器,只要服务器启⽤了
fastcgi 模式 (通常⾮线程安全模式使⽤的就是 fastcgi 模式)。但是docker环境不是fastcgi模式,⽆法复现该漏洞。

2.4⼤⼩写绕过

通过Upload-labs(Pass-06)查看源代码,可以看到又禁了很多后缀名。但是没有后缀名大小写进进行统一。可以利⽤大小写进⾏绕过。PhP,Php

2.5空格绕过

Upload-labs(Pass-07)通过代码分析没有去空格,在⽂件后缀加空格后上传.

不过上传成功了,但是我们无法访问成功。原理:Windows系统中会⾃动去除⽂件名最后的空格,靶场是linux环境。

因此在Windows系统中可以使用此方法绕过。

2.6点绕过

Windows系统中会⾃动去除⽂件名最后的 . ,因此在Windows系统中可以使⽤此⽅法绕过;Linux系统虽然不会⾃动去除⽂件名最后的 . ,但是部分Linux系统搭配中间件可以实现解析。

2.8::$DATA绕过

在Windows中,如果⽂件名 + ::$DATA 会把 ::$DATA 之后的数据当成⽂件流处理,不会检测后缀名,且保持::$DATA之前的文件名。使⽤它的⽬的就是不检查后缀名。

Windows会⾃动去掉末尾的::$DATA变成 phpinfo.php

这个是图片展现了防止::$DATA绕过。

这是上传

2.9配合解析绕过

也就是说⾸尾去空,删除末尾的点,去除字符串:$SDATA,转换为小写这些措施只验证了⼀次,所以绕过思路也很简单:在数据包中把后缀名改为:
.php. .(两个点之间有个空格)
.php. ::$DATA

以 .php. . 为例的验证过程:⾸先系统发现最后有⼀个点,这时会把它去掉,又发现有⼀个空格,也会把它去掉,这时还有⼀个点,也就是.php. 由于系统只验证⼀次,所以不会再去掉剩下的点,这时就可以上传成功。

2.10双写后缀名绕过

从源码中可以发现,源码中定义了黑名单列表,我们上传⽂件的后缀名凡是符合黑名单中任意一个后缀都会被替换为空,那么我们可以利⽤双写后缀名的方式进行绕过。例如
phpinfo.pphphp 替换后变成 phpinfo.php

三.服务端内容检查绕过

3.1文件头检查

Upload-labs Pass-14 根据下⾯描述, 需要使⽤图片进行上传, 然后使用文件包含漏洞进行利用获 Webshell 。查看源码, 发现web后端代码检查了上传⽂件的前两个字节并且根据字节判定文件后缀,

只能上传后缀为图片的文件。从代码看,都可以看出类似白名单。

绕过是与文件包含有关系的。特点就是无论后面是什么,都会把它当是php代码来执行。

3.2突破getimagesize和exif_imagetype

⽤getimagesize函数来判断上传⽂件,作⽤是获取⽂件是不是图⽚格式
的。但都是可以上传⼀张真图然后抓包,在最后添加木马就行了。

3.3二次渲染绕过

这一个比较综合了。这个的过程就是,先接收的时候检查一下文件的后缀名字和文件类型,然后再利用⽤ imagecreatefrom[jpeg|png|gif] 函数来判断是否为真的图片,如果是图片的话image[jpeg|png|gif] 函数对其进行二次渲染。
简单来说,它会把你发的图片检查一下确认是否为真的图片,如果确认为真的图片后再生成一张图片。
我们上传张图片看看,可以明显看出两张图片大小不对。所以我们可以找到两张图片没有改变的部分,然后再把php代码插入进去。不过图片有不同的后缀
  • GIF:渲染前后的两张 GIF,没有发生变化的数据块部分直接插⼊ Webshell 即可
  • JPG:需要使用脚本将数据插⼊到特定的数据块,而且可能会不成功,所以需要多次尝试
  • PNG:没有 GIF 那么简单,需要将数据写⼊到 PLTE 数据块 或者 IDAT 数据块
如何找出两张图片的相同和不同之处了?
这就需要工具010editor:010 Editor - Pro Text/Hex Editor | Edit 300+ Formats | Fast & Powerful | Reverse Engineering
下载好后打开比较,curl+m
比较后。match蓝色意味相同,找到相同的后在蓝色区域插入PHP代码。
记得在右边更改且保存
重新上传文件出现图片则证明成功了。(如果不成功,可以按同样方法多操作几次)

3.4条件竞争

代码看出,当你上传文件时,会判断是否是图片,如果是的话重新命名,如果不是的话,就会直接删除代码。也就是说,不管我们上传是不是图片,都会短暂的保留在服务器里面,只要我们在电脑判断期间让上传的php代码执行速度快过删除速度就行了。

如果赶在被删除之前执行并生成新的webshell而新的webshell是不会被删除的。这个也叫做条件竞争上传绕过

#一旦执行就会生成新的webshell
<?php fputs(fopen('shell.php','w'),'<?php @eval($_POST["aa"])?>');?>

我们进行竞争分为两步

1.利用burp的Intruder模块来不断地上传php文件

记住要把插件关掉,否则会崩溃。

2访问php⽂件

再重发get请求,多试一试几次就成了。

从这里可以看出已经成了。再次访问一下创建的文件,再用蚁剑连接

四.中间件解析漏洞

文件上传漏洞在不同的系统 、架构以及行为中, 利用形式也是各不相同 。常用的web容器有IIS Tomcat Nginx Apache 。以下主要以⽐较经典的解析漏洞做解释。

IIS 5.x/6.0 解析漏洞

漏洞原理

  1. 当创建.asp的⽂件⽬录的时候 ,在此⽬录下的任意文件, 服务器都解析为asp文件 。例如如下: 漏洞⽬录利⽤形式:www.xxx.com/xx.asp/xx.jpg。xx.jpg的内容可以为—段合法的asp脚本文件。
  2. 服务器默认不解析;以后的内容, 导致xx.asp;.jpg被解析成xx.asp

漏洞⽂件利⽤形式:www.xxx.com/xx.asp;.jpg xx.jpg的内容可以为—段合法的asp脚本⽂件。

微软认为这不是漏洞所以没有补丁。

Nginx 解析漏洞

漏洞原理:Nginx⽂件解析漏洞主要发⽣在PHP环境与Nginx的配合使用中,核心问题是NginxPHP-FPM对请求URI的处理不—致导致的。

触发条件:

  1.   Nginx版本 < 0.8.41
  2. 配置了  fastcgi_split_path_info  且正则表达式不安全

Apache 解析漏洞

Apache 1.x2.x版本中存在解析漏洞 ,例如如下地址格式

  www.xxxx.com/post_shell.php.mage.edu

Apache从右到左开始判断后缀 ,若edu非可识别后缀, 再判断mage 直到找到可识别后缀才停止, 然后将 该可识别后缀进解析, 因此如上地址解析为访问apache.php文件

五.Upload_Auto_Fuzz

在日常遇到文件上传时,如果一个个去测,会消耗很多时间,如果利用工具去跑的话就会节省很多时间,本Burp Suite插件专为文件上传漏洞检测设计,提供自动化Fuzz测试,共500+条payload。
地址:GitHub - T3nk0/Upload_Auto_Fuzz: 本Burp Suite插件专为文件上传漏洞检测设计,提供自动化Fuzz测试,共500+条payload。

主要功能

windwos特性

  • NTFS数据流(::$DATA)
  • 保留设备名(CON, AUX)
  • 长文件名截断

内容欺骗

  • 魔术字节注⼊(GIF/PNG/PDF头)
  • SVG+XSS组合攻击
  • 文件内容混淆(注释插⼊、编码变异)

安装⽅式

该插件是python开发,因此需要先安装jython。

这样就好了。

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

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

相关文章

计算机视觉必读论文:从经典到前沿

计算机视觉必读论文:从经典到前沿 一、前言 二、经典论文解读​ 2.1 图像分类​ 2.1.1 《ImageNet Classification with Deep Convolutional Neural Networks》(AlexNet)​ 2.1.2 《Very Deep Convolutional Networks for Large-Scale Image Recognition》(VGGNet)​ 2.1.…

对比PowerBI的字段参数,QuickBI的已选字段还有改进的空间

对比PowerBI的字段参数&#xff0c;QuickBI的已选字段还有改进的空间 之前分享过QuickBI的已选字段 vs PowerBI的字段参数&#xff0c;QuickBI可以在表格中实现PowerBI的字段参数效果&#xff0c;甚至比PowerBI实现的过程和使用方式更丝滑。 但如果应用到图形中会怎么样呢&am…

飞算JavaAI:Java开发新时代的破晓之光

免责声明&#xff1a;此文章的所有内容皆是本人实验测评&#xff0c;并非广告推广&#xff0c;并非抄袭。如有侵权&#xff0c;请联系&#xff0c;谢谢&#xff01;【#飞算JavaAl炫技赛】 【#Java开发】摘要&#xff1a;飞算JavaAI作为全球首款聚焦Java的智能开发助手&#xff…

vulntarget-c靶场内网渗透

1. 环境搭建 2.对ubuntu20的渗透 对其进行端口扫描 访问80端口 发现是laravel框架。版本是v8.78.1 使用 kaili 自带的msf 进行渗透 search laravel use exploit/multi/php/ignition_laravel_debug_rce执行利用完成检测 上传木马 先将木马进行base64编码 <?php eval($_P…

基于大模型多模态的人体体型评估:从“尺码测量”到“视觉-感受”范式

基于大模型多模态的人体体型评估&#xff1a;从“尺码测量”到“视觉-感受”范式摘要&#xff1a;传统体型识别依赖CV骨架/关键点与像素量尺&#xff0c;容易受衣物、发型、姿态、光照影响&#xff0c;且“厘米级数值”与穿衣体验、审美感受之间存在鸿沟。本文提出一种基于大模…

【docker】——docker国内可用的源

不知道哪里来的&#xff0c;但是可以用。1. 解决方案打开配置文件&#xff08;若文件不存在&#xff0c;会自动创建&#xff09; sudo vim /etc/docker/daemon.json将以下内容粘贴进去{"builder": {"gc": {"defaultKeepStorage": "20GB&quo…

【Windows端口管理】快速查看和释放被系统保留的TCP端口

问题描述在Windows系统开发时&#xff0c;经常遇到端口无法使用的问题。系统会自动保留一系列TCP/UDP端口范围&#xff0c;导致应用程序无法绑定这些端口。查看所有被保留的端口范围查看TCP保留端口# 查看所有TCP端口排除范围 netsh interface ipv4 show excludedportrange pro…

面经汇总(1)

1.介绍C面向对象的三大特性2.介绍常见的排序算法3.介绍TCP/UDP区别4.TCP三次握手四次挥手5.如果四次挥手第四次客户端的ACK没有发出去会有什么结果&#xff1f;6.介绍MYSQL的事务7.介绍线程池8.主要的线程池有哪几种&#xff1f;9.手撕反转链表10.介绍对象存储以及常见的对象存…

遥感图像数字水印系统优化方案

遥感图像数字水印系统优化方案 1. 引言 遥感图像在现代地理信息系统、环境监测、军事侦察等领域发挥着重要作用。为了保护遥感图像的版权和完整性&#xff0c;数字水印技术被广泛应用。然而&#xff0c;现有的遥感图像水印方案往往在不可见性、鲁棒性和容量之间存在权衡&#x…

鸿蒙高效数据处理框架全攻略:缓存、并行与流式实战

摘要 在如今的物联网和智能设备世界里&#xff0c;数据已经成为最关键的资源。无论是可穿戴设备、智能家居&#xff0c;还是车载系统&#xff0c;每一秒都会产生大量数据。如果缺少一套高效的数据处理框架&#xff0c;开发者就可能面临内存溢出、处理延迟大、设备卡顿等问题。本…

零售企业数字化转型的道、法、术:基于开源AI大模型AI智能名片S2B2C商城小程序的战略重构

摘要 在数字经济与消费升级的双重驱动下&#xff0c;零售企业正经历从"流量争夺"到"用户时间争夺"的范式转变。本文以阿里巴巴、京东、万达三大巨头的战略实践为样本&#xff0c;结合开源AI大模型、AI智能名片与S2B2C商城小程序的技术特性&#xff0c;提出…

瑞云渲染为电影《731》提供云渲染技术支持,助力影片全球上映

在“九一八事变”94周年这一庄严沉重的纪念时刻&#xff0c;抗战电影《731》&#xff08;海外名&#xff1a;《EVIL UNBOUND》&#xff09;于世界各地上映&#xff0c;激起广泛的社会反响与深远的历史思考。 瑞云渲染&#xff08;Renderbus&#xff09;作为全球领先的云渲染服…

EasyDSS视频直播RTMP推流技术如何实现多机型的无人机视频统一直播

在当今这个瞬息万变的传媒时代&#xff0c;无人机与推流直播的结合&#xff0c;正以前所未有的方式重塑着信息传播的边界。无人机以其独特的空中视角和灵活的机动性&#xff0c;为直播行业带来了革命性的变化&#xff0c;而推流直播技术的成熟&#xff0c;则让这一变化得以实时…

str.maketrans() 方法

str.maketrans() 方法 功能概述 str.maketrans() 是 Python 中字符串对象的一个静态方法&#xff0c;用于创建一个字符映射转换表。这个转换表本质上是一个字典&#xff0c;它定义了字符之间的替换规则&#xff0c;后续可以被 str.translate() 方法使用&#xff0c;以实现字符串…

敏感词检测API平台推荐

敏感词检测API平台推荐 背景简介 敏感词检测用于识别文本中的违规、涉政、涉黄、辱骂等敏感词&#xff0c;帮助产品在评论、弹幕、客服对话、运营文案、广告投放等环节实现自动化质检与合规拦截。市场上主要有两类服务商&#xff1a; 专业型厂商&#xff1a;聚焦算法与工程落…

Day25_【深度学习(3)—PyTorch使用(6)—张量拼接操作】

张量的拼接操作在神经网络搭建过程中是非常常用的方法&#xff0c;例如: 在后面将要学习的注意力机制中都使用到了张量拼接。torch.cat 函数可以将两个张量根据指定的维度拼接起来&#xff0c;不改变数据维度。前提&#xff1a;除了拼接的维度&#xff0c;其他维度一定要相同。…

机器视觉在PCB制造中的检测应用

机器视觉在PCB制造中的检测应用&#x1f3af;机器视觉在PCB制造中的检测应用&#x1f3af;一、基材预处理阶段&#xff1a;基材表面缺陷检测&#x1f3af;二、线路制作阶段&#xff1a;线路精度与缺陷检测&#x1f3af;三、钻孔与导通孔加工阶段&#xff1a;孔位与孔质量检测&a…

Python面试题及详细答案150道(136-150) -- 网络编程及常见问题篇

《前后端面试题》专栏集合了前后端各个知识模块的面试题&#xff0c;包括html&#xff0c;javascript&#xff0c;css&#xff0c;vue&#xff0c;react&#xff0c;java&#xff0c;Openlayers&#xff0c;leaflet&#xff0c;cesium&#xff0c;mapboxGL&#xff0c;threejs&…

【pdf.js】pdf检索对应文本和高亮功能

文章目录需求场景1、使用pdf.js解决pdf.js跨域2、预览方案3、检索方案4、实现效果✒️总结需求场景 本文主要针对网页端 PDF 本地预览场景&#xff0c;支持通过关键字对 PDF 进行检索查询&#xff0c;当点击检索结果列表中的对应关键字时&#xff0c;可同步在预览界面中触发内容…

kafka--基础知识点--9.1--consumer 至多一次、至少一次、精确一次

1 自动提交 1.1 原理&#xff1a; Kafka 消费者后台线程每隔 auto.commit.interval.ms 自动提交最近一次 poll() 的 offset 无需开发者干预 1.2 示例&#xff1a; enable.auto.committrue auto.commit.interval.ms5000 # 每 5 秒自动提交一次 from confluent_kafka import Con…