• 1
  • 1
分享
  • 10个安全测试漏洞修复经验,你掌握几个
  • 曼倩诙谐 2020-10-09 10:49:37 字数 6973 阅读 4890 收藏 1

  随着互联网技术的飞速发展,业务的开展方式更加灵活,应用系统更加复杂,也因此面临着更多的安全性挑战。安全测试是在应用系统投产发布之前,验证应用系统的安全性并识别潜在安全缺陷的过程,目的是防范安全风险,满足保密性、完整性、可用性等要求。

  日常测试过程中经常遇到开发同事来询问一些常见的配置型漏洞应该如何去修复,为了帮助开发同事快速识别并解决问题,通过总结项目的安全测试工作经验,笔者汇总、分析了应用系统的一些常见配置型漏洞并给出相应的修复建议,在这里给大家进行简单的分享。


Cookie缺少HttpOnly属性

漏洞描述

  Cookie中的HttpOnly属性值规定了Cookie是否可以通过客户端脚本进行访问,能起到保护Cookie安全的作用,如果在Cookie中没有将HttpOnly属性设置为true,那么攻击者就可以通过程序(JS脚本、Applet等)窃取用户Cookie信息,增加攻击者的跨站脚本攻击威胁。窃取的Cookie中可能包含标识用户的敏感信息,如ASP.NET会话标识等,攻击者借助窃取的Cookie达到伪装用户身份或获取敏感信息的目的,进行跨站脚本攻击等。

Y1.png


修复建议

  向所有会话Cookie中添加“HttpOnly”属性。

  1)Java语言示例:

  HttpServletResponse response2 = (HttpServletResponse)response;

  response2.setHeader( "Set-Cookie", "name=value; HttpOnly");

  2)C#语言示例:

  HttpCookie myCookie = new HttpCookie("myCookie");

  myCookie.HttpOnly = true;

  Response.AppendCookie(myCookie);

  3)VB.NET语言示例:

  Dim myCookie As HttpCookie = new HttpCookie("myCookie")

  myCookie.HttpOnly = True

  Response.AppendCookie(myCookie)


加密会话(SSL)Cookie缺少secure属性

漏洞描述

  对于敏感业务,如登录、转账、支付等,需要使用HTTPS来保证传输安全性,如果会话Cookie缺少secure属性,Web应用程序通过SSL向服务器端发送不安全的Cookie,可能会导致发送到服务器的Cookie被非HTTPS页面获取,造成用户Cookie信息的泄露。如果启用了secure属性,浏览器将仅在HTTPS请求中向服务端发送cookie内容。

Y2.png


修复建议

  向所有敏感的Cookie添加“secure”属性。

  1)服务器配置为HTTPS SSL方式;

  2)Servlet 3.0环境下对web.xml文件进行如下配置:

<session-config>
     <cookie-config>
     <secure>true</secure>
     </cookie-config>
</session-config>

  3)ASP.NET中对Web.config进行如下配置:

  <httpCookies requireSSL="true" />

  4)php.ini中进行如下配置:

 session.cookie_secure = True

    或者

  void session_set_cookie_params ( int $lifetime [, string $path [, string $domain [, bool $secure= false [, bool $HttpOnly= false ]]]] )

    或者

  bool setcookie ( string $name [, string $value? [, int $expire= 0 [, string $path [, string $domain [, bool $secure= false [, bool $HttpOnly= false ]]]]]] )

  5)在weblogic中进行如下配置:

  <wls:session-descriptor>
            <wls:cookie-secure>true</wls:cookie-secure>
            <wls:cookie-http-only>true</wls:cookie-http-only>
  </wls:session-descriptor>


缺少“Content-Security-Policy”头

漏洞描述

  因Web应用程序编程或配置不安全,导致HTTP响应缺少“Content-Security-Policy”头,可能产生跨站脚本攻击等隐患,可能会收集有关Web应用程序的敏感信息,如用户名、密码、卡号或敏感文件位置等。

Y3.png


修复建议

  将服务器配置为使用安全策略的“Content-Security-Policy”头。

  1)在web.config 配置文件中添加如下HTTP响应头:

 <system.webServer>
    <httpProtocol>?
      <customHeaders>
  <add name="Content-Security-Policy" value="default-src 'self';"/>
      </customHeaders>
    </httpProtocol>
  </system.webServer>

  2)使用meta标签:

 <meta http-equiv=”Content-Security-Policy” content=”default-src ‘self’”/>


缺少“X-Content-Type-Options”头

漏洞描述

  因Web应用程序编程或配置不安全,导致缺少“Content-Security-Policy”头,可能产生偷渡式下载攻击等隐患。

Y4.png


修复建议

  将服务器配置为使用值为“nosniff”的“X-Content-Type-Options”头。

  1)在web.config 配置文件中添加如下响应头:

 <add name="X-Content-Type-Options" value="nosniff"/>

  2)使用meta标签

  <meta http-equiv=”X-Content-Type-Options” content=”nosniff” />


缺少“X-XSS-Protection”头

漏洞描述

  因Web应用程序编程或配置不安全,导致缺少“Content-Security-Policy”头,可能产生跨站脚本攻击等隐患。

Y5.png


修复建议

  将服务器配置为使用值为“1”(已启用)的“X-XSS-Protection”头。

  1)在web.config 配置文件中添加如下响应头:

  <add name="X-XSS-Protection" value="1;mode=block"/>

  2)使用meta标签

 <meta http-equiv=”X-XSS-Protection” content=”1;mode=block” />


缺少“HTTP Strict-Transport-Security”头

漏洞描述

  因Web应用程序编程或配置不安全,导致缺少 HTTP Strict-Transport-Security 头。为了用户体验,有些网站允许使用HTTPS和HTTP访问,当用户使用HTTP访问时,网站会返回给用户一个302重定向到HTTPS地址,后续访问都使用HTTPS协议传输,但这个302重定向地址可能会被劫持篡改,被改成一个恶意的或者钓鱼HTTPS站点,导致敏感信息如用户名、密码、卡号或敏感文件位置泄露等风险。

Y6.png


修复建议

  通过向 web 应用程序响应添加“Strict-Transport-Security”响应头来实施 HTTP 严格传输安全策略,或实施具有足够长“max-age”的 HTTP Strict-Transport-Security 策略,强制客户端(如浏览器)使用HTTPS与服务器创建连接。


容易出现点击劫持(Clickjacking)

漏洞描述

  页面未能设置适当的X-Frame-Options或Content-Security-Policy HTTP头,则攻击者控制的页面可能将其加载到iframe中,导致点击劫持攻击,此类攻击属于一种视觉欺骗手段,主要实现方式有两种:一是攻击者将一个透明的iframe覆盖在一个网页上,诱使用户在该页面上进行操作,那么用户就在不知情的情况下点击透明的iframe页面;二是攻击者使用一张图片覆盖在网页,遮挡网页原有位置的含义。

Y7.png


修复建议

  应用程序应该返回名称为X-Frame-Options、值DENY以完全防止成帧的响应头,或者返回值SAMEORIGIN以允许仅通过与响应本身相同的来源上的页进行成帧,或者通过ALLOW-FROM origin设置白名单来限制允许加载的页面地址。

  1)修改中间件配置:

  a)IIS:

  web.config 配置文件中添加如下响应头:

 <add name="X-Frame-Options" value="SAMEORIGIN"/>

  b)Apache:

  Header always append X-Frame-Options SAMEORIGIN

  c)Nginx:

  add_header X-Frame-Options SAMEORIGIN;

  2)使用meta标签

 <meta http-equiv=”X-Frame-Options” content=”SAMEORIGIN” />


启用了不安全的HTTP方法

漏洞描述

  Web服务器或应用服务器以不安全的方式进行配置,导致启用了WebDAV和不安全的HTTP方法,不安全的HTTP方法一般包括:TRACE、PUT、DELETE、COPY等,可能会造成攻击者在Web服务器上上传、修改或删除Web页面、脚本和文件的隐患。

Y8.png


修复建议

  禁用WebDAV。禁止不需要的HTTP方法(建议只使用GET和POST方法)。

  1)Apache:

  使用Apache的重写规则来禁用Options方法和Trace方法。在Apache配置文件httpd-conf中【vhosts-conf】添加以下代码:


#单独禁用Trace方法:
  RewriteEngine On
  RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
  RewriteRule .* - [F]
  单独禁用Options方法:
  RewriteEngine On
  RewriteCond %{REQUEST_METHOD} ^(OPTIONS)
  RewriteRule .* - [F]
  同时禁用Trace方法和Options方法:
  RewriteEngine On
  RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)
  RewriteRule .* - [F]<VirtualHost *:80>
      DocumentRoot "D:\wwwroot"
      ServerName www.abc.com
      ServerAlias abc.com
    <Directory "D:\wwwroot">
        Options FollowSymLinks ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
        Require all granted
        RewriteEngine on
        RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)
        RewriteRule .* - [F]
    </Directory></VirtualHost>

  2)Nginx:

  在server段里加入下面代码:

 if ($request_method !~* GET|POST) {
              return 403;
          }

  重启Nginx,就可以屏蔽GET、POST之外的HTTP方法。

  3)Tomcat:

  修改web.xml配置文件。

<security-constraint>  
          <web-resource-collection>  
              <url-pattern>/*</url-pattern>  
              <http-method>PUT</http-method>  
              <http-method>DELETE</http-method>  
              <http-method>HEAD</http-method>  
              <http-method>OPTIONS</http-method>  
              <http-method>TRACE</http-method>  
          </web-resource-collection>  
          <auth-constraint>  
          </auth-constraint>  
  </security-constraint>

  4)IIS:

  a)禁用WebDAV功能;

  b)在web.config的【configuration】下添加如下代码:

<system.webServer>    <security>      <requestFiltering>        
  <verbs allowUnlisted="false">          
  <add verb="GET" allowed="true"/>          
  <add verb="POST" allowed="true"/>                 
  </verbs>      
  </requestFiltering>    </security></system.webServer>


"X-Powered-By"字段泄露服务器信息

漏洞描述

  因Web服务器、应用服务器配置不安全,导致响应报文的响应头中"X-Powered-By"字段泄露服务器信息,攻击者可以通过获取服务器版本信息,收集相关漏洞,进行特定的攻击。

Y9.png


修复建议

  隐藏响应头中"X-Powered-By"字段。

  1)IIS:

  修改web.config配置文件。

<configuration>
    <location>
      <system.webServer>
        <httpProtocol>
          <customHeaders>
            <remove name="X-Powered-By" />
          </customHeaders>
        </httpProtocol>     
      </system.webServer>
    </location>
  </configuration>

  2)Nginx:

  需要加上proxy_hide_header。

location / {
      proxy_hide_header   X-Powered-By;
  }

  3)WAS:

  修改websphere相应配置,将com.ibm.ws.webcontainer.disabledxPoweredBy配置更改为true。


"Server"字段泄露服务器信息

漏洞描述

  因Web服务器、应用服务器配置不安全,导致响应报文的响应头中"Server"字段泄露服务器信息,攻击者可以通过获取服务器版本信息,收集相关漏洞,进行特定的攻击。

Y10.png

  

修复建议

  隐藏HTTP响应头中"Server"字段,在web.config添加以下配置:

 <system.webServer>
  <modules>
  <add name="CustomHeaderModule" type="StrongNamespace.HttpModules.CustomHeaderModule" />

  以上就是笔者在实际项目测试过程中经常遇见的十类常见应用配置型漏洞描述及针对常见中间件的修复建议,希望能够帮助开发同事快速理解各类漏洞并找到对应的修复方式!


作者:王菡

来源:51Testing软件测试网


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   根据市场研究公司国际数据公司(IDC)的数据,智能手机品牌vivo在2023年第二季度超越科技巨头三星,成为印度领先的智能手机制造商。  第二季度,vivo的市场份额从去年同期的14.5%扩大至16%,稳居第一。在此期间,其出货量增长了7.4%;排名第二的三星的市场份额从2022年第二季度的16.3%下降至2023年第二季度的15.7%;realme排名第三,出货量同比大幅下降29.8%,市场份额从17.5%下降至12.6%;OPPO以11%的市场份额排名第四,出货量下降7.4%。  小米的出货量降幅最大,下降了39.4%。这一下降使其市场份额从2022年第二季度的17.6%降至2023年...
            0 0 864
            分享
          • 前言爬虫与反爬虫,是一个很不阳光的行业。这里说的不阳光,有两个含义。第一是,这个行业是隐藏在地下的,一般很少被曝光出来。很多公司对外都不会宣称自己有爬虫团队,甚至隐瞒自己有反爬虫团队的事实。这可能是出于公司战略角度来看的,与技术无关。第二是,这个行业并不是一个很积极向上的行业。很多人在这个行业摸爬滚打了多年,积攒了大量的经验,但是悲哀的发现,这些经验很难兑换成闪光的简历。面试的时候,因为双方爬虫理念或者反爬虫理念不同,也很可能互不认可,影响自己的求职之路。本来程序员就有“文人相轻”的倾向,何况理念真的大不同。然而这就是程序员的宿命。不管这个行业有多么的不阳光,依然无法阻挡大量的人进入这个行业,...
            13 14 1745
            分享
          •   前言  最近双11活动,发现阿里云有服务器活动,就买了一个,今天主要给大家介绍下,如何通过通过客户端进行连接linux服务器后,进行简单的操作。  配置服务器信息  打开浏览器登录到阿里云服务器页面上,找到个人服务器实例页面,这里如果购买完服务器的小伙伴就会出现自己的服务器列表。  重置服务器密码  点击服务器列表名称进入服务器基本信息页面中,点击重置密码,进入到服务器重置密码页面中,在新密码中输入对应的密码,登录名输入root。  修改服务器名称  继续在服务器基本信息页面中,点击实例名称后的重命名进行修改服务器名称内容,修改完成后点击确认按钮。  登录服务器  通过上面操作进行配置完服...
            0 0 715
            分享
          •   据报道,当地时间周二,特斯拉首席执行官埃隆·马斯克在接受媒体采访时表示,在硅谷工作的“笔记本电脑阶层”需要放下他们的道德架子。  马斯克谈论的是回到办公室的必要性。这一问题在硅谷和美国各地的科技工作者中引起了极大的关注,其中许多人得到了高管允许他们远程工作的慷慨授权。  “我认为在家工作的整个概念有点像玛丽·安托瓦内特(译者注:法国国王路易十六的妻子)的假名言,‘让他们吃蛋糕吧,’”马斯克说。“这不仅仅是生产力的问题,”马斯克说,“我认为这在道德上是错误的。”  马斯克将科技工作者称为“生活在梦幻世界中的笔记本电脑阶层”,他对媒体说,居家办公却期望服务人员继续亲自上门是虚伪的。  “人们应...
            0 0 1015
            分享
          •   随着分布式建设工作的推进,核心系统正在逐步下移,分布式系统不但降低成本,具有比集中式更佳的性能,同时也便于系统扩展、维护。分布式统一入口系统在整个系统中担任类似网关的角色,为不同请求提供统一入口,验证请求合法性、安全性,转换请求报文的格式等功能,将请求按照策略转发到其他分布式系统处理请求。由于分布式系统之间需要相互调用、转发,才能正常完成业务需求,为了避免分布式核心系统之间相互调用造成的连带影响,保护分布式统一入口系统及其他关联分布式核心系统,提供交易级、微服务级、子系统级等5种维度的流量控制方案,主要针对TCP请求进行流量控制,流量控制采用配置中心配置、文件配置两种方式,实现对交易请求的...
            14 15 706
            分享
      • 51testing软件测试圈微信