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

news/2024/7/5 8:05:28

       随着互联网的迅速发展,网络安全问题变得日益复杂,而文件解析及上传漏洞成为攻击者们频繁攻击的热点之一。本文将深入研究文件解析及上传漏洞,通过对文件上传、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 下的测试情况:


http://lihuaxi.xjx100.cn/news/1886165.html

相关文章

lwIP 细节之三:errf 回调函数是何时调用的

使用 lwIP 协议栈进行 TCP 裸机编程,其本质就是编写协议栈指定的各种回调函数。将你的应用逻辑封装成函数,注册到协议栈,在适当的时候,由协议栈自动调用,所以称为回调。 注:除非特别说明,以下内…

业内首份!工业领域数据安全政策汇编发布(附下载)

在工业领域,数据是贯穿工业互联网的“血液”,是提质降本增效的关键。工业数据增长迅速、种类繁多、体量庞大,数据安全已成为保障工业发展,保障社会稳定的要点。 随着工业企业信息化的普及以及工业互联网的快速发展,工…

索引的使用

索引是一种数据结构,用于快速查找数据库中的数据。索引可以加快查询的速度,并减少数据库的负载和响应时间。以下是使用索引的一些方法: 1.创建索引:可以通过CREATE INDEX语句创建索引。在创建索引时,需要指定要创建索…

关于代码质量度量和分析的一些总结

最近团队做CMMI3认证,这期间涉及到了代码质量度量。花了点时间做了总结,分享给大家。 先看一张整体的图,然后逐个指标展开说明。 一、单元测试覆盖率 单元测试覆盖率(Coverage)是一个度量单元测试覆盖了多少代码的指标…

java面试题-线程、线程池的了解及工作原理、拒绝策略

远离八股文,面试大白话,通俗且易懂 看完后试着用自己的话复述出来。有问题请指出,有需要帮助理解的或者遇到的真实面试题不知道怎么总结的也请评论中写出来,大家一起解决。 java面试题汇总-目录-持续更新中 这篇还蛮好理解的&…

2023年最新prometheus + grafana搭建和使用+gmail邮箱告警配置

一、安装prometheus 1.1 安装 prometheus官网下载地址 sudo -i mkdir -p /opt/prometheus #移动解压后的文件名到/opt/,并改名prometheus mv prometheus-2.45 /opt/prometheus/ #创建一个专门的prometheus用户: -M 不创建家目录, -s 不让登录 useradd…

AI日报:苹果为使用Mac的人工智能开发者推出开源工具

文章目录 总览主要介绍开发理念开发细节MLX功能用途 MLX可以用于商业软件吗? 总览 苹果正在为开发人员提供新的工具,用于在其硬件上训练和运行大型语言模型。 主要介绍 开发理念 苹果公司通过发布一系列新的开源人工智能工具,向开源人工智能…

最大公约数gcd的通俗理解和Java代码的实现

最大公约数 什么是最大公约数最大公约数的计算练习(找出数组的最大公约数) 什么是最大公约数 最大公约数(Greatest CommonDivisor,简称GCD)是指两个或多个整数共有的最大正因数,即能够同时整除这些数的最大…