挖洞经验 | 通过Tomcat Servlet示例页面发现的Cookie信息泄露漏洞
字数 1582 2025-08-15 21:31:48
Tomcat Servlet示例页面Cookie信息泄露漏洞分析与利用
漏洞概述
本漏洞存在于Tomcat默认安装后提供的示例页面中,特别是/examples/servlets/servlet/CookieExample页面。该页面会显示访问者的所有Cookie信息,导致敏感信息泄露。攻击者可利用此漏洞窃取管理员或其他用户的Cookie,进而实现会话劫持。
漏洞背景
Tomcat作为流行的Java应用服务器,安装后会默认包含一些示例页面,用于演示Servlet和JSP功能。这些示例页面通常位于/examples/路径下,包含:
- Servlet Examples
- JSP Examples
- Websocket Examples
虽然这些示例在开发环境中很有用,但在生产环境中保留这些示例页面会带来严重的安全风险。
漏洞发现过程
-
首先识别目标网站是否存在Tomcat示例页面,通常路径为:
/examples/servlets/servlet//examples/jsp/
-
检查可访问的示例页面类型:
- Servlet示例
- JSP示例
- Websocket示例
-
重点测试以下页面:
SessionExample- 会话示例CookieExample- Cookie示例Byte Counter- 包含上传功能
-
在测试中发现
CookieExample页面会显示所有Cookie信息,包括主站的认证Cookie
漏洞详情
漏洞位置
/examples/servlets/servlet/CookieExample
漏洞原理
该示例页面会读取并显示请求中的所有Cookie信息,包括:
- 认证令牌
- 会话ID
- 其他敏感信息
由于Cookie的域范围通常设置为父域(如.example.com),访问子域(如test.example.com)时也会携带这些Cookie。当子域存在此漏洞时,会泄露主站的Cookie信息。
影响范围
- 使用Tomcat且未删除示例页面的网站
- 子域与主站共享Cookie的情况
漏洞验证
手动验证
- 访问目标URL:
https://target.com/examples/servlets/servlet/CookieExample - 观察页面是否显示当前用户的Cookie信息
POC代码
<!-- 点击劫持利用代码 -->
<!DOCTYPE html>
<html>
<head>
<title>Clickjacking Test</title>
<style>
iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
opacity: 0.5; /* 可调整为透明 */
z-index: 2;
}
.overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 1;
background-color: #fff;
/* 可添加诱骗内容 */
}
</style>
</head>
<body>
<div class="overlay">
<!-- 诱骗用户点击的内容 -->
<h1>请点击此处继续</h1>
</div>
<iframe src="https://target.com/examples/servlets/servlet/CookieExample"></iframe>
</body>
</html>
漏洞利用
- 信息收集:通过访问
CookieExample页面直接获取Cookie - 点击劫持:
- 创建恶意页面,内嵌目标页面为透明iframe
- 诱骗用户点击,使其在不知情的情况下访问漏洞页面
- 捕获显示的Cookie信息
- 会话劫持:将获取的Cookie注入浏览器,接管用户会话
修复建议
-
立即措施:
- 删除Tomcat的示例应用:移除
webapps/examples目录 - 或禁用对
/examples/路径的访问
- 删除Tomcat的示例应用:移除
-
长期措施:
- 生产环境中不应安装示例应用
- 定期安全审计,检查是否存在遗留测试页面
- 实施内容安全策略(CSP)防止点击劫持
- 对Cookie设置HttpOnly和Secure属性
-
Tomcat配置:
- 在
conf/web.xml中禁用示例应用 - 限制默认应用的访问权限
- 在
经验总结
- 子域安全:不要忽视子域的安全评估,子域漏洞可能影响主站
- 测试页面:生产环境必须移除所有测试和示例页面
- Cookie安全:合理设置Cookie的作用域和安全属性
- 会话管理:定期检查会话管理机制的安全性
- 安全配置:遵循Tomcat的安全配置最佳实践
参考链接
- Rapid7的Tomcat示例信息泄露漏洞
- OWASP关于会话管理的指南
- Tomcat官方安全配置文档
通过此案例可以看出,即使是看似无害的示例页面也可能成为严重安全漏洞的来源。安全团队应确保生产环境中不存在任何测试和示例代码,并定期进行全面的安全审计。