本文针对绿盟科技扫描出的常见 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
中新增过滤器配置:
<!-- 设置响应 X-Frame-Options 头 -->
<filter>
<filter-name>ResponseFilter</filter-name>
<filter-class>com.zpf.wisdom.common.filter.ResponseFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ResponseFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
配置完之后,启动服务器,访问应用,打开浏览器控制台,在 Response Headers 下面有 x-frame-options:SAMEORIGIN 项即为配置成功,如下图:
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 属性。如:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"
useBodyEncodingForURI="true"
server="Microsoft-IIS/8.5" />
5 检测到基于 HTTP 的基本认证
修复方案:http 转 https。
5.1 安装(购买)证书
此处不做详细说明,请参考链接 https://blog.csdn.net/qq_16503045/article/details/90774917。
(仅参考链接文章前面证书部分,后面 tomcat 配置部分有点缺失)
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 为例:
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
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",如:<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="443" server="Microsoft-IIS/8.5"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="443"/>
-
在 conf 文件夹下的
web.xml
文件的 <web-app></web-app> 中增加代码段:<security-constraint> <web-resource-collection > <web-resource-name >SSL</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>
配置完这两个文件,重启 tomcat,使用 http 访问应用,会发现成功跳转为 https 访问。