Web漏洞分析-文件解析及上传(上)

       随着互联网的迅速发展,网络安全问题变得日益复杂,而文件解析及上传漏洞成为攻击者们频繁攻击的热点之一。本文将深入研究文件解析及上传漏洞,通过对文件上传、Web容器IIS、命令执行、Nginx文件解析漏洞以及公猫任意文件上传等方面的细致分析,揭示这些漏洞背后的本质和攻击方式。
       文件上传漏洞一直是攻击者们渗透系统的首选方式。通过构造巧妙的上传文件,攻击者能够实施多种恶意行为,如上传包含恶意脚本的文件,从而实现远程代码执行。本文将深入探讨文件上传漏洞的工作原理、攻击场景,并通过实际案例为读者提供更直观的理解,帮助其更好地认识这一类型漏洞的威胁性。
       在网络攻击的舞台上,Web容器扮演着至关重要的角色。特别是在Windows操作系统下,IIS作为最为常见的Web服务器,存在着多种可能的文件解析和上传漏洞。本文将详细探讨这些潜在的漏洞,揭示攻击者如何善用这些漏洞渗透系统,以帮助读者更全面地了解并防范这一类威胁。

一、文件上传

1、文件上传漏洞介绍

(1)、文件上传

文件上传是现代互联网常见的功能,允许用户上传图片、视频、及其他类型文件向用户提供的功能越多,Web受攻击的风险就越大。

(2)、文件上传漏洞

上传文件时,如果未对上传的文件进行严格的验证和过滤,就容易造成文件上传漏洞,上传脚本文件 (包括asp、aspx、 php、jsp等)恶意上传行为可能导致网站甚至整个服务器被控制。

恶意的脚本文件又被称为WebShell,WebShell具有强大的功能,如查看服务器目录、服务器中文件、执行系统命令等

2、JS检测绕过

(1)、检测原理

调用JS的selectFIle()函数,先将文件名转换为小写,然后通过substr获取文件名最后一个点号后面的后缀 (包括点号) 进行判断

(2)、绕过方法

由于后端PHP代码没有对文件做任何检测,所以只要绕过前端JS的校验就可以上传WebShell。

3、文件后缀绕过

(1)、检测原理

通过函数pathinfo()获取文件后缀,将后缀转为小写后判断是不是php.

(2)、绕过方法1

有些中间件允许解析其他文件后缀的,如在httpd.conf配置文件中配置如下代码,则能解析php、php3、phtml文件。所以上传一个后缀名为php3、phtml的文件即可

(3)、绕过方法2

结合Apache文件解析机制,从右向左开始解析文件后缀,若后缀名不可识别,则继续判断知道遇到可解析的后缀为止。

4、文件类型绕过(MIME绕过)

(1)、检测原理

判断$_FILES[“file”][“type”]是不是图片格式 (image/gif、imagejpeg、image/pjpeg) ,不是则不允许上传。 $_FILES[“file”][“type”]的值是从请求数据包中Content-Type中获取。

(2)、绕过方法

通过抓取数据请求包,上传php文件时,Content-Type值是application/octer-stream,上传jpg格式的文件时Content-Type值是image/jpeg。可修改文件类型进行绕过。

5、文件类型绕过(文件幻数检测)

(1)、检测原理

利用getimagesize0函数获取图片的宽高等信息,如果上传的不是图片,那么则获取不到信息。

(2)、绕过方法

在脚本文件开头补充图片对应的头部值,或在图片后写入脚本代码。

6、文件截断绕过

(1)、检测原理

①、由于00代表结束符,PHP会把00后面的所有字符删除

②、截断条件: PHP版本小于5.3.4、magic_quotes_gpc 为OFF状态

(2)、绕过方法

GET方法中加入00截断

POST方法中传入%00并解码

7、文件内容绕过 (竞争条件攻击)

(1)、检测原理

一些网站文件检测逻辑是先允许上传任意文件,然后检查文件内容是否包含可执行脚本,如果包含则删除。这里使用sleep()函数来模拟判断是否含有脚本所需要的时间

(2)、绕过方法

利用成功上传到删除文件的时间差,上传一个.php文件,在未删除之前立即访问,则会自动生成一个新php文件,新文件不会被删除

二、web容器IIS

1、常见Web容器

(1)、什么是Web容器

web容器是一种服务程序,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求,如JAVA中的Tomcat容器ASP的IIS都是这样的容器。一个服务器可以有多个容器。

我们在常见web容器漏洞这部分学习中需要使用的容器如下:IIS、Apache、Nginx、 Tomcat、Jboss、 WebLogic。 

(2)、名词解释

①、中间件: 提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通。中间件处在操作系统和更高一级应用程序之间。

②、容器: 给处于其中的应用程序组件 (ISP,PHP,ASP) 提供一个环境。使处于其中的应用程序组件直接跟容器中的环境变量接口交互,不必关注其它系统问题

③、服务器: www服务器或http服务器。提供Web信息浏览服务。它只需支持HTTP协议、HTML文档格式及URL。向浏览器提供服务的程序。

2、IIS简介

(1)、什么是IIS

IIS是由微IIS的全称是互联网信息服务 (英语: Internet Information Services)软公司提供的基于运行Microsoft Windows的互联网基本服务。IIS包括FTP/FTPS、NNTP、和HTTPSY HTTP、SMTP等服务。

相关词条解释

.net Framework 是基础类库,是程序运行的底层框架

ASP.Net 是 .net里用来做网站的技术集合

IIS 是架设Web服务器用来提供网页浏览服务的,属于系统环境般用ASP.Net开发软件,然后靠IIS对公网提供服务,软件的底层是.netFramework

(2)、什么是文件解析

当服务器接收到一个Http请求的时候,IIS 首先需要决定如何去处理这个请求(服务器处理一个.htm页面和一个.aspx页面肯定是不一样) 。那IIS依据什么去处理呢? 根据文件的后缀名。

服务器获取所请求的页面(也可以是文件,比如 1.jpg) 的后缀名以后接下来会在服务器端寻找可以处理这类后缀名的应用程序,如果IIS找不到可以处理此类文件的应用程序,那么IIS将直接把这个文件返还给客户端。

(3)、环境搭建

这里要复现的是IIS6.0文件解析漏洞

使用了windows server2003作为环境的载体

这个网站中有各个Windows版本的安装镜像: https://msdn.itellyou.cnWindows server 2003发行版本中已经内置了IIS服务

(4)、环境使用介绍

开启关闭IIS服务方法如下:

(5)、环境使用介绍

点击之后会弹出如下方框,按照如下方法选择之后即可看到自己的web目录中的文件和IIS服务的开始、停止、暂停按钮了

(6)、环境使用介绍

在这个页面中是无法编辑自己的web服务的,需要在本机中找到web目录。这个环境中的默认web目录是在C:\Inetpub\wwroot下的,在这里就可以编辑web目录,然后就可以进行我们后面的实验

3、IIS文件解析漏洞

(1)、漏洞利用

文件解析漏洞一般用于各种上传漏洞中,在文件上传的地方一般会限制用户可以上传文件的后缀名,比如php的网站如果可以上传php文件,那么就可以上传一个php木马,然后控制该服务器了,也就是我们所说的getshell了。

那么实际的漏洞环境中IIS一般是和asp搭配的, 上传的地方如果限制了.asp的后缀名,那么首先想到的应该是使用其它IIS支持的文件后缀。其实IIS解析asp脚本除了.asp后缀还有.cer和.asa

(2)、漏洞利用

如果网站将.asp、.cer、.asa这样的可以被服务端解析的后缀名全部过滤了的话,就只能通过其它的一些方法绕过了。就比如文件解析漏洞

IIS 6.0在处理含有特殊符号的文件路径时会出现逻辑错误,从而造成文件解析漏洞。这一漏洞有两种完全不同的利用方式:

/test.asp/test.jpg

test.asp;jpg

(3)、利用方式1

第一种是新建一个名为“test.asp”的目录,该目录中的任何文件都被IIS当做asp程序执行 (特殊符号是“/”)

(4)、利用方式2

第二种是上传名为“test.asp;.jpg”的文件,虽然该文件真正的后缀名是“.jpg”,但由于含有特殊符号“;”,仍会被IIS当做asp程序执行。

(5)、IIS7.5文件解析漏洞

test.jpg/php

一看到URL中文件后缀是.php,便无论该文件是否存在,都直接交给php处理而php又默认开启“cgi.fix_pathinfo”,会对文件路径进行“修理”,何谓“修理”?举个例子,当php遇到文件路径“/aaa.xxx/bbb.yyy”时,若“/aaa.xxxbbb.yyy”不存在,则会去掉最后的“bbb.yyy”,然后判断“/aaa.xxx”是否存在若存在,则把“/aaa.xxx”当做文件。

若有文件test.jpg,访问时在其后加/.php,便可以让IIS把“test.jpg/.php”交给php,php“修理”文件路径“test.jpg/.php”得到“testjpg”,该文件存在,便把该文件作为php程序执行了

(6)、IIS7.5文件解析漏洞

下图所示,是在 IIS7.5+php5.3+FastCGI 下的测试情况:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

k8s-Pod

1、Pod 简介: (1) 概念: Pod 是 Kubernetes 中创建和管理的,最小的可部署的计算单元。Pod中存储了一组(一个或多个)容器,以及怎样运行这些容器的声明,这些容器共享存储、网络和环境&#xff0…

简易的JS逆向解码

在实战的漏洞挖掘中阅读JS有以下几个作用: 1.JS中存在插件名字,根据插件找到相应的漏洞直接使用 通过控制台大致阅读网站JS代码发现此网页引用了北京的一家公司的代码,并且使用了h-net的框架,接下来我们可以百度这家公司或者是这…

智能优化算法应用:基于水循环算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于水循环算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于水循环算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.水循环算法4.实验参数设定5.算法结果6.参考文…

【精选】SpringMVC简介及其执行流程,参数获取方式

SpringMVC简介 MVC模型 MVC全称Model View Controller,是一种设计创建Web应用程序的模式。这三个单词分别代表Web应用程序的三个部分: Model(模型):指数据模型。用于存储数据以及处理用户请求的业务逻辑。在Web应用中&…

C#基础——语法学习

C#的基本语法 在介绍基本语法之前我们先来大概讲一下创建好的这些文件都是做什么的 .sln文件:将项目和解决方案项结合到一起 .vs文件夹:用来存储当前解决方案中关于用户的设置和自定义项,比如断点,主题等。(一般都将其…

短信打开小程序

获取 URL Scheme | 微信开放文档 静态网站 H5 跳小程序 | 微信开放文档

阿里云SMC迁移RedHat/CentOS 5 内核升级

阿里云SMC迁移RedHat/CentOS 5 内核升级 1. 起因 服务器需要迁移上阿里云,有几台服务器用的是Redhat 5.x,在使用SMC进行迁移时出现以下报错. [2023-12-13 09:50:55] [Error] Check System Info Failed, codeS16_111, msgGet OS Info Failed: [error] grub is too old for C…

工作随记:long类型数据迁移问题小记

文章目录 概要整体解决方法方法一:用COPY的方法:方法二:PL/SQL(如上)方法三:直接就把LONG转换成CLOB类型方法四:exp/imp 技术过程 概要 工作随记:在做技术方案发现客户数据库的表存在与系统表空间&#xf…

OpenAI 承认 ChatGPT 最近确实变懒,承诺修复问题

文章目录 一. ChatGPT 指令遵循能力下降引发用户投诉1.1 用户抱怨回应速度慢、敷衍回答、拒绝回答和中断会话 二. OpenAI 官方确认 ChatGPT 存在问题,展开调查三. OpenAI 解释模型行为差异,回应用户质疑四. GPT-4 模型变更受人事动荡和延期影响 一. Chat…

基于Java SSM框架实现固定设备资产管理系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现固定设备资产管理系统演示 摘要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认…

二、结合各种图形库实现各种demo(11-20)

demo地址https://bidding-m.gitee.io/maptalks-test-next/#/ 11、isects 12、right click menu 13、infoWindow 14、image marker 15、multi image marker 16、vector-marker-fill 17、line-gradient-arrow 18、rotated-marker-with-line 19、smoothness-line 20、polygon 欢迎…

orb-slam2学习总结

目录 视觉SLAM 1、地图初始化 2、ORB_SLAM地图初始化流程 3、ORB特征提取及匹配 1、对极几何 2、对极约束 (epipolar constraint) 3、基础矩阵F、本质矩阵E 5、单目尺度不确定性 6、单应矩阵(Homography Matrix) 6.1 什么是单应矩…

干不完的996,加不完的007,浅谈程序员的内卷化

目录 一. 什么是内卷化 二. 程序员的内卷化 2.1. 码农时代 2.2. 开源时代 2.3. 加班文化 三. 如何不被内卷化 3.1. Stay Hungry, Stay Foolish 3.2. 工程能力 3.2.1. 架构 3.2.2. 规范 3.2.3. 管理 3.2.4. 排错 3.3. 学会思考 四. 结尾 一. 什么是内卷化 最近开始…

【算法与数据结构】37、LeetCode解数独

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:本题也是一道困难题,难点在于如何构建数独棋盘,如何检查棋盘的合法性&#xff…

Halcon一维码识别

文章目录 参数连接halcon 自带案例1(设置校验位识别条码)Halcon 自带案例2(设置对比度识别条码)Halcon 自带案例3(存在曲面变形)Halcon 自带案例4(设置条码扫描线)Halcon 自带案例5&…

Linux---Ubuntu操作系统

1. Ubuntu操作系统的介绍 Ubuntu操作系统是属于Linux操作系统中的一种,它是免费、稳定又可以拥有绚丽界面的一个操作系统 2. Ubuntu图形界面的介绍 任务栏 窗口操作按钮 窗口菜单条 任务栏效果图: 窗口操作按钮效果图: 窗口菜单条效果图: 3. 与Windows目录结…

『C++成长记』拷贝构造函数

🔥博客主页:小王又困了 📚系列专栏:C 🌟人之为学,不日近则日退 ❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、拷贝构造函数 📒1.1拷贝构造函数的概念 📒1.2拷贝构造…

Java项目-瑞吉外卖Day6

导入用户地址功能,为用户添加地址: 添加AddressBook实体类,创建相关service,mapper,serviceImpl,controller类。 controller类直接使用的资料提供的代码。 实现菜品展示移动端开发: 看到前端发…

添加,更换和删除 vSphere License

目录 1. 删除 License2. 添加 License(1)输入许可证密钥(2)编辑许可证名称(3)确认许可证信息 3. 分配/更换 License(1)为 vCenter Server 分配 License(2)为 …

Android : 序列化 Parcelable 简单应用

1.Parcelable 介绍 Parcelable 是 Android 提供的一个序列化接口,用于将数据写入 Parcel,以及从 Parcel 中读取数据。一个类只要实现了这个接口,该类的对象就可以被序列化,主要用于 IPC(进程间通信)、Bind…