Web中间件常见漏洞分析与防护指南
一、常见Web中间件及其漏洞概述
(一) IIS漏洞
- PUT漏洞
- 短文件名猜解
- 远程代码执行
- 解析漏洞
(二) Apache漏洞
- 解析漏洞
- 目录遍历
(三) Nginx漏洞
- 文件解析
- 目录遍历
- CRLF注入
- 目录穿越
(四) Tomcat漏洞
- 远程代码执行
- war后门文件部署
(五) jBoss漏洞
- 反序列化漏洞
- war后门文件部署
(六) WebLogic漏洞
- 反序列化漏洞
- SSRF
- 任意文件上传
- war后门文件部署
(七) 其它中间件相关漏洞
- FastCGI未授权访问、任意命令执行
- PHPCGI远程代码执行
二、IIS漏洞分析与防护
(一) IIS简介
Internet Information Services(互联网信息服务),微软提供的基于Windows的互联网基本服务,包含Web服务器、FTP服务器等组件。
(二) PUT漏洞
漏洞成因:IIS Server在Web服务扩展中开启了WebDAV并配置了写入权限。
复现步骤:
- 开启WebDAV和写权限
- 使用burp测试,将GET请求改为OPTIONS
- 上传一句话木马并用菜刀连接
修复方案:
- 关闭WebDAV和写权限
(三) 短文件名猜解
漏洞成因:IIS的短文件名机制可被暴力猜解。
复现步骤:
- 在网站根目录添加长文件名文件
- 通过访问构造的短文件名测试存在性(404存在/400不存在)
修复方案:
- 升级.net framework
- 修改注册表禁用短文件名功能:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem 将NtfsDisable8dot3NameCreation设为1 - CMD关闭NTFS 8.3文件格式支持
- 移动并重命名web文件夹
局限性:
- 只能确定前6个字符
- 文件名太短无法猜解
- 文件名前6位带空格会导致不匹配
(四) 远程代码执行
漏洞成因:IIS6.0处理PROPFIND指令时对url长度检查不足导致栈溢出。
复现步骤:
- 在Windows Server 2003 R2 32位上安装IIS6.0
- 执行exp触发漏洞(如弹出计算器)
修复方案:
- 关闭WebDAV服务
- 使用相关防护设备
(五) 解析漏洞
漏洞成因:IIS 6.0处理含特殊符号的文件路径时出现逻辑错误。
利用方式:
/test.asp/test.jpgtest.asp;.jpg
IIS7.5解析漏洞:
test.jpg/.php会被当作php执行
修复方案:
- 过滤新建目录文件名中的'.'
- 禁用新建目录功能
- 限制上传脚本执行权限
- 通过ISApi组件过滤.asp/xm.jpg
三、Apache漏洞分析与防护
(一) Apache简介
世界使用排名第一的Web服务器软件,跨平台、安全性高。
(二) 解析漏洞
漏洞成因:Apache默认一个文件可以有多个以点分隔的后缀,从左向右识别。
复现步骤:
上传如shell.php.xxx文件,当xxx无法识别时会向左识别为php
修复方案:
删除AddHandler application/x-httpd-php .php的配置
(三) 目录遍历
漏洞成因:配置错误导致目录遍历。
修复方案:
修改httpd.conf:
Options+Indexes+FollowSymLinks+ExecCGI → Options-Indexes+FollowSymLinks+ExecCGI
四、Nginx漏洞分析与防护
(一) Nginx简介
轻量级Web服务器/反向代理服务器,高并发能力强。
(二) 文件解析
漏洞成因:任意文件名后添加/任意文件名.php可被解析。
复现步骤:
- 上传含php代码的.gif文件
- 访问
i.gif.2.php可执行php代码
修复方案:
- php.ini中设置
cgi.fix_pathinfo=0 - 限制
security.limit_ectensions为.php
(三) 目录遍历
漏洞成因:配置错误导致目录遍历与源码泄露。
复现步骤:
修改/etc/nginx/sites-avaliable/default添加autoindex on
修复方案:
将autoindex on改为autoindex off
(四) CRLF注入
漏洞成因:通过控制HTTP消息头中的字符注入恶意换行。
修复方案:
修改配置文件使用不解码的url跳转。
(五) 目录穿越
漏洞成因:反向代理配置中路径未用/闭合导致目录穿越。
修复方案:
确保配置文件中的路径使用/闭合。
五、Tomcat漏洞分析与防护
(一) Tomcat简介
轻量级Web应用服务器,JSP开发调试首选。
(二) 远程代码执行
漏洞成因:启用HTTP PUT方法可上传包含任意代码的JSP文件。
影响版本:Apache Tomcat 7.0.0 - 7.0.81
复现步骤:
- 配置开启PUT方法
- 上传JSP木马文件
- 访问执行系统命令
修复方案:
- 禁用PUT方法
- 升级至最新版
(三) war后门文件部署
漏洞成因:后台弱口令导致可上传恶意war包。
复现步骤:
- 爆破后台密码
- 上传含后门的war包
- 部署并启动服务
修复方案:
- 低权限运行Tomcat
- 增加身份验证机制
- 设置目录最小权限
- 避免弱口令
六、jBoss漏洞分析与防护
(一) jBoss简介
基于J2EE的开源应用服务器。
(二) 反序列化漏洞
漏洞成因:Java反序列化过程中过滤不严格。
复现步骤:
- 访问
/invoker/readonly(返回500说明存在漏洞) - 构造恶意序列化数据触发RCE
修复方案:
- 升级至JBOSS AS7
- 删除http-invoker.sar组件
- 对httpinvoker组件进行访问控制
(三) war后门文件部署
漏洞成因:后台弱口令导致可上传恶意war包。
修复方案:加强后台认证,避免弱口令。
七、WebLogic漏洞分析与防护
(一) WebLogic简介
Oracle公司的Java应用服务器。
(二) 反序列化漏洞
复现步骤:
- 构造恶意序列化数据
- 发送至漏洞端点获取shell
修复方案:
- 安装Oracle补丁
- 控制wls-wsat资源访问
(三) SSRF漏洞
漏洞成因:可发送任意HTTP请求攻击内网组件。
复现步骤:
- 访问
/uddiexplorer/SearchPublicRegistries.jsp - 修改请求攻击内网服务
修复方案:
- 删除SearchPublicRegistries.jsp
- 限制uddiexplorer内网访问
- 重命名SearchPublicRegistries.jsp为.jspx
(四) 任意文件上传
漏洞成因:通过config.do页面更改工作目录上传恶意文件。
复现步骤:
- 访问
/ws_utc/config.do - 更改Work Home Dir
- 上传JSP木马
- 访问带时间戳的路径执行
修复方案:
- 安装官方补丁
- 启用"生产模式"
(五) war后门文件部署
漏洞成因:后台弱口令导致可上传恶意war包。
修复方案:防火墙设置端口过滤,避免弱口令。
八、其他中间件漏洞
(一) FastCGI未授权访问、任意命令执行
漏洞成因:开放FastCGI端口(9000)可构造协议包执行命令。
复现步骤:
- 构造FastCGI协议包
- 执行系统命令
修复方案:更改默认端口
(二) PHPCGI远程代码执行
漏洞成因:URL参数传递给php解释器时未过滤命令行开关。
影响版本:php-5.3.12以前版本
复现步骤:
- 访问php页面
- 添加命令行参数执行代码
修复方案:
- 升级php版本
- Apache开启URL过滤
- 安装php补丁