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

挖洞经验 | 通过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相关的页面。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tomcat示例页面泄露漏洞是因为Tomcat默认安装包中包含了示例页面,而这些页面可能会泄露系统信息,因此需要对其进行修复。以下是修复Tomcat示例页面泄露漏洞的步骤: 1. 删除示例应用程序:在Tomcat的webapps目录下删除示例应用程序,包括"examples"、"docs"、"manager"和"host-manager"。 ``` cd /opt/tomcat/webapps/ sudo rm -r examples docs manager host-manager ``` 2. 禁用Tomcat用户管理器和Tomcat管理器页面:在Tomcat的conf目录下找到"tomcat-users.xml"文件,注释掉其中的用户管理器和Tomcat管理器页面。 ``` cd /opt/tomcat/conf/ sudo nano tomcat-users.xml ``` 在文件中注释掉以下两行: ``` <!-- <user username="admin" password="admin" roles="manager-gui,admin-gui"/> --> ``` 3. 更改默认管理页面路径:在Tomcat的conf目录下找到"server.xml"文件,修改默认管理页面路径。 ``` cd /opt/tomcat/conf/ sudo nano server.xml ``` 在文件中找到以下代码段: ``` <Context docBase="${catalina.home}/webapps/manager" privileged="true" antiResourceLocking="false" antiJARLocking="false" > <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.0\.0\.1|::1|0:0:0:0:0:0:0:1" /> </Context> ``` 将其修改为: ``` <Context path="/tomcat-manager" docBase="${catalina.home}/webapps/manager" privileged="true" antiResourceLocking="false" antiJARLocking="false" > <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.0\.0\.1|::1|0:0:0:0:0:0:0:1" /> </Context> ``` 4. 重启Tomcat服务器:使用以下命令重启Tomcat服务器。 ``` sudo systemctl restart tomcat ``` 完成以上步骤后,Tomcat示例页面泄露漏洞就得以修复。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值