Tomcat 版本信息泄露漏洞 修复方案

参考资料

https://www.tenable.com/plugins/nessus/12085

影响说明

docs, examples 等目录以及默认的 404 页面会泄露 Tomcat 的版本信息。
此外,攻击者可以利用 example 中的部分示例代码读写 session, 有一定潜在危害。

检测方法

访问如下若干页面,不应有 Tomcat 的版本信息泄露。
http://192.168.1.1:8080/docs/
http://192.168.1.1:8080/examples/
http://192.168.1.1:8080/PageNotExist.jsp

默认的错误信息也会暴露版本信息,例如:
Tomcat 版本信息泄露漏洞 修复方案

修复方案

1 删除 webapps 目录下 /docs/, /examples/
2 隐藏 404 页面的 Tomcat 版本信息 或者 使用用自定义的 404 页面等错误页面。

方案一:自定义页面

tomcat /conf/web.xml 添加

<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>

error.jsp (自定义的错误页面,不能包含版本号 )

方案二:隐藏版本信息(推荐使用这种,侵入式小)

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

## 1.解压catalina.jar
cd /isearch/tomcat/lib/
unzip catalina.jar
## 2.修改/ServerInfo.properties ,把版本信息删除
vi org/apache/catalina/util/ServerInfo.properties

server.info=
server.number=
server.built=


## 3.重新压缩到catalina.ja中
cd /isearch/tomcat/lib/
jar uvf catalina.jar org/apache/catalina/util/ServerInfo.properties

# 4. 重启 tomcat