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

news2024/12/23 13:37:08

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

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

相关文章

* demo、源码、桌面端软件

demo demohttps://bidding-m.gitee.io/maptalks-test-next/#/ 源码 源码https://gitee.com/bidding-M/maptalks-test-next 桌面端 桌面端https://gitee.com/bidding-M/map-collection/blob/master/apps/maptalks-win-0.0.1-x64.exe

中洺科技-数据标注创就业浪潮

平凡的事不能普通的做那么就有所不同。这也是我们在这波新的AI浪潮中做副业、创业时应该思考的。 正如一些业内从业者所说,数据标注行业本身的利润其实非常有限。如果现在招聘专职数据标注人员的成本太高,只做标注项目的公司就太难立足了,数据…

微信小程序(一) —— 常见组件

文章目录 🎀项目基本组成结构📢常见的视图容器类组件viewscroll-viewswiper和swiper-item使用viewscroll-viewswiper和swiper-itemswiper标签属性 🌶️常用的基础内容组件textrich-text 📮其他常用组件buttonimagenavigator &…

简易的JS逆向解码

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

基于C/C++的rapidxml加载xml大文件 - 上部分翻译

RAPIDXML手册 版本 1.13 版权所有 (C) 2006, 2009 Marcin Kalicinski有关许可证信息,请参阅随附的文件许可证 .txt。 目录 1. 什么是 RapidXml? 1.1 依赖性和兼容性1.2 字符类型和编码1.3 错误处理1.4 内存分配1.5 …

HTML---基础

文章目录 目录 文章目录 前言 一.HTML概述 二.HTML相关概念 HTML作用域 HTML标签 HTML转译字符 总结 前言 一.HTML概述 HTML(超文本标记语言)是一种用于创建网络页面的标记语言。它以标记的形式编写,该标记描述了文档的结构和内容。HTML…

黑苹果之网卡篇

今天主要来聊一下黑苹果如何选择网卡 黑苹果对硬件的要求比较局限,可以用的无线网卡也比较少,而且很多也已经涨价,这里就结合自己的使用经验,简单分享几款比较好用的黑苹果无线网卡方案。 一、BCM94360系列 如果想要稳定、省心&am…

【K8S 系列】认识k8s、k8s架构

一、什么是k8s? Kubernetes 简称 k8s,是支持云原生部署的一个平台,k8s 本质上就是用来简化微服务的开发和部署的,用于自动化部署、扩展和管理容器化应用的开源容器编排技术。对于传统的docker其实也提供了容器编排的技术docker-compose&…

gdb本地调试版本移植至ARM-Linux系统

移植ncurses库 本文使用的ncurses版本为ncurses-5.9.tar.gz 下载地址:https://ftp.gnu.org/gnu/ncurses/ncurses-5.9.tar.gz 1. 将ncurses压缩包拷贝至Linux主机或使用wget命令下载并解压 tar-zxvf ncurses-5.9.tar.gz 2. 解压后进入到ncurses-5.9目录…

【人工智能Ⅰ】实验8:DBSCAN聚类实验

实验8 DBSCAN聚类实验 一、实验目的 学习DBSCAN算法基本原理,掌握算法针对不同形式数据如何进行模型输入,并结合可视化工具对最终聚类结果开展分析。 二、实验内容 1:使用DBSCAN算法对iris数据集进行聚类算法应用。 2:使用DBS…

论文阅读——GroupViT

GroupViT: Semantic Segmentation Emerges from Text Supervision 一、思想 把Transformer层分为多个组阶段grouping stages,每个stage通过自注意力机制学习一组tokens,然后使用学习到的组tokens通过分组模块Grouping Block融合相似的图片tokens。通过这…

CSPNet: A New Backbone that can Enhance Learning Capability of CNN(2019)

文章目录 -Abstract1 Introduction2 Related workformer work 3 Method3.1 Cross Stage Partial Network3.2 Exact Fusion Model 4 Experiments5 Conclusion 原文链接 源代码 - 梯度信息重用(有别于冗余的梯度信息)可以减少计算量和内存占用提高效率&am…

二、结合各种图形库实现各种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 欢迎…

“集爱三湘 传递温情”旺旺送温暖公益活动在开福东风路街道办举行

(通讯员:吴康)用真情传递爱的力量,用行动践行善的约定。12月12日上午,湖南大旺食品有限公司长沙分公司联合湖南省朝阳公益基金会在开福区东风路街道办举行“集爱三湘 传递温情”旺旺送温暖活动,旨在扎实做好…

链表基础知识(一、单链表)

一、链表表示和实现 顺序表的问题及思考 问题: 1. 中间/头部的插入删除,时间复杂度为O(N) 2. 增容需要申请新空间,拷贝数据,释放旧空间。会有不小的消耗。 3. 增容一般是呈2倍的增长,势必会有一定的空间浪费。例如当…

Live800:客服5大场景高满意度话术有这些

客服作为企业与消费者之间的桥梁,其服务质量往往直接影响到消费者对企业的印象和忠诚度。因此,提高客服满意度一直是企业所关注的重要问题。那么,客服在哪些场景下能够让消费者感到满意呢?今天,我们就来探讨一下客服5大…

MySQL笔记-第11章_数据处理之增删改

视频链接:【MySQL数据库入门到大牛,mysql安装到优化,百科全书级,全网天花板】 文章目录 第11章_数据处理之增删改1. 插入数据1.1 实际问题1.2 方式1:VALUES的方式添加1.3 方式2:将查询结果插入到表中 2. 更…

【Web】一张动图告诉你,输入网址之后,发生了什么事情?

让我们一步一步地来看这个过程。 步骤1: 用户在浏览器中输入一个URL(比如www.csdn.net),然后按下回车键。首先,我们需要将这个URL转换成一个IP地址。通常,这个映射关系会被存储在缓存中,因此浏…

Linux基本操作指令

哈喽小伙伴们,从这篇文章开始,在学习数据结构的同时,我们开启一个新的篇章——Linux操作系统的学习,这将会是又一个新的开始,希望小伙伴们能够认真细心,不要掉队哦。 目录 一.什么是Linux 二.为什么要学习…

BeautifulSoup学习

前期准备&#xff1a; pip install bs4 pip install lxml bs解析器 从上面的表格可以看出&#xff0c;lxml解析器可以解析HTML和XML文档&#xff0c;并且速度快&#xff0c;容错能力强&#xff0c;所有推荐使用它。 节点选择器 获取名称 soup BeautifulSoup(<b class&…