跳转至

中间件安全

5.1 Apache

安全基线配置

配置项 建议
运行用户 独立低权限用户(如 www-data),禁止 root
目录权限 配置文件 chmod 640,日志文件 chmod 640
目录浏览 关闭 Options Indexes,防止目录结构泄露
错误页面 自定义,隐藏 Server 版本信息(ServerTokens Prod
日志记录 记录时间、来源 IP、请求方法、URI、状态码、User-Agent
上传目录 取消脚本执行权限(.htaccessphp_flag engine off

文件名解析漏洞

Apache 的 mod_php 配置中,若使用 AddHandler php5-script .php,Apache 会从右向左识别扩展名。遇到不认识的后缀(如 .jpg)继续向左,直到找到认识的 .php

利用:shell.php.jpg → 不认识 .jpg → 向左找到 .php → 按 PHP 执行。

防御:使用 FilesMatch 精确匹配,仅允许特定扩展名执行 PHP:

<FilesMatch "\.(php|php5)$">
    SetHandler application/x-httpd-php
</FilesMatch>


5.2 IIS

IIS 特有的漏洞

漏洞 原理 利用
IIS6 解析漏洞 1.asp;2.jpg → 分号后内容被忽略 上传 shell.asp;.jpg 被解析为 ASP
IIS7 解析漏洞 1.jpg/.php → FastCGI 配置错误 上传 1.jpg 后访问 1.jpg/.php
IIS6 写权限漏洞 WebDAV + 目录可写 PUT 上传 txt → MOVE 重命名为 asp
短文件名漏洞 Windows 8.3 格式(ADMINI~1 可枚举目录下文件

IIS6 写权限漏洞利用链: 1. PUT /shell.txt 上传 ASP 代码(WebDAV 允许 PUT) 2. MOVE /shell.txt 配合 Destination: /shell.asp 重命名 3. 访问 /shell.asp 执行命令

防御:关闭 WebDAV;上传目录取消写入权限或为每个站点设置独立的应用程序池和用户。


5.3 Tomcat

Tomcat 的典型安全问题

问题 说明 利用方式
弱口令后台 tomcat:tomcat 等默认密码 登录 /manager/html 部署 WAR 包
样例目录 /examples/ 未删除 示例代码存在已知漏洞
反序列化(CVE-2020-9484) FileStore 配合恶意序列化文件 上传序列化文件触发反序列化
AJP 协议漏洞(CVE-2020-1938) AJP 协议处理文件包含 读取任意文件

WAR 包部署 getshell: Tomcat 后台的 "WAR file to deploy" 功能允许上传 WAR 包。WAR 包本质是一个 ZIP 压缩包,内含 Web 应用文件。攻击者将 JSP webshell 打包为 WAR 上传,Tomcat 自动部署后访问对应路径即可执行命令。

防御: - 修改默认后台路径 /manager/html,设置强密码 - 删除 webapps 下的 docsexamplesmanagerhost-manager 等默认应用(若不需要) - 升级 Tomcat 到最新版本,关闭不必要的 AJP 端口或配置 secretRequired


5.4 Weblogic

Weblogic 是 Java EE 中间件的代表,其最严重的漏洞类别是反序列化漏洞

反序列化漏洞的本质: Java 反序列化是将字节流恢复为对象的过程。如果应用中接收了不可信的字节流并反序列化,而字节流中包含了恶意构造的对象链(利用链),触发链中的方法可能执行任意代码。

Weblogic 反序列化漏洞时间线

CVE 入口点 影响版本
CVE-2015-4852 T3 协议 + CommonsCollections1 10.3.6, 12.1.3
CVE-2016-0638 T3 协议 + CommonsCollections2 10.3.6, 12.1.3, 12.2.1
CVE-2017-10271 wls-wsat + XMLDecoder 10.3.6, 12.1.3, 12.2.1
CVE-2018-2628 T3 协议 + JRMP 多个版本
CVE-2020-2551 IIOP 协议 14.1.1 之前
CVE-2020-14882 Console 未授权 + com.tangosol.coherence 多个版本

CVE-2017-10271(XMLDecoder 反序列化): Weblogic 的 wls-wsat 组件使用 XMLDecoder 解析 SOAP 消息中的 WorkContext 部分。XMLDecoder 在解析 XML 时会执行其中的 Java 对象构造和方法调用。

攻击者发送包含恶意 XMLDecoder 数据的 SOAP 请求,服务器解析时触发 Runtime.exec() 执行命令。

防御: - 升级补丁:Oracle 对每个 CVE 都发布了补丁 - 关闭 T3/IIOP 协议(若业务不需要) - 使用 Web 应用防火墙规则拦截常见反序列化攻击特征 - 升级到 Weblogic 14c 等最新大版本


5.5 JBoss

JBoss(现 WildFly)是开源 Java 应用服务器,其管理控制台 jmx-consoleweb-console 若未设置密码或存在弱口令,攻击者可直接部署 MBean 执行命令。

JMXInvokerServlet 反序列化JMXInvokerServlet 是 JBoss 的 RMI 入口,接收序列化数据。与 Weblogic 类似,恶意的序列化利用链可导致命令执行。

防御: - 修改 jmx-consoleweb-console 默认密码 - 限制管理接口的访问 IP(仅允许管理机访问) - 升级到 WildFly 最新版本



总结

  • 5.1 Apache
  • 5.2 IIS
  • 5.3 Tomcat
  • 5.4 Weblogic
  • 5.5 JBoss