什么是中间件

又译中间件、中介层,是一类提供系统软件和应用软件之间连接、便于软件各部件之间的沟通的软件,应用软件可以借助中间件在不同的技术架构之间共享信息与资源。中间件位于客户机服务器的操作系统之上,管理着计算资源和网络通信。简单来讲就是沟通应用与操作系统之间的组件。

中间件有很多,早在 1998 年 IDC 公司就将中间件分成了 6 大类,国内 2005 年之前出版的中间件相关的书上,很多都是按照这 6 大类来分的,分别是:

  1. 终端仿真/屏幕转换
  2. 数据访问中间件(UDA)
  3. 远程过程调用中间件(RPC)
  4. 消息中间件(MOM)
  5. 交易中间件(TPM)
  6. 对象中间件

常见的中间件:Tomcart,WebLogic,IIS,WebSphere,Jboss

IIS

什么是IIS?

Internet Information ServicesIIS,以前称为Internet Information Server)

由微软公司提供的 可扩展的Web服务器,支持 HTTP,HTTP/2,HTTPS,FTP,FTPS,SMTP等等协议

IIS目前只适用于Windows系统,(IIS默认用户账户:由微软单独分配的nt authority\network service比较安全

截止3月服务器市场份额占比如下

IIS,也就是微软占比还是比较少的

IIS对应的版本信息

IIS默认版本Windows系统
IIS 1.0Windows NT Server 3.51
IIS 2.0Windows NT Server 4.0
IIS 3.0Windows NT Server 4.0 SP3
IIS 4.0Windows NT Server 4.0 SP3 + Option Pack
IIS 5.0Windows 2000
IIS 5.1Windows XP Professional, Windows XP Media Center
image-20210404165110345

IIS各种版本 默认404页面

IIS 6.0

image-20210404165154646

IIS 7.0

image-20210404165228781

IIS 7.5

IIS 8.0

IIS的常见漏洞

IIS解析漏洞

IIS 5.x/6.0解析漏洞

IIS 6.0解析利用方法有两种

1.目录解析

/xx.asp/xx.jpg

2.后缀解析

xxx.asp;.jpg /xxx.asp:.jpg(需要抓包修改)

第一种,在网站下建立文件夹的名字为 .asp.asa 的文件夹,其目录内的任何扩展名的文件都被IIS当作asp文件来解析并执行。

/xx.asp:.jpg 此类文件称为NTFS数据流,:.jpg被自动除去,剩下/xx.asp

漏洞产生流程:

大概流程为: 请求 /aaa.asp;xxxx.jpg N1:从头部查找查找 "."号,获得 .asp;xxxx.jpg N2:查找";"号,如果有则内存截断 N3:查找"/",如果有则内存截断 最终,将保留下来 .asp 字符串,从META_SCRIPT_MAP脚本映射表里与扩展名匹配对比,并反馈给了asp.dll处理执行脚本

第二种,在IIS6.0下,分号后面的不被解析,也就是说

xxx.asp;.jpg

服务器执行为xxx.asp

还有IIS6.0 默认的可执行文件除了asp还包含这三种(这种主要是由于在 IIS 默认配置中,这几个后缀默认由 asp.dll 来解析,所以执行权限和 .asp 一摸一样,可在配置中自行删除该后缀,以防止安全隐患)/xx.asa/xx.jpg 或 /xx.cer/xx.jpg 或 xx.asa;.jpg都是可以的。

/xxx.asa
/xxx.cer
/xxx.cdx
IIS 7.0/IIS 7.5/ Nginx <8.03畸形解析漏洞

Iis7.0搭建过程http://www.php.cn/php-weizijiaocheng-386363.html

在默认Fast-CGI开启状况下,在一个文件路径(/xx.jpg)后面加上/xx.php会将 /xx.jpg/xx.php 解析为 php 文件。

常用利用方法: 将一张图和一个写入后门代码的文本文件合并 将恶意文本写入图片的二进制代码之后,避免破坏图片文件头和尾

e.g. copy xx.jpg/b + yy.txt/a xy.jpg

/b 即二进制[binary]模式

/aascii模式xx.jpg正常图片文件

yy.txt 内容 <?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?>

意思为写入一个内容为<?php eval($_POST[cmd])?>名称为shell.php的文件

Nginx <8.03 空字节代码执行漏洞

Fast-CGI关闭的情况下,Nginx <=0.8.37 依然存在解析漏洞

在一个文件路径(/xx.jpg)后面加上%00.php会将/xx.jpg%00.php 解析为 php文件

Nginx在图片中嵌入PHP代码然后通过访问xxx.jpg%00.php来执行其中的代码

Apache解析漏洞

Apache 是从右到左开始判断解析,如果为不可识别解析,就再往左判断.

Apache将从右至左开始判断后缀,若x3非可识别后缀,再判断x2,直到找到可识别后缀为止,然后将该可识别后缀进解析

test.php.x1.x2.x3 则会被解析为php

如何判断合法的后缀就是这个漏洞的利用关键,测试时可以尝试上传一个xxx.php.rara.jpg.png.x2.x1…去测试是否是合法后缀

php|php3|phtml 仍可被Apache解析

IIS写权限漏洞(HTTP PUT)

该漏洞的产生原因来源于服务器配置不当造成,利用IIS PUT Scaner扫描有漏洞的iis,此漏洞主要是因为服务器开启了webdav的组件导致的可以扫描到当前的操作,具体操作其实是通过webdav的OPTION来查询是否支持PUT。

HTTP PUT方法

PUT: 用于向服务器发送请求,如果URI不存在,则要求服务器根据请求创建资源,如果存在,服务器就接受请求内容,并修改URI资源的原始版本。

一般利用过程

扫描目标是否存在漏洞

利用PUT方法上传文件(一般上传一句话或者大马)

把上传文件转为脚本文件

然后连上即可

IIS短文件漏洞

漏洞成因:为了兼容16位MS-DOS程序,Windows为文件名较长的文件(和文件夹),生成了对应的windows 8.3 短文件名。

在Windows下查看对应的短文件名,可以使用命令dir /x。(/x查看短文件名)

举个例子比如,在C盘下创建了一个名为aaaaaaaaaaaaaaa.txt文件:

观察命令结果,可以看到,其对应的短文件名 AAAAAA~1.TXT。该短文件名有以下特征:

  1. 只有前六位字符直接显示,后续字符用~1指代。其中数字1还可以递增,如果存在多个文件名类似的文件(名称前6位必须相同,且后缀名前3位必须相同)。
  2. 后缀名最长只有3位,多余的被截断。

我们可以在启用.net的IIS下暴力列举短文件名,原因是:

  1. 访问构造的某个存在的短文件名,会返回404
  2. 访问构造的某个不存在的短文件名,会返回400
修复

1) 升级.net framework

2) 修改注册表键值:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem修改NtfsDisable8dot3NameCreation为1。

这个漏洞其实已将相当老了,我只做了一点了解。

IIS在有webshell的情况下应该查看什么东西

默认IIS站点配置文件有2个MBSchema.xm和MetaBase.xml,

路径是C:\WINDOWS\system32\inetsrv(一般这个目录设置的everyone读的权限.)

MetaBase.xml这个文件是存的站点IIS配置的信息.里面可以查到所有本服务器IIS下设置的站点目录和配置。

几个主要的配置有:

ServerComment:我的网站 //站点的名称

ServerBindings:80 //站点的端口

Path="D:\wwwroot" //这里是站点的路径

DefaultDoc="index.asp,index.php,index.htm,Default.htm,Default.asp,Default.aspx" //默认文档头,就是主页显示文件名

ScriptMaps==".asa,C:\WINDOWS\syst..........." //站点支持的哪些脚本.

还有就是看C:\WINDOWS\system32\inetsrv\History这个目录,这个目录里是对每次站点的IIS设置进行的备份.

但这些都涉及到权限问题,如果权限默认设置严格就访问不了了。

IIS安全配置

账号安全

合理分配用户账号:按照用户分配账号,避免用户账号和设备间通信使用的账号共享。

1.为不同的维护人员创建账号,进入”控制面板”->管理工具->计算机管理,在系统工具->本地用户和组:根据系统的要求设定不同的账号和账号组,对应设置IIS系统管理员权限。

2. 为创建账号设置权限: IIS管理器->相应网站“属性”->目录安全性->匿名访问和身份验证控制的编辑:其中包含“匿名访问身份”及”基本(Basic)验证”,基本身份验证包含: 集成windows身份验证、windows域服务器的摘要身份验证、基本身份验证、.NET Passport 身份验证;可以根据维护人员进行不同权限控制配置

删除无关用户账号

配置: 进入”控制面板”->管理工具->计算机管理,在系统工具->本地用户和组:删除或者锁定与设备运行、维护等与工作无关的账号。IIS安装后生成账号: IUSR主机名、IWAM主机名、ASP.NET三用户,根据应用情况建设只保留系统维护账号。

IUSR_主机名: Internet来宾账号,匿名访问Internet信息服务的内置账号,如果删除影响页面浏览,建议保留。

IWAM_主机名:启动IIS进程账号,建议保留

ASP.NET: 计算机账号,用于运行ASP.NET辅助进程账号,IIS系统安装后默认支持ASP。如果不需要动态可以删除,但是建议保留。

口令安全

不要弱密码,不要弱密码,不要弱密码,IIS是能够启用登陆认证的

同时在IIS配置中能够设置密码的最长留期。

自定义错误页面

重写404.html或者重定向错误页面

SSL加密传输

IIS管理器->属性->目录安全性->安全通信->启用SSL

禁用危险HTTP方法

将IIS站点的webdav禁用。再禁用例如PUT等非法方法。


花びらは笑った