挖洞经验 | 通过Tomcat Servlet示例页面发现的Cookie信息泄露漏洞
今天分享的writeup是一个非常有意思的漏洞,作者在目标网站Tomcat Examples的遗留测试示例中,发现了Cookie Example示例页面显示了主站的所有Cookie信息,可通过其实现Cookie窃取,该漏洞最终收获了四位数$$$$的赏金奖励。
首先,来认识一下Tomcat的示例文件,它是Tomcat安装后默认显示的一些页面,其中包含了很多servlets 和 JSP的测试示例,尤其是其中的会话示例接口/examples/servlets/servlet/SessionExample和/examples/servlets/servlet/CookieExample,由于会话变量的全局性,导致攻击者可以管理员身份通过该接口对会话进行操控,存在安全风险。这里,可以参考Rapid7的Tomcat示例信息泄露漏洞。
漏洞发现
通常来说,很多Tomcat Examples示例页面会存在XSS漏洞,但在我的测试目标网站中却不存在此种情况。好在幸运的是,有以下三个示例目录是可有效访问的:
Servlet Examples
JSP Examples
Websocket Examples
首先,我访问了其Websocket示例页面:
它的功能大概是允许连接到一个外部WebSocket服务器,并把其连接有效信息进行显示。由于测试目标网站是一个隔离子域名,与主站应用没有联系,所以,WebSocket跨域劫持漏洞(Cross-Site-Websocket-Hijacking)在这就派不上用场。但无论如何,它会向外部WebSocket服务器发起一个连接请求,如下:
在与朋友就该页面进行交流之后,他的经验也让我打消了疑虑,这个点的利用也仅如此,我们继续。接着,我来到了其JSP Servlet页面:
这有点意思,但危害性却不大。然后我来到了其Servlets Examples示例页面:
首先,我尝试了其中的Byte Counter操作,因为它在其中包含了一个上传功能,但是,几经测试也毫无成效,针对该处,如果大家有什么其它好的方法,可以试试看。
之后,我来到了Session Example示例和Cookie Example示例页面下。由于这是一个子域名网站,所以这里的Session Example会话示例没啥东西:
但是,当我打开其Cookie Example示例页面https://target.com/examples/servlets/servlet/CookieExample,却发现了好东西!
可见,目标网站的主站Cookie信息全部都显示在此,由此,我立马想到了点击劫持( Click-jacking),并编写了以下简单的漏洞利用脚本代码:
形成了以下POC验证页面:
当然了,你也可以把页面边框变成透明,或在上面添加一个重叠元素,使其更具伪装性。执行上述POC页面之后,我的控制端就成功收到了Cookie信息。
经url解码后,就可以看到完整直观的Cookie内容了:
经验总结
经验就是,不要放过偏僻的子域名网站,也别忽略了会话或Cookie相关的页面。
参考来源:
https://medium.com/bugbountywriteup/apache-example-servlet-leads-to-61a2720cac20
精彩推荐