目录

前言:

正文:

0x01. 中间件-Apache

1. Apache解析漏洞

2. apache - 换行解析漏洞

3.不常见后缀名(绕黑名单)

4.分布式配置文件(.htaccess)

0x02 中间件 - IIS

1. iis - PUT漏洞

2. iis - 短文件名猜解 漏洞

3.iis - 解析漏洞

0x03 .中间件-  Nginx

1.畸形解析漏洞

 2.CRLF注入

 3.目录穿越

文末


前言:

有时候会连中间件,服务器,容器分不清楚,我当时看过一篇博客,讲的很详细。于是我摘抄出来

掌握中间件漏洞,对渗透测试有很大的帮助,例如 Apache和iis的解析漏洞,以及weblogic反序列化漏洞

基础概念与作用

这里只介绍web中间件、web服务器、web容器,因为除了web以外,其概念还可以扩展为数据库等。

web服务器

web服务器用于提供http服务,即向客户端返回信息,其可以处理HTTP协议,响应针对静态页面或图片的请求,控制页面跳转,或者把动态请求委托其它程序(中间件程序)等。

web中间件

web中间件用于提供系统软件和应用软件之间的连接,以便于软件各部件之间的沟通,其可以为一种或多种应用程序提供容器。

web容器

web容器用于给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,是中间件的一个组成部分,它实现了对动态语言的解析。比如tomcat可以解析jsp,是因为其内部有一个jsp容器。

所属的类别

web服务器:IIS、Apache、nginx、tomcat、weblogic、websphere等。
web中间件:apache tomcat、BEA WebLogic、IBM WebSphere等。
web容器:    JSP容器、SERVLET容器、ASP容器等。

注意:web中间件与web服务器是有重叠的,原因在于tomcat等web中间件也具备web服务器的功能。

本段摘抄于一位前辈的一段,具体可以看看吧点击这里跳转

 正文:

0x01. 中间件-Apache

1. Apache解析漏洞

① 漏洞介绍及成因

Apache文件解析漏洞与用户的配置有密切关系,严格来说属于用户配置问题。

Apache文件解析漏洞涉及到一个解析文件的特性:

Apache默认一个文件可以有多个以点分隔的后缀,当右边的后缀无法识别会继续向左识别,当我们请求这样一个文件:shell.php.aaa

 

windows nginx 和IIS一起使用_php

当发现php时,发现识别成功,于是开始执行

 ②漏洞修复

将AddHandler application/x-httpd-php .php的配置文件删除。

③利用条件为

  1. 使用module模式,且正则符合条件
  2. 文件扩展名中至少带有一个.php

2. apache - 换行解析漏洞

(CVE-2017-15715)

其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。

这个漏洞我不多解释

3.不常见后缀名(绕黑名单)

php、php3、php4、php5、phpt、phtml

windows nginx 和IIS一起使用_中间件漏洞_02

windows nginx 和IIS一起使用_文件名_03

4.分布式配置文件(.htaccess)

.haccess   提供了针对目录改变配置的方法,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录
意思就是说 只要这个开启了,一切都听.htaccess的

先进入命令行命名   就可以生成 .haccess文件了

ren 1.txt .htaccess AddType application/x-httpd-php .jpg

 同时,1.txt里面要有上面这个代码。告诉给服务器说:把jpg文件当做php解析

例如:

windows nginx 和IIS一起使用_文件名_04

在cmd中使用命令  ren 1.txt .htaccess

 

  

windows nginx 和IIS一起使用_中间件安全_05

成功的自动生成了一个配置文件

windows nginx 和IIS一起使用_文件名_06

步骤:先上传配置文件 .htaccess

然后 再上传图片马

 

 

0x02 中间件 - IIS

1. iis - PUT漏洞

①、漏洞介绍及成因

IIS Server 在 Web 服务扩展中开启了 WebDAV ,配置了可以写入的权限,造成任意文件上传。

版本: IIS6.0

②、漏洞复现

1) 开启WebDAV 和写权限

windows nginx 和IIS一起使用_中间件安全_07

windows nginx 和IIS一起使用_文件名_08

2) 利用burp测试

抓包,将GET请求改为OPTIONS

windows nginx 和IIS一起使用_web安全_09

3)利用工具进行测试

windows nginx 和IIS一起使用_中间件漏洞_10

成功上传,再上传一句话木马,然后用菜刀连接,getshell

windows nginx 和IIS一起使用_中间件安全_11

3、漏洞修复

关闭WebDAV 和写权限

 

2. iis - 短文件名猜解 漏洞

1、漏洞介绍及成因

IIS的短文件名机制,可以暴力猜解短文件名,访问构造的某个存在的短文件名,会返回404,访问构造的某个不存在的短文件名,返回400。

2、漏洞复现

1)、在网站根目录下添加aaaaaaaaaa.html文件

windows nginx 和IIS一起使用_web安全_12

3) 进行猜解

windows nginx 和IIS一起使用_文件名_13

windows nginx 和IIS一起使用_中间件漏洞_14

3、漏洞修复

修复方法:

1)升级.net framework

2)修改注册表禁用短文件名功能

快捷键Win+R打开命令窗口,输入regedit打开注册表窗口,找到路径:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem,将其中的 NtfsDisable8dot3NameCreation这一项的值设为 1,1代表不创建短文件名格式,修改完成后,需要重启系统生效

3)CMD关闭NTFS 8.3文件格式的支持

4)将web文件夹的内容拷贝到另一个位置,如c:\www到d:\w,然后删除原文件夹,再重命名d:\w到c:\www。

修复后:

windows nginx 和IIS一起使用_web安全_15

4、局限性

1) 此漏洞只能确定前6个字符,如果后面的字符太长、包含特殊字符,很难猜解;

2) 如果文件名本身太短(无短文件名)也是无法猜解的;

3) 如果文件名前6位带空格,8.3格式的短文件名会补进,和真实文件名不匹配;

 

 

3.iis - 解析漏洞

补充   : iis 黑名单绕过

IIS6.0除了将ASP后缀当做ASP进行解析的同时,当文件后缀名字为.asa .cer .cdx 也会当做asp去解析,这是因为IIS6.0在应用程序扩展中默认设置了.asa .cer .cdx 都会调用 asp.dll

①. 分号(;)截断

IIS6.0 第二个漏洞,分号; 分号(;)绕过,这个分号等于php版本问题导致的00截断一样
所以在上传的时候抓包,然后asp的马
改为 qwe.asp;.jpg 他会截断,读取到qwe.asp 但是必须要把jpg带上,不然无法访问

②~③特殊符号造成的解析漏洞
IIS5.1和IIS7.5无此漏洞。
IIS 6.0在处理含有特殊符号的文件路径时会出现逻辑错误,从而造成文件解析漏洞。这一漏洞有两种完全不同的利用方式:
qwe.asp;.jpg 他将当做asp进行解析
qwe.asp/123.jpg 他将当做asp进行解
理论上就是随便写个 xxx.jpg 然后它会去访问这个图片
如果不存在就会返回上个文件去执行

请求 /aaa.asp;xxxx.jpg

N1:从头部查找查找 “.”号,获得 .asp;xxxx.jpg

N2:查找”;”号,如果有则内存截断

N3:查找”/“,如果有则内存截断

最终,将保留下来 .asp 字符串,从META_SCRIPT_MAP脚本映射表里与扩展名匹配对比,并反馈给了asp.dll处理

windows nginx 和IIS一起使用_中间件漏洞_16

网上流传说法:

.asp结尾的目录下面,而被IIS当成可执行文件来解析

以及asp从左往右读,接下去的话会按照asp解析。这个具体不清楚

aa.asp/1.b

例如这个例子,这个1.b也会按照asp解析

 

0x03 .中间件-  Nginx

1.畸形解析漏洞

Nginx默认是以CGI的方式支持PHP解析的,普遍的做法是在Nginx配置文件中通过正则匹配设SCRIPT_FILENAME。
当访问www.xx.com/phpinfo.jpg/1.php这个URL时,$fastcgi_script_name会被设置“phpinfo.jpg/1.php”,然后构造成SCRIPT_FILENAME(绝对路径)传递给PHP CGI,如果开启了cgi.fix_pathinfo=1选项(这个默认值就是1,所以没有设置过就是开启),那么就会触发在PHP中的如下逻辑:

也是一个逻辑问题,所以说我们只需要在正常的.jpg后面加/.php就可以成功的绕过解析

进入靶场

windows nginx 和IIS一起使用_web安全_17

上传成功,在去访问路径,在路径的后面加个/.php 原理就是找上级文件意思

windows nginx 和IIS一起使用_中间件安全_18

 漏洞修复

1) 将php.ini文件中的cgi.fix_pathinfo的值设为0.这样php在解析1.php/1.jpg这样的目录时,只要1.jpg不存在就会显示404;

2) 将/etc/php5/fpm/pool.d/www.conf中security.limit_ectensions后面的值设为.php

 

 2.CRLF注入

1、 漏洞简介及成因

CRLF时“回车+换行”(\r\n)的简称。

HTTP Header与HTTP Body时用两个CRLF分隔的,浏览器根据两个CRLF来取出HTTP内容并显示出来。

通过控制HTTP消息头中的字符,注入一些恶意的换行,就能注入一些会话cookie或者html代码,由于Nginx配置不正确,导致注入的代码会被执行。

2、 漏洞复现

访问页面,抓包

请求加上/%0d%0a%0d%0a<img src=1 οnerrοr=alert(/xss/)>

windows nginx 和IIS一起使用_文件名_19

由于页面重定向,并没有弹窗。

3、 漏洞修复

Nginx的配置文件/etc/nginx/conf.d/error1.conf修改为使用不解码的url跳转。

 

3.目录穿越

1、 漏洞简介及成因

Nginx反向代理,静态文件存储在/home/下,而访问时需要在url中输入files,配置文件中/files没有用/闭合,导致可以穿越至上层目录。

2、 漏洞复现

访问:http://192.168.139.128:8081/files/

windows nginx 和IIS一起使用_中间件漏洞_20

访问:http://192.168.139.128:8081/files../

成功实现目录穿越:

windows nginx 和IIS一起使用_中间件漏洞_21

3、 漏洞修复

Nginx的配置文件/etc/nginx/conf.d/error2.conf的/files使用/闭合。