常见中间件漏洞

IIS

IIS是Internet Information Services的缩写,意为互联网信息服务,是由微软公司提供的基于运行Microsoft Windows的互联网基本服务。

IIS 目前只适用于 Windows系统,不适用于其他操作系统。

解析漏洞

IIS6.x

该版本 默认会将 *.asp;.jpg 此种格式的文件名,当成Asp解析,原理是 服务器默认不解析; 号及其后面的内容,相当于截断。

172.xxx.xxx.xxx/test/1.asp;.jpg

文件的类型还是jpg,但是当解析时,就会被解析成.asp文件,从而达到绕过上传类型检测的目的,上传一个木马。

基于文件夹名

该版本 默认会将 *.asp/目录下的所有文件当成Asp解析。

172.xxx.xxx.xxx/test/1.asp/1.jpg ,会将1.jpg作为.asp文件解析

另外,IIS6.x除了会将扩展名为.asp的文件解析为asp之外,还默认会将扩展名为.asa,.cdx,.cer解析为asp

修复建议
  1. 限制上传目录执行权限,不允许执行脚本。

  2. 不允许新建目录。

  3. 上传的文件需经过重命名(时间戳+随机数+.jpg等)

IIS7.X

IIS7.x版本 在Fast-CGI运行模式下,在任意文件,例:test.jpg后面加上/.php,会将test.jpg 解析为php文件。

利用前提

该解析漏洞的条件有两个:

  1. 处理程序映射-请求限制

  2. php.inicgi.fix_pathinfo=1(默认1,所以可以不用管)

修复建议

配置php.inicgi.fix_pathinfo=0

短文件名

Microsoft IIS在实现上存在文件枚举漏洞,攻击者可利用此漏洞枚举网络服务器根目录中的文件。

危害:攻击者可以利用"~"字符猜解或遍历服务器中的文件名,或对IIS服务器中的.Net Framework进行拒绝服务攻击。

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

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

由于短文件名的长度固定(xxxxxx~xxxx),因此黑客可直接对短文件名进行暴力破解,从而访问对应的文件。

短文件名有以下特征:

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

  2. 后缀名最长只有3位,多余的被截断。

  3. 访问构造的某个存在的短文件名,会返回404

  4. 访问构造的某个不存在的短文件名,会返回400

修复建议

关闭NTFS 8.3文件格式的支持。

Apache

Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。

解析漏洞

未知扩展名解析漏洞

影响版本

使用module模式与php结合的所有版本,apache存在未知扩展名解析漏洞;使用fastcig模式与php结合的所有版本,apache不存在此漏洞。

Apache 解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断。比

如 test.php.owf.rar ".owf"和".rar" 这两种后缀是apache不可识别解析,apache就会把wooyun.php.owf.rar解

析成php。

配置不当导致解析漏洞

如果运维人员给.php后缀增加了处理器:

复制代码
AddHandler application/x-httpd-php .php 

那么,在有多个后缀的情况下,只要一个文件名中含有.php后缀,即被识别成PHP文件,没必要是最后一个后缀。

利用这个特性,将会造成一个可以绕过上传白名单的解析漏洞。

换行解析漏洞( CVE-2017-15715

影响范围:2.4.0~2.4.29版本

此漏洞形成的根本原因,在于, 正则表达式中不仅匹配字符串结尾位置,也可以匹配\n 或 \r

复制代码
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>

这段代码的主要目的是告诉 Apache 服务器,当遇到以 .php 结尾的文件时,应使用其内置的 PHP 处理器来执行这些文件。这是确保 PHP 脚本能够在服务器上正确运行的重要配置之一。

修复建议

  1. 升级到最新版本

  2. 或将上传的文件重命名为为时间戳+随机数+.jpg的格式并禁用上传文件目录执行脚本权限

Nginx

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,

配置文件错误导致的解析漏洞

该漏洞是Nginx配置所导致,与Nginx版本无关,下面是常见的漏洞配置。

复制代码
server {
location ~ \.php$ {
root /work/www/test;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_pass unix:/tmp/php-fpm.sock;
}
}
  1. 由于nginx.conf的如上配置导致nginx把以'.php'结尾的文件交给fastcgi处理:

  2. 当fastcgi在处理'.php'文件时发现文件并不存在,这时php.ini配置文件中cgi.fix_pathinfo=1 发挥作用,这项配置用于修复路径,如果当前路径不存在则采用上层路径。

  3. 最重要的一点是php-fpm.conf中的security.limit_extensions配置项限制了fastcgi解析文件的类型(即指定什么类型的文件当做代码解析),此项设置为空的时候才允许fastcgi将'.png'等文件当做代码解析。

错误配置导致的漏洞

CRLF注入漏洞

漏洞原理

CRLF是"回车+换行"(\r\n)的简称,其十六进制编码分别为0x0d和0x0a。在HTTP协议中,HTTP header与HTTP Body是用两个CRLF分隔的,浏览器就是根据这两个CRLF来取出HTTP内容并显示出来。所以,一旦我们能够控制HTTP消息头中的字符,注入一些恶意的换行,这样我们就能注入一些会话Cookie或者HTML代码。CRLF漏洞常出现在Location与Set-cookie消息头中。

Nginx在配置HTTP请求强制跳转到HTTPS时,会返回一个302和跳转路径如下图:攻击者则可以注入一个CLRF符号来重新控制HTTP头的内容或者HTTP body的内容。

修复建议
复制代码
location / {
return 302 https://$host$request_uri;
}

目录穿越漏洞和目录遍历漏洞

漏洞原理

如果nginx在配置目录别名(Alias)时,忘了在别名后加"/",就会造成目录穿越漏洞,能被利用来读取web目录以外的文件。

当Nginx配置文件中,autoindex 的值为on时,将造成一个目录遍历漏洞

错误的文件配置:

复制代码
location /files {
autoindex on;
alias c:/WWW/home/;
}
修复建议

目录穿越漏洞:在别名后面添加上"/"就可以了。

目录便利漏洞:将autoindex 的值为置为off

相关推荐
谷大羽1 天前
Kafka Stream实战教程
spring boot·后端·中间件·kafka·stream
隔着天花板看星星1 天前
Kafka-创建topic源码
大数据·分布式·中间件·kafka
get2002 天前
Gin 框架中间件详细介绍
中间件·gin
一水鉴天2 天前
智能工厂的设计软件 为了监管控一体化的全能Supervisor 的监督学习 之 序5 架构for认知系统 总述 (架构全图)
人工智能·学习·中间件·架构
谢尔登2 天前
【Next】中间件
服务器·javascript·中间件
极客先躯3 天前
高级java每日一道面试题-2024年11月09日-缓存中间件篇-Redis和Memecache有什么区别?
java·缓存·中间件·每日一道面试题·高级java·缓存中间件篇
隔着天花板看星星3 天前
Kafka-Controller角色需要做什么?
大数据·分布式·中间件·kafka
留乘船3 天前
使用gin -gorm-jwt-中间件拦截的一个小项目
开发语言·学习·中间件·golang·gin
Amd7945 天前
Nuxt.js 应用中的 vite:serverCreated 事件钩子
中间件·开发·vite·日志·nuxt·跨域·钩子
0x派大星6 天前
【Goland】——Gin 框架中间件详解:从基础到实战
开发语言·后端·中间件·golang·go·gin