随着互联网技术的快速发展,业务模式更加灵活,应用系统更加复杂,因此面临着更多的安全挑战。安全测试是在应用系统投入生产和发布之前验证应用系统安全并识别潜在安全缺陷的过程,以防止安全风险,满足保密性、完整性和可用性的要求。
在日常测试过程中,我们经常遇到开发同事,询问如何修复一些常见的配置漏洞。为了帮助开发同事快速识别和解决问题,笔者总结分析了应用系统中一些常见的配置漏洞,并通过总结项目安全测试工作经验给出相应的修复建议,在此简单分享。
一、Cookie缺少HttpOnly属性
漏洞描述Cookie中的HttpOnly规定了属性值Cookie能否通过客户端脚本进行访问,起到保护作用Cookie如果在Cookie中没有将HttpOnly属性设置为true,然后攻击者可以通过程序(JS脚本、Applet等)窃取用户Cookie信息增加了攻击者的跨站脚本攻击威胁。Cookie它可能包含识别用户的敏感信息,如ASP.NET会话标志等,攻击者借助盗窃Cookie为伪装用户身份或获取敏感信息,进行跨站脚本攻击等。
修复建议
向所有会话Cookie中添加"HttpOnly"属性。
1)Java语言示例:
2)C#语言示例:
3)VB.NET语言示例:
二、加密会话(SSL)Cookie缺少secure属性
漏洞描述登录、转账、支付等敏感业务需要使用HTTPS为了确保传输安全,如果会话Cookie缺少secure属性,Web通过应用程序SSL将不安全的不安全发送到服务器端Cookie,它可能导致发送到服务器Cookie被非HTTPS页面获取,导致用户Cookie如果使用了信息泄露。secure浏览器将只有属性HTTPS向服务端发送请求cookie内容。
修复建议
对一切敏感Cookie添加"secure"属性。
1)服务器配置为HTTPS SSL方式;
2)Servlet 3.0环境下对web.xml文件配置如下:
3)ASP.NET中对Web.config配置如下:
php.ini配置如下:
三、缺少"Content-Security-Policy"头
漏洞描述因Web应用程序编程或配置不安全,导致HTTP响应缺少"Content-Security-Policy"头部可能存在跨站脚本攻击等隐患,并可收集相关隐患Web用户名、密码、卡号或敏感文件位置等敏感信息。
修复建议
将服务器配置为置服务器"Content-Security-Policy"头。
在web.config在配置文件中添加以下内容HTTP响应头:
使用meta标签:
四、缺少"X-Content-Type-Options"头
漏洞描述因Web应用程序编程或配置不安全,导致缺乏"Content-Security-Policy"头部,可能会产生偷渡下载攻击等隐患。
修复建议
将服务器配置为使用值"nosniff"的"X-Content-Type-Options"头。
在web.config 在配置文件中添加以下响应头:
使用meta标签
五、缺少"X-XSS-Protection"头
漏洞描述因Web应用程序编程或配置不安全,导致缺乏"Content-Security-Policy"头部,可能会产生跨站脚本攻击等隐患。
修复建议
将服务器配置为使用值"1"(已启用)"X-XSS-Protection"头。
1)在web.config 在配置文件中添加以下响应头:
使用meta标签
六、缺少"HTTP Strict-Transport-Security"头
漏洞描述因Web应用程序编程或配置不安全,导致 缺乏HTTP Strict-Transport-Security 头。一些网站允许用户体验HTTPS和HTTP当用户使用时,访问HTTP访问时,网站将返回给用户302重定向HTTPS使用地址和后续访问HTTPS协议传输,但这个302重定向地址可能被劫持篡改,变成恶意或钓鱼HTTPS网站导致用户名、密码、卡号或敏感文件位置泄露等敏感信息的风险。
修复建议
通过向 web 应用程序响应添加"Strict-Transport-Security"实施 响应头HTTP 严格传输安全策略或实施足够长的时间"max-age"的 HTTP Strict-Transport-Security 策略强迫客户端(如浏览器)使用HTTPS与服务器创建连接。
七、点击劫持容易发生(Clickjacking)
漏洞描述
页面设置不当X-Frame-Options或Content-Security-Policy HTTP头,攻击者控制的页面可能会加载到iframe在中间,点击劫持攻击是一种视觉欺骗,主要有两种实现方式:一种是攻击者将是透明的iframe覆盖网页,诱使用户在页面上操作,然后用户在不知情的情况下点击透明度iframe页面;第二,攻击者用图片覆盖网页,以阻挡网页原始位置的含义。修复建议
应用程序应返回名称X-Frame-Options、值DENY以完全防止成帧的响应头或返回值SAMEORIGIN以允许仅通过与响应本身相同的来源上的页进行成帧,或者通过ALLOW-FROM origin设置白名单限制允许加载的页面地址。
1)修改中间件配置:
a)IIS:
web.config 在配置文件中添加以下响应头:
八、使用不安全HTTP方法
漏洞描述Web以不安全的方式配置服务器或应用服务器,导致启用WebDAV和不安全的HTTP方法,不安全HTTP方法一般包括:TRACE、PUT、DELETE、COPY等等,可能会导致攻击者Web上传、修改或删除服务器Web隐患的页面、脚本和文件。
修复建议
禁用WebDAV。禁止不必要的HTTP方法(建议只使用GET和POST方法)。
1)Apache:
使用Apache禁止重写规则Options方法和Trace方法。在Apache配置文件httpd-conf中【vhosts-conf】添加以下代码:
#单独禁用Trace方法:
单独禁用Options方法:
同时禁用Trace方法和Options方法:
2)Nginx:
在server段中添加以下代码:
重启Nginx,就可以屏蔽GET、POST之外的HTTP方法。
3)Tomcat:
修改web.xml配置文件。
4)IIS:
a)禁用WebDAV功能;
b)在web.config的【configuration】添加以下代码:
九、"X-Powered-By"字段信息h3>
漏洞描述因Web服务器和应用服务器配置不安全,导致响应头中响应报告"X-Powered-By"通过获取服务器版本的信息,攻击者可以通过字段泄露服务器信息收集相关漏洞进行特定攻击。
修复建议
隐藏响应头"X-Powered-By"字段。
1)IIS:
修改web.config配置文件。
2)Nginx:
需要加上proxy_hide_header。
3)WAS:
修改websphere对应配置,将com.ibm.ws.webcontainer.disabledxPoweredBy配置更改为true。
十、"Server"服务器信息的字段泄露
漏洞描述
因Web服务器和应用服务器配置不安全,导致响应头中响应报告"Server"通过获取服务器版本的信息,攻击者可以通过字段泄露服务器信息收集相关漏洞进行特定攻击。修复建议
隐藏HTTP响应头中"Server"字段,在web.config添加以下配置:
以上是作者在实际项目测试过程中经常遇到的十种常见的应用配置漏洞描述和对常见中间件的修复建议,希望能帮助同事快速理解各种漏洞,找到相应的修复方法!