小迅的神奇海螺

你的Tomcat可能并不安全,原因居然是

2021-08-02

背景

小迅之前部署了一个Tomcat应用,渗透测试不通过,在此记录一下风险内容以及解决方案

测试结果

风险说明 风险程度
中间件版本泄露
Tomcat样例目录泄漏

测试详情

风险名称 风险描述 修改建议
中间件版本泄露 404页面返回信息中包含中间件版本信息,攻击者会根据版本进行针对性攻击 去掉返回信息中中间件版本信息
Tomcat样例目录泄漏 Apache Tomcat默认安装包含/examples目录,且未做权限控制。其中session样例允许用户对session进行操纵 建议禁止访问或者讲默认WEB跟目录下的examples和docs目录及其下的所有文件都删除,以免造成不必要的信息泄露或其他漏洞

修改过程

一、中间件版本泄露

目前流行的有两种方案

  • 自定义404页面
  • 修改Tomcat配置,隐藏版本信息

    1. 自定义404页面方案

    tomcat /conf/web.xml 添加
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <web-app>
    ...
    <!-- 400错误 -->
    <error-page>
    <error-code>400</error-code>
    <location>/error.jsp</location>
    </error-page>
    <!-- 404 页面不存在错误 -->
    <error-page>
    <error-code>404</error-code>
    <location>/error.jsp</location>
    </error-page>
    <!-- 500 服务器内部错误 -->
    <error-page>
    <error-code>500</error-code>
    <location>/error.jsp</location>
    </error-page>
    </web-app>
    简而言之就是把内置的报错页面给替换了
  • 优点:改动小,容易实施
  • 缺点:自定义报错页面,容易引入其他bug,且没有涵盖所有的error-code,不具有普适性

2. 修改Tomcat配置,隐藏版本信息

重打包 Tomcat lib 目录下的 catalina.jar 文件

  1. 进入tomcat下的lib目录
  2. 预览catalina.jar
  3. 进入\org\apache\catalina\util目录下,修改ServerInfo.properties文件
  4. 注释后3行

修改文件内容

修改之后,可以直接保存关闭,压缩软件会重新打包jar文件

直接保存

  • 优点:从根源上解决问题,对此服务器下的所有网站都生效
  • 缺点:改动操作比较繁琐,毕竟要修改官方提供的jar包嘛,而且如果中间件有升级,还得再来一遍

二、Tomcat样例目录泄漏

直接删除webapps下的examplesdocs等目录,小迅进行操作之后,只留下了ROOT和应用目录,亲测不影响应用运行

总结

  • 安全意识很重要,稳定为先,不管是开发还是运维,要时刻把安全放在第一位
  • 直接把应用端口暴露出来,虽然比直接暴露主机好,但也存在中间件方面的安全隐患。当你需要在公网暴露东西的时候,记得加上路径控制
  • 不要畏惧各种测试,尤其要多看专业的测试报告,在加固应用程序的同时,眼界和技能也在不知不觉中增加了

参考资料

Tomcat和Nginx版本信息泄露问题_ClearLoveQ的博客-CSDN博客_nginx版本信息泄露
Tomcat 版本信息泄露漏洞 修复方案-艺赛旗社区 (i-search.com.cn)

使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章