首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >渗透测试文件上传漏洞原理与验证(3)——Web容器及IIS

渗透测试文件上传漏洞原理与验证(3)——Web容器及IIS

原创
作者头像
周周的奇妙编程
发布2024-11-26 14:53:40
发布2024-11-26 14:53:40
4710
举报
文章被收录于专栏:渗透测试专栏渗透测试专栏

常见Web容器

  • 服务器:一种管理资源并为用户提供服务的计算机。
  • Web服务器:即www服务器或http服务器。提供Web信息浏览服务。它只需支持HTTP协议、HTML文档格式及URL。向浏览器提供服务的程序。
  • 中间件:提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通。中间件处在操作系统和更高一级应用程序之间。
  • Web中间件:就是提供Web应用软件和系统软件连接的一个软件的总称。
  • 容器:是中间件的一种,作为操作系统和应用程序之间的桥梁,给处于其中的应用程序组件(JSP,PHP,ASP)提供一个环境。使处于其中的应用程序组件直接跟容器中的环境变量接口交互,不必关注其它系统问题。

三者之间很多是包含关系,Web服务器>Web中间件>Web容器

什么是Web容器

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

我们在常见web容器漏洞这部分学习中需要使用的容器如下:

IIS简介

什么是IIS

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

相关词条解释:

  • .NET Framework 是基础类库,是程序运行的底层框架
  • ASP.Net 基于.NET Framework 的Web开发平台,也可认为是.NET组件,并非编程语言,它可以运行在安装了.NET Framework的IIS服务器上。
  • IIS 是架设Web服务器用来提供网页浏览服务的,属于系统环境,

一般用ASP.Net开发软件,然后靠IIS对公网提供服务,软件的底层是.net Framework

什么是文件解析

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

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

这里要复现的是IIS6.0文件解析漏洞,使用了windows server2003作为环境。

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

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

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

IIS文件解析漏洞

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

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

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

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

代码语言:html
复制
/test.asp/test.jpg
test.asp;.jpg

利用方式1

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

利用方式2

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

IIS7.5文件解析漏洞

代码语言:html
复制
test.jpg/.php

一看到URL中文件后缀是.php,便无论该文件是否存在,都直接交给php处理,而php又默认开启“cgi.fix_pathinfo”,会对文件路径进行“修理”,何谓“修理”?

举个例子,当php遇到文件路径“/aaa.xxx/bbb.yyy”时,若“/aaa.xxx/bbb.yyy”不存在,则会去掉最后的“bbb.yyy”,然后判断“/aaa.xxx”是否存在,若存在,则把"/aaa.xxx”当做文件。

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

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


本文部分图片摘自深信服安全服务认证工程师课程课件中,为方便个人学习使用,勿作商用!!!!文字内容为自己手打,并非直接搬运!如有侵权,请联系删除!!!

本文档所提供的信息仅用于教育目的及在获得明确授权的情况下进行渗透测试。任何未经授权使用本文档中技术信息的行为都是严格禁止的,并可能违反《中华人民共和国网络安全法》及相关法律法规。使用者应当合法合规地运用所学知识,不得用于非法入侵、破坏信息系统等恶意活动。我们强烈建议所有读者遵守当地法律与道德规范,在合法范围内探索信息技术。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 常见Web容器
    • 什么是Web容器
  • IIS简介
    • 什么是IIS
    • 什么是文件解析
  • IIS文件解析漏洞
    • 利用方式1
    • 利用方式2
  • IIS7.5文件解析漏洞
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档