挖洞经验 | 通过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

虽然这些示例在开发环境中很有用,但在生产环境中保留这些示例页面会带来严重的安全风险。

漏洞发现过程

  1. 首先识别目标网站是否存在Tomcat示例页面,通常路径为:

    • /examples/servlets/servlet/
    • /examples/jsp/
  2. 检查可访问的示例页面类型:

    • Servlet示例
    • JSP示例
    • Websocket示例
  3. 重点测试以下页面:

    • SessionExample - 会话示例
    • CookieExample - Cookie示例
    • Byte Counter - 包含上传功能
  4. 在测试中发现CookieExample页面会显示所有Cookie信息,包括主站的认证Cookie

漏洞详情

漏洞位置

/examples/servlets/servlet/CookieExample

漏洞原理

该示例页面会读取并显示请求中的所有Cookie信息,包括:

  • 认证令牌
  • 会话ID
  • 其他敏感信息

由于Cookie的域范围通常设置为父域(如.example.com),访问子域(如test.example.com)时也会携带这些Cookie。当子域存在此漏洞时,会泄露主站的Cookie信息。

影响范围

  • 使用Tomcat且未删除示例页面的网站
  • 子域与主站共享Cookie的情况

漏洞验证

手动验证

  1. 访问目标URL:https://target.com/examples/servlets/servlet/CookieExample
  2. 观察页面是否显示当前用户的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>

漏洞利用

  1. 信息收集:通过访问CookieExample页面直接获取Cookie
  2. 点击劫持
    • 创建恶意页面,内嵌目标页面为透明iframe
    • 诱骗用户点击,使其在不知情的情况下访问漏洞页面
    • 捕获显示的Cookie信息
  3. 会话劫持:将获取的Cookie注入浏览器,接管用户会话

修复建议

  1. 立即措施

    • 删除Tomcat的示例应用:移除webapps/examples目录
    • 或禁用对/examples/路径的访问
  2. 长期措施

    • 生产环境中不应安装示例应用
    • 定期安全审计,检查是否存在遗留测试页面
    • 实施内容安全策略(CSP)防止点击劫持
    • 对Cookie设置HttpOnly和Secure属性
  3. Tomcat配置

    • conf/web.xml中禁用示例应用
    • 限制默认应用的访问权限

经验总结

  1. 子域安全:不要忽视子域的安全评估,子域漏洞可能影响主站
  2. 测试页面:生产环境必须移除所有测试和示例页面
  3. Cookie安全:合理设置Cookie的作用域和安全属性
  4. 会话管理:定期检查会话管理机制的安全性
  5. 安全配置:遵循Tomcat的安全配置最佳实践

参考链接

通过此案例可以看出,即使是看似无害的示例页面也可能成为严重安全漏洞的来源。安全团队应确保生产环境中不存在任何测试和示例代码,并定期进行全面的安全审计。

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代码 漏洞利用 信息收集 :通过访问 CookieExample 页面直接获取Cookie 点击劫持 : 创建恶意页面,内嵌目标页面为透明iframe 诱骗用户点击,使其在不知情的情况下访问漏洞页面 捕获显示的Cookie信息 会话劫持 :将获取的Cookie注入浏览器,接管用户会话 修复建议 立即措施 : 删除Tomcat的示例应用:移除 webapps/examples 目录 或禁用对 /examples/ 路径的访问 长期措施 : 生产环境中不应安装示例应用 定期安全审计,检查是否存在遗留测试页面 实施内容安全策略(CSP)防止点击劫持 对Cookie设置HttpOnly和Secure属性 Tomcat配置 : 在 conf/web.xml 中禁用示例应用 限制默认应用的访问权限 经验总结 子域安全 :不要忽视子域的安全评估,子域漏洞可能影响主站 测试页面 :生产环境必须移除所有测试和示例页面 Cookie安全 :合理设置Cookie的作用域和安全属性 会话管理 :定期检查会话管理机制的安全性 安全配置 :遵循Tomcat的安全配置最佳实践 参考链接 Rapid7的Tomcat示例信息泄露漏洞 OWASP关于会话管理的指南 Tomcat官方安全配置文档 通过此案例可以看出,即使是看似无害的示例页面也可能成为严重安全漏洞的来源。安全团队应确保生产环境中不存在任何测试和示例代码,并定期进行全面的安全审计。