关于解决绿盟科技安全评估报告中的web漏洞
关于解决绿盟科技安全评估报告中的web漏洞
3.1.1.Apache Tomcat 文件包含漏洞(CVE-2020-1938)
方式一:升级tomcat版本,
对于springboot项目,需要更换内置tomcat
更换步骤:
1 进入springboot共成的parent可以看到tomcat的版本
2 在自己的pom文件里覆盖掉内置的tomcat版本
::: details 点击查看代码
<tomcat.version>9.0.31</tomcat.version>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-juli</artifactId>
<version>${tomcat.version}</version>
</dependency>
<!--排除依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
:::
效果:
3 启动项目看一下
没有报错,修改成功
若不需要使用Tomcat AJP协议,可直接关闭AJP Connector,或将其监听地址改为仅监听本机localhost。
具体操作:
(1)编辑 <CATALINA_BASE>/conf/server.xml,找到如下行(<CATALINA_BASE> 为 Tomcat 的工作目录):
<Connector port="8009"protocol="AJP/1.3" redirectPort="8443" />
(2)将此行注释掉(也可删掉该行):
<!--<Connectorport="8009" protocol="AJP/1.3"redirectPort="8443" />-->
(3)保存后需重新启动Tomcat,规则方可生效。
3.1.2.检测到会话cookie中缺少HttpOnly属性
由于在报告中明确的指出了是哪个接口 找到接口添加如下配置
cookie.setHttpOnly(true);
3.1.3.点击劫持:X-Frame-Options未配置
tomcat配置
进入tomcat目录下的conf,找到web.xml配置文件,搜索httpHeaderSecurity
,
找到如下配置:
修改后结果:
::: details 点击查看代码
<filter>
<filter-name>httpHeaderSecurity</filter-name>
<filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
<async-supported>true</async-supported>
<init-param>
<param-name>antiClickJackingEnabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>antiClickJackingOption</param-name>
<param-value>SAMEORIGIN</param-value>
</init-param>
</filter>
:::
修改之后,重启项目
浏览器访问接口可以看到:
即配置成功
这里有一个问题
配置http的响应头信息:属性名X-Frame-Options。
可以配置的参数有两个:
DENY:浏览器拒绝当前页面加载任何Frame页面。
SAMEORIGIN:页面只能加载入同源域名下的页面。
我配置的是第二个 但是访问接口却是第一个,不知道是什么原因。
springBoot项目
对于springBoot项目,可以使用添加过滤器的方式解决
::: details 点击查看代码
/**
* @Description: 解决 点击劫持:X-Frame-Options未配置
* @Param:
* @return:
* @Date: 2020/7/24
*/
@Component
public class CookieFrameFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
resp.addHeader("x-frame-options", "SAMEORIGIN");
filterChain.doFilter(req, resp);
}
@Override
public void destroy() {
}
}
:::
修改后重启项目
配置成功
注意需要添加@Component
注解,使改过滤器交由spring管理,否则不生效