中间件安全漏洞复现与防御指南
目录
IIS安全漏洞
短文件漏洞
漏洞描述:IIS短文件名泄露漏洞,攻击者可以利用此漏洞收集服务器上的文件信息。
影响版本:IIS 1.0-10.0
复现步骤:
- 构造特殊格式的URL请求,如
http://target/~1/a.aspx - 根据服务器响应判断文件是否存在
防御措施:
- 禁用短文件名功能
- 升级到最新版本IIS
- 使用URL重写规则过滤包含波浪线(~)的请求
文件解析漏洞
漏洞描述:IIS在解析文件时存在缺陷,可能导致非可执行文件被当作脚本执行。
典型场景:
- 上传
test.jpg文件,内容包含恶意代码 - 访问
test.jpg/test.php时,代码被执行
防御措施:
- 严格限制上传文件类型
- 配置Handler映射,确保图片文件不被解析为脚本
- 设置正确的MIME类型
HTTP.SYS蓝屏崩溃
漏洞描述:IIS的HTTP.SYS组件存在远程拒绝服务漏洞,可导致服务器蓝屏崩溃。
影响版本:特定版本的IIS
防御措施:
- 及时安装微软安全补丁
- 配置防火墙限制恶意请求
- 使用WAF防护
CVE-2017-7269
漏洞描述:IIS 6.0 WebDAV远程代码执行漏洞,攻击者可通过特制的PROPFIND请求执行任意代码。
影响版本:IIS 6.0
复现条件:
- 目标服务器运行IIS 6.0
- 启用了WebDAV扩展
防御措施:
- 禁用WebDAV功能
- 升级到更高版本IIS
- 安装微软官方补丁
Nginx安全漏洞
后缀解析漏洞
漏洞描述:Nginx配置不当可能导致文件被错误解析,如将图片文件当作PHP脚本执行。
典型配置错误:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
}
漏洞利用:
- 上传包含恶意代码的图片文件
test.jpg - 访问
http://target/test.jpg/.php触发代码执行
防御措施:
- 严格配置location匹配规则
- 确保
$符号不被转义 - 使用完整路径匹配而非正则匹配
CVE-2013-4547文件名逻辑漏洞
漏洞描述:Nginx 0.8.41-1.4.3/1.5.0-1.5.7版本存在文件名逻辑漏洞,可绕过安全限制。
复现步骤:
- 上传带有空格和空字节的文件名,如
test.gif - 访问
http://target/test.gif[0x20][0x00].php - 恶意代码被执行
防御措施:
- 升级到最新版本Nginx
- 严格验证上传文件名
- 禁用不必要的HTTP方法
CVE-2021-23017
漏洞描述:Nginx DNS解析漏洞,可导致拒绝服务或远程代码执行。
影响版本:特定版本Nginx
防御措施:
- 升级到修复版本
- 配置DNS解析超时时间
- 使用本地hosts文件解析关键域名
CVE-2017-7529
漏洞描述:Nginx范围过滤器整数溢出漏洞,可导致信息泄露。
复现方法:
curl -v --header "Range: bytes=-100,-9223372036854775808" http://target/file
防御措施:
- 升级到Nginx 1.13.3或更高版本
- 禁用不必要的模块
- 配置WAF过滤恶意Range头
Apache安全漏洞
CVE-2021-42013 RCE
漏洞描述:Apache HTTP Server 2.4.49-2.4.50路径遍历漏洞,可导致远程代码执行。
影响版本:Apache 2.4.49-2.4.50
复现步骤:
- 构造特殊路径请求:
curl -X POST 'http://target/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh' -d 'echo;id'
- 服务器执行id命令并返回结果
防御措施:
- 立即升级到Apache 2.4.51或更高版本
- 禁用CGI脚本执行
- 配置严格的目录权限
CVE-2021-41773 目录穿越
漏洞描述:Apache 2.4.49路径规范化缺陷,可导致目录穿越和文件泄露。
复现方法:
curl -v --path-as-is "http://target/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd"
防御措施:
- 升级到Apache 2.4.50或更高版本
- 配置
Require all denied保护敏感目录 - 禁用Alias指令中的危险配置
CVE-2017-15715 换行解析漏洞
漏洞描述:Apache 2.4.0-2.4.29换行解析漏洞,可绕过文件上传限制。
漏洞原理:
- 文件名
test.php\x0A被当作test.php解析 - 绕过上传黑名单限制
防御措施:
- 升级到Apache 2.4.30或更高版本
- 严格验证上传文件名
- 使用白名单而非黑名单策略
Tomcat安全漏洞
弱口令攻击
漏洞描述:Tomcat管理界面默认或弱口令可导致未授权访问。
常见弱口令组合:
- tomcat/tomcat
- admin/admin
- root/root
攻击步骤:
- 访问
http://target:8080/manager/html - 尝试常见弱口令组合
- 登录成功后上传WAR包获取shell
防御措施:
- 修改默认密码为复杂密码
- 限制管理界面访问IP
- 禁用不必要的管理功能
CVE-2017-12615 文件上传
漏洞描述:Tomcat 7.0.0-7.0.79版本在启用HTTP PUT方法时可上传恶意JSP文件。
复现步骤:
- 构造PUT请求上传JSP webshell:
PUT /shell.jsp/ HTTP/1.1
Host: target:8080
Content-Type: application/x-www-form-urlencoded
Content-Length: 100
<% out.println("Hello World"); %>
- 访问上传的shell.jsp执行代码
防御措施:
- 升级到Tomcat 7.0.80或更高版本
- 配置
readonly和VirtualDirContext为True - 禁用PUT方法
CVE-2020-1938 文件包含
漏洞描述:Tomcat AJP协议(默认8009端口)实现缺陷可导致任意文件读取。
影响版本:
- Tomcat 6
- Tomcat 7 < 7.0.100
- Tomcat 8 < 8.5.51
- Tomcat 9 < 9.0.31
复现方法:
python2 CNVD-2020-10487-Tomcat-Ajp-lfi.py target -p 8009 -f WEB-INF/web.xml
防御措施:
- 升级到安全版本
- 禁用AJP协议
- 配置AJP协议认证凭证
CVE-2020-9484 反序列化
漏洞描述:Tomcat会话持久化反序列化漏洞,特定条件下可导致RCE。
利用条件:
- 攻击者可控制服务器文件内容和名称
- 使用FileStore配置PersistenceManager
- sessionAttributeValueClassNameFilter配置不当
- 攻击者知道FileStore存储位置
防御措施:
- 升级到安全版本
- 配置严格的sessionAttributeValueClassNameFilter
- 限制文件上传权限
通用防御建议
- 及时更新:保持中间件版本为最新稳定版
- 最小化原则:禁用不必要的功能和服务
- 权限控制:遵循最小权限原则配置服务账户
- 日志监控:启用详细日志并定期审计
- 网络隔离:将中间件部署在内网,限制外网访问
- 安全配置:参考官方安全加固指南进行配置
- 漏洞扫描:定期进行安全扫描和渗透测试
- 备份策略:建立完善的备份和应急响应机制
通过以上措施,可有效降低中间件安全风险,保护Web应用免受攻击。