本文针对绿盟科技扫描出的常见 WEB 应用漏洞做具体的修复,并包含了 Http 如何转 Https 的详细解决方案。
1 扫描路径为 docs、examples、host-manager、manager 之下的漏洞
修复方案:删除 docs、examples、host-manager、manager 文件夹(该方法可以修复扫描出来的大部分漏洞)
2 点击劫持:X-Frame-Options 未配置
修复方案:配置过滤器,在过滤器中配置 X-Frame-Options 为 SAMEORIGIN。
response.setHeader("x-frame-options", "SAMEORIGIN");
示例:
新增过滤器类 ResponseFilter.java:
public class ResponseFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
//设置 x-frame-options
response.setHeader("x-frame-options", "SAMEORIGIN");
filterChain.doFilter(request, response);
}
@Override
public void destroy() {
}
}
web.xml 中新增过滤器配置:
ResponseFilter
com.zpf.wisdom.common.filter.ResponseFilter
ResponseFilter
/*
配置完之后,启动服务器,访问应用,打开浏览器控制台,在 Response Headers 下面有 x-frame-options:SAMEORIGIN 项即为配置成功,如下图:
x-frame-options 配置成功
3 检测到错误页面web应用服务器版本信息泄露
修复方案:删除 tomcat/lib/catalina.jar 中 \org\apache\catalina\util 目录下的 ServerInfo.properties 文件中的版本等信息,具体操作如下:
进入到 tomcat/lib 目录下,用电脑自带解压软件打 catalina.jar 进入到 \org\apache\catalina\util 目录下
编辑 ServerInfo.properties 文件,编辑最后三行,去掉版本号等信息(可直接注释或删除)
改完后自动跳出提示,点击“是”自动更新 catalina.jar 重新打包。
4 可通过 HTTP 获取远端 WWW 服务信息
修复方案:在 server.xml 文件中的 Connector 元素上添加 server 属性。如:
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"
useBodyEncodingForURI="true"
server="Microsoft-IIS/8.5" />
5 检测到基于 HTTP 的基本认证
修复方案:http 转 https。
5.1 安装(购买)证书
5.2 拷贝证书到 tomcat
我们已经获得了证书和证书密码,那么就将证书拷贝到 tomcat 的 conf 文件夹下。
5.3 配置使 https 可以访问应用
https 默认的端口是 443,它和 8443 端口的关系就如同 http 的 80 端口和 8080 端口一样。因此需要先在 server.xml 中配置该端口。
默认情况下,tomcat 的 8443 端口是注释掉的,那么去掉注释,打开端口 8443 的配置,将 port 属性值修改为 443,并添加证书配置项:
keystoreFile="cert/200613478180598.pfx"
keystoreType="PKCS12"
keystorePass="证书密码"
完整配置示例如下,以 tomcat 8.0 为例:
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/usr/local/dev/tomcat8/conf/2309789.pfx"
keystoreType="PKCS12"
keystorePass="GdyH4tiF"/>
注意:keystoreFile 和 keystorePass 两项需要修改。其中 keystoreFile 为证书路径,可以是绝对路径或相对路径,相对路径是相对于环境变量中 tomcat 配置的路径,上面示例中使用了绝对路径。keystorePass 则为证书密码。
配置完这些,就可以启动 tomcat ,使用 https 访问。此时,使用 http 和 https 都可以访问到应用。
5.4 配置使 http 自动转 https
如果想要输入 http 访问时自动转为 https,还需要做以下配置:
修改 conf 文件夹下的 server.xml 中相应 redirectPort
将所有的 redirectPort="8443" 修改为 redirectPort="443",如:
connectionTimeout="20000"
port="8080"
protocol="HTTP/1.1"
redirectPort="443"
server="Microsoft-IIS/8.5"/>
在 conf 文件夹下的 web.xml 文件的 中增加代码段:
SSL
/*
CONFIDENTIAL
配置完这两个文件,重启 tomcat,使用 http 访问应用,会发现成功跳转为 https 访问。