随着互联网技术的飞速发展,业务开发方式更加灵活,应用系统更加复杂,因此面临更多的安全挑战。安全测试是在应用系统上线和发布前,验证应用系统的安全性,识别潜在的安全漏洞的过程。目的是防范安全风险,满足机密性、完整性和可用性的要求。在日常测试过程中,经常会遇到开发同事询问如何修复一些常见的配置漏洞。为了帮助开发同仁快速发现和解决问题,笔者通过总结项目的安全测试工作经验,对部分应用系统进行总结分析。这里给出常见的配置漏洞和相应的修复建议,与大家分享。1、cookie缺少HttpOnly属性漏洞描述cookie中的HttpOnly属性值指定cookie是否可以通过客户端脚本访问,可以保护cookie的安全。如果cookie中没有设置HttpOnly属性为true,攻击者就有可能通过程序(JS脚本、Applets等)窃取用户cookie信息,增加攻击者跨站脚本攻击的威胁。窃取的cookie中可能包含识别用户的敏感信息,如ASP.NET会话ID等,攻击者利用窃取的cookie伪装用户身份或获取敏感信息,进行跨站脚本攻击。该修复程序建议向所有会话cookie添加“HttpOnly”属性。1)Java语言示例:HttpServletResponseresponse2=(HttpServletResponse)response;response2.setHeader("Set-Cookie","name=value;HttpOnly");2)C#语言示例:HttpCookiemyCookie=newHttpCookie("myCookie");myCookie.HttpOnly=true;Response.AppendCookie(myCookie);3)VB.NET语言示例:DimmyCookieAsHttpCookie=newHttpCookie("myCookie")myCookie.HttpOnly=TrueResponse。AppendCookie(myCookie)2.加密会话(SSL)cookie缺少安全属性漏洞描述对于敏感业务,如登录、转账、支付等,需要使用HTTPS来保证传输安全。如果会话cookie缺少安全属性,Web应用程序通过SSL向服务器发送不安全的cookie,这可能导致发送给服务器的cookie被阻止。访问非HTTPS页面会导致用户cookie信息泄露。如果启用了secure属性,浏览器只会在HTTPS请求中向服务器发送cookie内容。该修复程序建议向所有敏感cookie添加“安全”属性。1)服务器配置为HTTPSSSL;2)在Servlet3.0环境下,配置web.xml文件如下:true3)在ASP.NET中配置Web.config如下:在php.ini中配置如下:session.cookie_secure=Trueorvoidsession_set_cookie_params(int$lifetime[,string$path[,string$domain[,bool$secure=false[,bool$HttpOnly=false]]]])或boolsetcookie(string$name[,string$value?[,int$expire=0[,string$path[,string$domain[,bool$secure=false[,bool$HttpOnly=false]]]]])在weblogic中配置如下:truetrue三、缺少“Content-Security-Policy”头漏洞描述Due不安全的Web应用程序编程或配置,HTTP响应缺少“Content-Security-Policy”头,可能会造成跨站脚本攻击等隐患,并可能收集Web应用程序的敏感信息。例如用户名、密码、卡号或敏感文件的位置等。修复建议将服务器配置为使用安全策略的“Content-Security-Policy”标头。在web.config配置文件中添加以下HTTP响应头:src'self';"/> 使用元标签:4.缺少"X-Content-Type-Options"header漏洞描述由于不安全的web应用程序编程或配置,缺少"Content-Security-Policy"header可能会导致偷渡下载攻击等隐患。该修复建议将服务器配置为使用值为“nosniff”的“X-Content-Type-Options”标头。在web.config配置文件中添加如下响应头:内容=“nosniff”/>5。缺少“X-XSS-Protection”头漏洞说明由于Web应用程序编程或配置不安全,缺少“Content-Security-Policy”头可能导致跨站脚本攻击等隐患。该修复建议将服务器配置为使用值为“1”(已启用)的“X-XSS-Protection”标头。1)在web.config配置文件中添加如下响应头:使用meta标签6。缺少“HTTPStrict-Transport-Security”标头漏洞说明由于不安全的Web应用程序编程或配置,HTTPStrict-Transport-Security标头丢失。为了用户体验,一些网站允许HTTPS和HTTP访问。当用户使用HTTP访问时,网站会返回一个302重定向到HTTPS地址给用户。后续访问使用HTTPS协议传输,但是这个302重定向地址可能会被屏蔽。劫持、篡改、被改成恶意或钓鱼HTTPS站点,导致用户名、密码、卡号、敏感文件位置等敏感信息泄露等风险。该修复建议通过向Web应用程序响应添加“Strict-Transport-Security”响应标头来强制执行HTTPStrict-Transport-Security策略,或者强制执行具有足够长的“max-age”的HTTPStrict-Transport-Security策略以强制客户端(例如浏览器)使用HTTPS创建与服务器的连接。七、容易发生点击劫持(Clickjacking)漏洞描述页面未能设置合适的X-Frame-Options或Content-Security-PolicyHTTP头,则攻击者控制的页面可能将其加载到iframe中,从而导致点击劫持攻击,此类攻击属于视觉欺骗手段,主要实现方式有两种:一种是攻击者在网页上叠加透明的iframe,引诱用户对该页面进行操作,用户在不知不觉中点击下一步透明的iframe页面;二是攻击者使用图片覆盖网页,屏蔽网页原位置的意思。该修复建议应用程序应返回一个名为X-Frame-Options的响应标头,其值为DENY以完全阻止框架,或者返回SAMEORIGIN的值以仅允许与响应本身具有相同来源的页面框架,或通过ALLOW-FROMorigin设置一个白名单来限制允许加载的页面地址。1)修改中间件配置:a)IIS:在web.config配置文件中添加以下响应头:b)Apache:HeaderalwaysappendX-框架选项SAMEORIGINc)Nginx:add_headerX-Frame-OptionsSAMEORIGIN;使用meta标签8.启用不安全的HTTP方法漏洞描述Web服务器或应用服务器以不安全的方式配置后,WebDAV和不安全的HTTP方法被启用。不安全的HTTP方法一般包括:TRACE、PUT、DELETE、COPY等,可能导致攻击者上传、修改或删除网页、脚本和文件的危害。修复建议禁用WebDAV。禁止不必要的HTTP方法(仅推荐GET和POST方法)。1)Apache:使用Apache的rewrite规则禁用Options方法和Trace方法。在Apache配置文件httpd-conf[vhosts-conf]中添加如下代码:#DisabletheTracemethodalone:RewriteEngineOnRewriteCond%{REQUEST_METHOD}^(TRACE|TRACK)RewriteRule.*-[F]DisabletheOptionsmethodalone:RewriteEngineOnRewriteCond%{REQUEST_METHOD}^(OPTIONS)RewriteRule.*-[F]同时禁用Trace方法和Options方法:RewriteEngineOnRewriteCond%{REQUEST_METHOD}^(TRACE|TRACK|OPTIONS)RewriteRule.*-[F]DocumentRoot"D:\wwwroot"ServerNamewww.abc.comServerAliasabc.comOptionsFollowSymLinksExecCGIAllowOverrideAllOrderallow,denyAllowfromallRequireallgrantedRewriteEngineonRewriteCond%{REQUEST_METHOD}^(TRACE|TRACK|OPTIONS)RewriteRule.*-[F]2)Nginx:在服务器部分添加以下代码:if(|odthn!*Gme0);}重启Nginx以阻止除GET和POST之外的HTTP方法。3)Tomcat:修改web.xml配置文件。 /* PUT DELETE HEAD OPTIONS TRACE 4)IIS:a)禁用WebDAV函数;b)在web.config的[configuration]下添加如下代码:/> 九、《X-Powered-By"字段泄露服务器信息漏洞描述由于web服务器和应用服务器的不安全配置,导致响应报文响应头中的“X-Powered-By”字段泄露服务器信息。攻击者可以获取服务器版本信息,收集相关bug针对特定行的攻击修复建议隐藏响应标头中的“X-Powered-By”字段。1)IIS:修改web.config配置文件。<配置> <位置> 2)Nginx:需要添加proxy_hide_header。location/{ proxy_hide_headerX-Powered-By; }3)WAS:修改对应的websphere配置,将com.ibm.ws.webcontainer.disabledxPoweredBy配置改为true。10、“Server”字段泄露服务器信息漏洞描述由于Web服务器和应用服务器的不安全配置,导致响应报文的响应头中的“Server”字段泄露服务器信息。攻击者可以通过获取服务器版本信息收集相关漏洞。进行特定的攻击。建议在HTTP响应头中隐藏“Server”字段,并在web.config中添加如下配置:.HttpModules.CustomHeaderModule"/>以上是笔者在实际项目测试过程中经常遇到的十个常见应用配置漏洞的描述及对常见中间件的修复建议。希望能帮助开发同仁快速了解各种漏洞并找到相应的修复方法!