已经上线的系统在安全扫描时可以查看到web服务器版本,在命令行下用curl -i localhost:8080/test
命令查看了一下(curl命令在window下并没有,需要下载一个叫curl的工具才能使用),能查到一下信息:
HTTP/1.1 302 Moved Temporarily
Server: Apache-Coyote/1.1
Location: http://localhost:8088/test/
Transfer-Encoding: chunked
Date: Thu, 23 Jul 2009 01:38:08 GMT
这里能看到server的版本是Apache-Coyote/1.1,据说这将有被黑客利用的风险,
于是上网找了一下修改tomcat的banner的方法。
网上介绍的是tomcat6.0的修改方法:
将tomcat/lib下的tomcat-coyote.jar中的org/apache/coyote/http11/Constants.class和
org/apache/coyote/ajp/Constants.class反编译,将其中的代码:
public static final byte SERVER_BYTES[] = ByteChunk.convertToBytes("Server: Apache-Coyote/1.1/r/n");
里面Server:后面的修改掉就可以了。
目前系统使用的是tomcat5.5,应修改的jar包为:tomcat/server/lib下的tomcat-ajp.jar和
tomcat-http.jar,于是又下载了一个叫jad的反编译工具,将那两个jar解压缩后,使用jad命令
进行反编译。
jad -r -d src1 -s java tomcat-ajp/**/*.class
其中 -r 指反编译时恢复源程序包结构
-d 指定反编译的输出文件目录
-s 指定反编译后的扩展名
反编译后得到源程序,将其中的Server: Apache-Coyote/1.1改为Server: test/1.1,将其重新编译
成.class文件,重新打包,覆盖在tomcat/server/lib下。
重启tomcat后再用curl -i localhost:8080/test查看,得到一下结果:
HTTP/1.1 302 Moved Temporarily
Server: test/1.1
Location: http://localhost:8088/test/
Transfer-Encoding: chunked
Date: Thu, 23 Jul 2009 01:38:08 GMT