中间件安全¶
5.1 Apache¶
安全基线配置
| 配置项 | 建议 |
|---|---|
| 运行用户 | 独立低权限用户(如 www-data),禁止 root |
| 目录权限 | 配置文件 chmod 640,日志文件 chmod 640 |
| 目录浏览 | 关闭 Options Indexes,防止目录结构泄露 |
| 错误页面 | 自定义,隐藏 Server 版本信息(ServerTokens Prod) |
| 日志记录 | 记录时间、来源 IP、请求方法、URI、状态码、User-Agent |
| 上传目录 | 取消脚本执行权限(.htaccess 中 php_flag engine off) |
文件名解析漏洞
Apache 的 mod_php 配置中,若使用 AddHandler php5-script .php,Apache 会从右向左识别扩展名。遇到不认识的后缀(如 .jpg)继续向左,直到找到认识的 .php。
利用:shell.php.jpg → 不认识 .jpg → 向左找到 .php → 按 PHP 执行。
防御:使用 FilesMatch 精确匹配,仅允许特定扩展名执行 PHP:
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 下的 docs、examples、manager、host-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-console 和 web-console 若未设置密码或存在弱口令,攻击者可直接部署 MBean 执行命令。
JMXInvokerServlet 反序列化:
JMXInvokerServlet 是 JBoss 的 RMI 入口,接收序列化数据。与 Weblogic 类似,恶意的序列化利用链可导致命令执行。
防御:
- 修改 jmx-console 和 web-console 默认密码
- 限制管理接口的访问 IP(仅允许管理机访问)
- 升级到 WildFly 最新版本
总结¶
- 5.1 Apache
- 5.2 IIS
- 5.3 Tomcat
- 5.4 Weblogic
- 5.5 JBoss