WEB安全漏洞之XFS攻击、SSL协议漏洞及Http方法覆盖漏洞

漏洞说明

这次对三类漏洞进行说明,之所以将它们放在一起,是因为这三类漏洞都可以在nginx中通过修改配置文件进行治理。

  • XFS攻击

    漏洞说明:跨框架脚本(XFS)漏洞使攻击者能够在恶意页面的 HTMLiframe 标记内加载易受攻击的应用程序。攻击者可以使用此漏洞设计点击劫持攻击,以实施钓鱼式攻击、框架探查攻击、社会工程攻击或跨站点请求伪造攻击。简单的说,就是攻击者会将被攻击页面的网站内容嵌入到他的iframe中,来截取用户的点击事件或者窃取用户敏感信息。

    解决方法:X-FRAME-OPTIONS是目前最可靠的方法。X-FRAME-OPTIONS是微软提出的一个http头,专门用来防御利用iframe嵌套的点击劫持攻击。并且在IE8、Firefox3.6、Chrome4以上的版本均能很好的支持。这个头有三个值:①DENY -----表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。;②SAMEORIGIN -----表示该页面可以在相同域名页面的frame中展示;③ALLOW-FROM uri -----表示该页面可以在指定来源的 frame 中展示

  • Insecure Transport: Secure Section Access Not SSL-Enabled

    这个漏洞的意思是,SSL协议本身存在安全漏洞,因此要禁用该协议,另外TLSv1.0协议和TLSv1.1协议也存在安全问题,所以最好是只放开TLSv1.2协议。即客户端和服务端只能使用TLSv1.2进行通信(IE的话要设置客户端协议,在Internet选项->高级->安全里)。

  • HTTP方法有覆盖危险

    在request头中增加例如X-HTTP-Method方法将GET/POST覆盖成PUT/DELETE等,从而执行危险操作/根据错误提示获取敏感信息。一般情况下,项目应该只允许GET和POST方式通讯(为了安全考虑,最好只使用POST)。

统一的修改方案(启用nginx时)

为了响应安全的要求,项目通过nginx启用了https协议。因此,可以直接通过修改Nginx的配置文件修复上述漏洞。修改文件为nginx.conf,修改如下:

	server {
        listen replace@8443;
        server_name  localhost;
		if ($request_method !~* (GET|POST)) {return 503;}
		
	     add_header           Set-Cookie "Secure";
	     add_header           Set-Cookie "HttpOnly";
	     add_header           X-Frame-Options "SAMEORIGIN";
        ssl                  on;
        ssl_certificate      证书;
        ssl_certificate_key  秘钥;
        ssl_session_cache    shared:SSL:10m;
        ssl_session_timeout  5m;
        ssl_protocols  TLSv1.2;
        ......

add_header表示将属性添加到Response头中,在这里就是X-Frame-Options 属性和它的值"SAMEORIGIN";if ($request_method !~* (GET|POST)) {return 503;}对请求进行了校验,如果不是GET或者POST请求则返回503状态码;ssl_protocols TLSv1.2;表示只使用TLSv1.2协议,需要注意的是,如果ssl_protocols为空的话则默认可以使用SSLv3.0、TLSv1、TLSv1.1、TLSv1.2四种协议

在不启用nginx时的修复方案

  • XFS攻击

    可以增加一个Filter,拦截所有的用户请求,并在Response中增加X-Frame-Options属性:
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest req = (HttpServletRequest) request;  
        HttpServletResponse resp = (HttpServletResponse) response; 
        
        resp.setHeader("x-frame-options", "SAMEORIGIN");
        
        chain.doFilter(request, response);
	}
  • Insecure Transport: Secure Section Access Not SSL-Enabled

    这个也可以直接修改tomcat的server.xml配置文件。如下:
		
  • HTTP方法有覆盖危险

    这个也可以使用Filter拦截每次请求,并通过hreq.getMethod()方法来获取Method进行校验。但这种办法比较笨,推荐下面这种方法:即在web.xml上增加禁用危险方法的设置。需要修改web.xml,注释掉PUT、DELETE等方法或者加入到安全设置中。示例如下:
在web.xml中增加如下几行:
   
     
      /*  
         DELETE  
         HEAD  
         OPTIONS                  
         TRACE  
         PUT
         connect
     
     
    
 

你可能感兴趣的:(WEB安全漏洞)