关于解决绿盟科技安全评估报告中的web漏洞

关于解决绿盟科技安全评估报告中的web漏洞

3.1.1.Apache Tomcat 文件包含漏洞(CVE-2020-1938)

方式一:升级tomcat版本,
对于springboot项目,需要更换内置tomcat
更换步骤:
1 进入springboot共成的parent可以看到tomcat的版本
01
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>


:::

效果:
02

3 启动项目看一下
03
没有报错,修改成功

若不需要使用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,
找到如下配置:
tu1
tu2
修改后结果:
tu3
tu4
::: 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>

:::

修改之后,重启项目
浏览器访问接口可以看到:
tu5
即配置成功
这里有一个问题
配置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() {

    }
}


:::

修改后重启项目
tu5
配置成功
注意需要添加@Component注解,使改过滤器交由spring管理,否则不生效

原文地址:https://www.cnblogs.com/kt-ting/p/13454882.html