FreeBuf|挖洞经验 | 通过Tomcat Servlet示例页面发现的Cookie信息泄露漏洞


FreeBuf|挖洞经验 | 通过Tomcat Servlet示例页面发现的Cookie信息泄露漏洞
本文插图

今天分享的writeup是一个非常有意思的漏洞 , 作者在目标网站Tomcat Examples的遗留测试示例中 , 发现了Cookie Example示例页面显示了主站的所有Cookie信息 , 可通过其实现Cookie窃取 , 该漏洞最终收获了四位数$$$$的赏金奖励 。
首先 , 来认识一下Tomcat的示例文件 , 它是Tomcat安装后默认显示的一些页面 , 其中包含了很多servlets 和 JSP的测试示例 , 尤其是其中的会话示例接口/examples/servlets/servlet/SessionExample和/examples/servlets/servlet/CookieExample , 由于会话变量的全局性 , 导致攻击者可以管理员身份通过该接口对会话进行操控 , 存在安全风险 。 这里 , 可以参考Rapid7的Tomcat示例信息泄露漏洞 。
漏洞发现【FreeBuf|挖洞经验 | 通过Tomcat Servlet示例页面发现的Cookie信息泄露漏洞】
FreeBuf|挖洞经验 | 通过Tomcat Servlet示例页面发现的Cookie信息泄露漏洞
本文插图

通常来说 , 很多Tomcat Examples示例页面会存在XSS漏洞 , 但在我的测试目标网站中却不存在此种情况 。 好在幸运的是 , 有以下三个示例目录是可有效访问的:
Servlet ExamplesJSP ExamplesWebsocket Examples
首先 , 我访问了其Websocket示例页面:
FreeBuf|挖洞经验 | 通过Tomcat Servlet示例页面发现的Cookie信息泄露漏洞
本文插图
它的功能大概是允许连接到一个外部WebSocket服务器 , 并把其连接有效信息进行显示 。 由于测试目标网站是一个隔离子域名 , 与主站应用没有联系 , 所以 , WebSocket跨域劫持漏洞(Cross-Site-Websocket-Hijacking)在这就派不上用场 。 但无论如何 , 它会向外部WebSocket服务器发起一个连接请求 , 如下:

FreeBuf|挖洞经验 | 通过Tomcat Servlet示例页面发现的Cookie信息泄露漏洞
本文插图
在与朋友就该页面进行交流之后 , 他的经验也让我打消了疑虑 , 这个点的利用也仅如此 , 我们继续 。 接着 , 我来到了其JSP Servlet页面:

FreeBuf|挖洞经验 | 通过Tomcat Servlet示例页面发现的Cookie信息泄露漏洞
本文插图
FreeBuf|挖洞经验 | 通过Tomcat Servlet示例页面发现的Cookie信息泄露漏洞
本文插图

这有点意思 , 但危害性却不大 。 然后我来到了其Servlets Examples示例页面:
FreeBuf|挖洞经验 | 通过Tomcat Servlet示例页面发现的Cookie信息泄露漏洞
本文插图
首先 , 我尝试了其中的Byte Counter操作 , 因为它在其中包含了一个上传功能 , 但是 , 几经测试也毫无成效 , 针对该处 , 如果大家有什么其它好的方法 , 可以试试看 。

FreeBuf|挖洞经验 | 通过Tomcat Servlet示例页面发现的Cookie信息泄露漏洞
本文插图
之后 , 我来到了Session Example示例和Cookie Example示例页面下 。 由于这是一个子域名网站 , 所以这里的Session Example会话示例没啥东西:

FreeBuf|挖洞经验 | 通过Tomcat Servlet示例页面发现的Cookie信息泄露漏洞
本文插图
但是 , 当我打开其Cookie Example示例页面https://target.com/examples/servlets/servlet/CookieExample , 却发现了好东西!

FreeBuf|挖洞经验 | 通过Tomcat Servlet示例页面发现的Cookie信息泄露漏洞
本文插图
可见 , 目标网站的主站Cookie信息全部都显示在此 , 由此 , 我立马想到了点击劫持( Click-jacking) , 并编写了以下简单的漏洞利用脚本代码:


推荐阅读