常见中间件漏洞

中间件

IIS

IIS是Internet Information Service的缩写,意为互联网信息服务,IIS目前只适用于Windows系统不适用于其他操作系统

IIS 6.x漏洞

IIS写权限漏洞

漏洞简介:配置不当导致PUT任意上传。

复现过程:

1.在Web服务中开启WebDev,允许脚本资源访问和写入

2.上传含有.aso一句话的木马,通常上传txt文本不报错,但是上传.asp会报错。

3.使用MOVE方法将上传的txt文件修改为asp文件,MOVE协议不会更改文件内容

4.本地检查到成功上传,然后开启IIS的asp解析功能,这时就可以连接WebShell

修复建议

1.关闭WebDev

2.关闭写入权限

文件解析漏洞
2.1文件解析漏洞

漏洞简介

IIS 6.x会将***.asp;.xxx格式的文件当作xxx.asp**文件执行而不会看;后面的内容。例如:test.asp;.jpg

2.2目录解析漏洞

漏洞简介

IIS 6.x会将以.asp命名的文件夹中的文件都会被当作asp文件执行。

初次之外,IIS 6.x还默认将扩展名为.aaa,.cdx,.cer解析为asp

修复建议:

1.将上传的文件的执行权限设置为无

2.不允许上传新建目录

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

IIS短文件漏洞

漏洞简介

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

输入"dir/x"即可查看短文件名的效果。

修复建议

1.从CMD命令关闭NTFS 8.3文件格式的支持

2.修改注册表

RCE-CVE-2017-7269

漏洞简介

ScStoragePathFromUr函数中的缓冲区溢出允许通过以 “IF: <http: //” 开头的长标头执行任意代码PROPFIND请求。

影响范围

在Windows 2003 R2上开启WebDAV服务的IIS6.0。

修复建议

  1. 关闭WebDev服务
  2. 使用相关防护设备

IIS 7.x漏洞

1.解析漏洞

漏洞简介

在Fast-CG运行模式下,在任意文件后加上/.php,会解析为php文件。

修复建议:

配置cgi.fix_pathinfo(php.ini中)为0并重启php-cgi程序。

2.HTTP.SYS远程代码执行(MS15-034)

漏洞简介:

远程代码执行漏洞存在于HTTP协议堆栈(HTTP.sys)中,当HTTP.sys未正确分析经特殊设计的HTTP请求时会导致此漏洞。成功利用后可在系统账户的上下文中执行任意代码,可导致IIS服务器所在机器蓝屏或读取内存中的数据。

影响范围:

Windows 7、Windows Server 2008 R2、Windows 8 和 Windows 8.1、Windows Server 2012 和 Windows Server 2012 R2

IIS 7.5、IIS 8.0、IIS 8.5

修复建议:

安装修复补丁(KB3042553)

3、认证绕过漏洞

漏洞简介:

该漏洞源于对用户提供的输入未经正确的验证。

影响范围:

IIS 6.0、IIS 7.5

1)安装了PHP的 IIS 6.0身份验证绕过

IIS 6.0加载受保护(如:admin)目录中的PHP文件需要用户认证信息(用户名和密码访问),如果将作为后缀附加到目录名称后面,存在绕过验证并可能访问管理文件等,导致重要信息泄露。

::$INDEX_ALLOCATION/index.php

2)IIS 7.5经典ASP身份认证绕过

配置 ASP和.NET Framework 4.0的 IIS 7.5,通过将后缀附加到需要认证的请求目录名称后面,绕过经典的ASP文件访问限制。

:$i30:$INDEX_ALLOCATION/index.asp

3)IIS 7.5 .NET源码公开和身份验证绕过

配置PHP的 IIS 7.5中存在认证绕过漏洞

http://<victimIIS75>/admin:$i30:$INDEX_ALLOCATION/admin.php

防护建议:

1.IIS 7.5配置.NET Framework 2.0可以不受2)的绕过影响。

2.攻击者需要事先获取IIS服务器受认证保护目录。

Apache

Apache目录结构

bin:存放常用命令工具,如httpd

cgi-bin:存放linux下常用命令,如xxx.sh

error:错误记录

htdocs:网站源码

icons:网站图标

manual:手册

modules:扩展模块

Apache漏洞

未知扩展名解析漏洞

漏洞简介

Apache 的解析漏洞依赖于一个特性: Apache 默认一个文件可以有多个以点分割的后缀,当最右边的后缀无法识别(不在 mime.types 文件内),则 继续向左识别,直到识别到合法后缀才进行解析。

AddHandler 导致的解析漏洞

漏洞简介

如果运维人员给 .php 后缀增加了处理器: AddHandler application/x-httpd-php .php 那么,在有多个后缀的情况下,只要一个文件名中含有 .php 后缀,即被识别成 PHP 文件,没必要是最后一个后缀。 利用这个特性,将会造成一个可以绕过上传白名单的解析漏洞。

Apache HTTPD 换行解析漏洞( CVE-2017-15715 )

漏洞简介

此漏洞形成的根本原因,在于$ , 正则表达式中$不仅匹配字符串结尾位置,也可以匹配\n 或 \r 在解析 PHP 时, 1.php\x0A 将被按照 PHP 后缀进行解析,导致绕过一些服务器的安全策略。

修复建议
  1. 升级到最新版本
  2. 或将上传的文件重命名为为时间戳 + 随机数 +.jpg 的格式并禁用上传文件目录执行脚本权限。

Nginx

Nginx的定义

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

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

漏洞简介

对于任意文件名,在后面添加 /xxx.php ( xxx 为任意字符)后 , 即可将文件作为 php 解析。 例: info.jpg 后面加上 /xxx.php ,会将 info.jpg 以 php 解析。

修复验证

1.配置cgi.fix_pathinfo(php.ini中)为0并重启php-cgi程序。

2.如果需要cgi.fix_pathinfo的特性(如Wordpress),可以禁止上传目录的执行脚本权限。或站库分离。

3.高版本PHP提供了security.limit_extensions这个配置参数,设置security.limit_extensions= .php

目录遍历

漏洞简介

与Apache一样属于配置所导致的问题。一般配置如下C:\phpStudy\nginx\conf\nginx.conf 文件下打开autoindex:on

修复建议

将 autoindex 的值为置为 off 。

空字节任意代码执行漏洞

漏洞简介

在nginx-0.7.65/html/目录下创建 info.jpg, 内容为 , 访问info.jpg,并抓包,修改为info.jpg…php,在 Hex 选修卡中将 jpg 后面的.,更改为00

修复建议

升级Nginx版本

文件名逻辑漏洞

漏洞简介

在 Windows 弄了个环境,后来发现要文件名的后面存在空格,而 Windows 是不允许存在此类文件的。例如可以存在“info.png[空格]”

修复建议

设置 security.limit_extensions = .php

或升级 Nginx Nginx 配置错误导致的安全问题

Tomcat漏洞

Tomcat

Tomcat目录结构

bin:二进制文件

lib:全局的jar包

temp:临时性文件

webapps:Java的web项目,需要部署的项目就要放在这个目录中

work:JSP代码翻译的Java代码以及编译的.class文件

了解Tomcat

server.xml:配置tomcat启动的端口号、host主机、context等

web.xml:部署描述文件,部署每个webapp时都会调用该文件,配置该web应用的默认servlet

tomcat-user.xml:tomcat的用户密码和权限

Tomcat漏洞

任意文件写入

影响范围

Tomcat 7.0.0~7.0.81(默认配置)

漏洞原理

配置不当,导致将conf/web.xml中的readonly设置为false,导致可以使用PUT上传任意文件,但限制jsp后缀。不同平台有多种的绕过方法。

修复建议

readonly设置为true

远程代码执行

影响范围: Tomcat 9.0.0.M1~9.0.17 Tomcat 8.5.0~8.5.39 Tomcat 7.0.0~7.0.93

前提

Tomcat的CGI_Servlet组件默认是关闭的,在conf/web.xml中找到注释的部分,去掉注释,并配置enableCmdLineArguments和executable。

修复建议

1、更新版本。 2、禁用enableCmdLineArguments参数。

AJP文件包含漏洞分析

影响版本: Tomcat 6.x Tomcat 7.x <7.0.100 Tomcat 8.x <8.5.51 Tomcat 9.x <9.0.31

漏洞危害

如果目标应用有文件上传的功能,配合文件包含的利用可以达到远程代码执行的危害。

漏洞成因

tomcat部署时有两个重要的配置文件conf/server.xml和conf/web.xml。 前者定义了tomcat启动时设计的组件属性,包含两个用于处理请求的组件connector。如果开启状态下,tomcat启动后会监听8080、8009端口,它们负责接受http、ajp协议的数据。后者用来定义servlet。

Thinkphp

简介

ThinkPHP可在Windows和Linux等操作系统运行,支持Mysql,Sqlite和PostgreSQL等多种数据库以及PDO扩展,是一款跨平台,跨版本以及简单易用的PHP框架。

ThinkPHP 2.x任意代码执行漏洞

原理

ThinkPHP 2.x版本中,使用preg_replace的/e匹配路由

$res = preg_replace('@(\w+)'.$depr.'([^'.$depr.'\/]+)@e', '$var[\'\\1\']="\\2";', implode($depr,$paths));

导致用户的输入参数被插入双引号中执行,造成任意代码执行漏洞。

影响范围

ThinkPHP 2.x

ThinkPHP 3.0版本因为Lite模式下没有修复,也存在该漏洞。

Thinkphp5-5.0.22/5.1.29远程执行代码漏洞

原理

在版本5中,由于框架错误地处理了控制器名称,如果网站未启用强制路由(默认设置),则会导致RCE漏洞。

影响范围

5.0.22 / 5.1.29

Thinkphp5 5.0.23远程执行代码漏洞

漏洞原理

在版本5.0(<5.0.24)中,框架在获取method的方法中没有正确处理方法名,使攻击者可以调用Request类的任何方法,攻击者可以调用Request类任意方法并构造利用链,从而导致远程代码执行漏洞。

影响范围

thinkphp 5.0.0 ~5.0.23

Thinkphp5 SQL注入漏洞和敏感信息泄露漏洞

漏洞原理

传入的某参数在绑定编译指令时没有安全处理,预编译的时候导致SQL异常报错。然而thinkphp5默认开启debug模式,在漏洞环境下构造错误的SQL语法会泄露数据库的账号和密码。

影响范围

ThinkPHP < 5.1.23

JBoss

JBoss简介

JBoss是一个基于J2EE的开发源代码的应用服务器。是一个管理EJB的容器和服务器,支持EJB1.1、EJB2.0和EJB3的规范。但不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。

默认端口

8080,9990

JBoss JMXInvokerServlet 反序列化漏洞(CVE-2015-7501)

漏洞简介

由于JBoss中invoker/JMXInvokerServlet路径对外开放,JBoss的jmx组件支持Java反序列化。

漏洞影响

JBoss Enterprise Application Platform 6.4.4,5.2.0,4.3.0_CP10
JBoss AS (Wildly) 6 and earlier
JBoss A-MQ 6.2.0
JBoss Fuse 6.2.0
JBoss SOA Platform (SOA-P) 5.3.1
JBoss Data Grid (JDG) 6.5.0
JBoss BRMS (BRMS) 6.1.0
JBoss BPMS (BPMS) 6.1.0
JBoss Data Virtualization (JDV) 6.1.0
JBoss Fuse Service Works (FSW) 6.0.0
JBoss Enterprise Web Server (EWS) 2.1,3.0

修复建议

(1)删掉http-invoker.sar组件。路径为C:\jboss-6.1.0.Final\server\default\deploy\http-invoker.sar,删除后访问404。

(2)添加代码C:\jboss6.1.0.Final\server\default\deploy\httpinvoker.sar\invoker.war\WEB-INF下web.xml的security-constraint标签中,对http-invoker组件进行访问控制。

<url-pattern>/*</url-pattern>

JBossMQ JMS反序列化(CVE-2017-7504)

漏洞简介

JBoss AS 4.x及之前版本中,JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java文件存在反序列化漏洞。

影响范围

含JBoss 4.x之前所有版本。

修复建议

升级到最新版本

Weblogic

漏洞简介

WebLogic 是美国 Oracle 公司出品的一个 applicationserver ,确切的说是一个基于 JAVAEE 架构的中间件, WebLogic 是用于开发、集成、部署和管理大型分布 式 Web 应用、网络应用和数据库应用的 Java 应用服务器。将 Java 的动态功能和 Java Enterprise 标准的安全性引入大型网络应用的开发、集成、部署和管理之 中。

默认端口

7001

XMLDecoder反序列化漏洞(CVE-2017-10271 & CVE-2017-3506)

漏洞简介

Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞。

修复建议

1 )安装补丁。 2 )或删除 wls-wsat 组件,再次访问返回 404

wls-wsat反序列化远程代码执行漏洞(CVE-2019-2725)

漏洞简介

此漏洞实际上是CVE-2017-10271的又一入口,CVE-2017-3506的补丁过滤了object;CVE-2017-10271的补丁过滤了new,method标签,且void后面只能跟index,array后面只能跟byte类型的class;CVE-2019-2725的补丁过滤了class,限制了array标签中的byte长度。

影响范围:

10.3.6.0、12.1.3.0

WLS Core Components反序列化命令执行漏洞(CVE-2018-2628)

漏洞成因

通过T3协议触发。

影响范围

10.3.6.0、12.1.3.0、12.2.1.2、12.2.1.3

安全建议

过滤T3协议,连接筛选器选择

weblogic.security.net.ConnectionFilterImpl

保存后重启就好。

任意文件上传漏洞(CVE-2018-2894)

漏洞简介

Weblogic Web Service Test Page中一处任意文件上传漏洞,Web Service Test Page在“生产模式”下默认不开启,所以该漏洞存在限制。

影响范围

10.3.6、12.1.3、12.2.1.2、12.2.1.3

修复建议

1.启动生产模式后Config.do页面登录授权后访问。

2.升级到最新版本。

3.IPS等防御产品加入相应的特征。

IIOP反序列化漏洞(CVE-2020-2551)

影响范围

Oracle WebLogic Server 10.3.6.0.0
Oracle WebLogic Server 12.1.3.0.0
Oracle WebLogic Server 12.2.1.3.0
Oracle WebLogic Server 12.2.1.4.0

修复建议

1. 修改默认端口号,假设修改为8080,在config.xml中添加
   <listen-port>8080</listen-port>
2. 更新补丁。
3. 用户可通过控制T3协议的访问来临时阻断该漏洞的攻击。(需相关人员评估风险)。
​```~~~~