常见中间件漏洞

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

相关推荐
Fireworkitte9 小时前
activemq推数据给前端的方式
中间件·activemq
2401_857610031 天前
Laravel中间件:构建强大Web应用的基石
前端·中间件·laravel
IT云清1 天前
Apache Seata应用侧启动过程剖析——注册中心与配置中心模块
中间件·apache·seata·分布式事务
LightOfNight2 天前
【后端面试题】【中间件】【NoSQL】MongoDB查询优化2(优化排序、mongos优化)
数据库·后端·mongodb·中间件·面试·nosql
feitianli372 天前
在linux系统centos上面安装php7gmp扩展
linux·运维·中间件·centos·扩展屏应用开发
xiaogengtongxu3 天前
Mysql中间件和高可用
数据库·mysql·中间件
阳爱铭3 天前
GitHub:现代软件开发的协作平台
驱动开发·后端·中间件·面试·架构·github·学习方法
空青7263 天前
AOP与IOC详解
java·服务器·分布式·后端·中间件·面试·架构
战神刘玉栋4 天前
《企业实战分享 · 常用运维中间件》
运维·spring cloud·中间件
LightOfNight5 天前
【后端面试题】【中间件】【NoSQL】ElasticSearch的优化方案1(分页查询、刷新间隔、批量提交)
数据库·redis·后端·elasticsearch·缓存·中间件·nosql