6.2.2 服务安全技术
随着移动互联网的繁荣及云计算和物联网的快速发展,应用层服务涉及的领域越来越广泛,从人们的日常生活到政府、企业的正常运转都离不开应用层服务。应用层服务的广泛应用也使其被攻击的面变得越来越广。
1.Web简介
Web是Internet提供的一种界面友好的信息服务。Web中海量的信息是由彼此关联的文档组成的,这些文档被称为主页或页面,它是一种通过超链接连接起来的超文本信息,通过Web我们就可以访问遍布于Internet主机上的链接文档。
2.Web应用常见的漏洞
近年来,信息技术和互联网飞速发展,Web服务根据人们的不同需求和目的,已经遍布了我们生活的各个领域。越来越多的公司或组织可以使用Web将现有的系统高度集成化。Web服务虽然大大简化了我们的工作流程,丰富了我们的生活,但与此同时,Web也面临很严重的安全威胁,例如负责实现公司安全目标的人员面临的最严峻的挑战之一是确保网站免受攻击和滥用。
根据国际权威组织开源Web应用安全项目(OWASP,Open Web Application Security Project)在2017年发布的Web攻击Top 10所示,前三大攻击是数据库(SQL,Structured Query Language)注入、失效的身份认证与会话管理和跨站点脚本攻击(CSS,Cross Site Script),此处重点介绍SQL注入攻击、跨站脚本攻击和跨站请求伪造攻击等3种攻击。
SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验参差不齐,相当数量的程序员在编写代码时,没有对用户输入数据的合法性进行有效判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些想得知的数据。攻击者可以利用数据库返回的错误信息进行注入,往往这种注入方式的成功率是最高的;或者通过联合查询,虽然没有返回数据库错误信息,但是通过UNION SELECT可以轻易地获取数据库敏感信息。
跨站脚本攻击(CSS)指利用网站漏洞从用户那里恶意盗取信息。用户在浏览网站,使用即时通信软件,甚至在阅读电子邮件时,通常会点击其中的链接。攻击者通过在链接中插入恶意代码,就能够盗取用户信息。攻击者通常会用十六进制(或其他编码方式)将链接编码,以免用户怀疑它的合法性。网站在接收到包含恶意代码的请求之后会产成一个包含恶意代码的页面,而这个页面看起来就像是原目标访问网站生成的合法页面一样。
跨站请求伪造攻击(CSRF),就是攻击者盗用了被攻击者的身份,以被攻击者的名义发送恶意请求代码。这种攻击的产生主要由于提交的表单缺乏验证项。CSRF漏洞可能会危及最终用户的数据和操作,如果被攻击对象是管理员,可能会危及整个Web业务应用程序。
Web漏洞的防护
3.Web安全保护
Web安全保护可以从两个思路入手:对Web应用源代码进行安全监测或者是在服务器端设置防火墙。Web漏洞的本质是Web应用源代码本身未进行安全编码或是存在逻辑漏洞等。对源代码进行安全监测可以从根源上解决安全隐患,为Web应用提供一个更好的安全环境。
源代码安全监测可以从以下几个方面进行。
①定向检测,针对特定功能点的隐患,定向测试漏洞。通常文件上传功能易出现后端程序未严格限制上传文件的格式,导致可能存在有人以文件上传的方式绕过防火墙的情况。登录或注册功能,可能存在用户角色或ID未进行严格匹配验证,造成非法越权操作。文件管理功能也是常见的隐患功能点,如文件路径直接在参数中传递,很可能造成任意文件下载或读取问题。
②正向检测,从源代码的主目录入手,分析源代码的程序结构,重点关注包含function、common和include等关键字的文件夹,这些文件夹中通常存放一些公共函数或者核心文件,提供给其他文件统一调用。然后查找应用的配置文件,通常文件名中包含config关键字,配置文件中包含了Web程序运行所必需的功能性配置选项及数据库等配置信息。最后查找安全过滤文件,这些文件涉及漏洞能否被利用,通常命名中包含filter、check等关键字。这类文件主要针对输入参数、上传类型以及执行命令进行过滤。
③大多数应用层漏洞的形成原因与程序员在程序开发过程中对敏感函数使用不当有很大关系,因此根据敏感函数来逆向追溯参数的传递过程,是一种非常有效的源代码漏洞检测手段。这种方法的优点是只需要搜索相关敏感函数关键字,即可快速定位漏洞隐患点,进而进行深入的跟踪分析,其缺点是由于没有通读源代码,对程序的整体业务逻辑结构理解不够深入,不容易发现逻辑类漏洞隐患。
Web应用防火墙(WAF,Web Application Firewall)是Web应用程序中的一种安全防护措施,类似于使用HTTP访问的应用程序的安全屏蔽,它在网络拓扑结构中的位置往往是在最前面,通常作为外部网络和内部网络之间的屏障。传统防火墙主要用来保护服务器之间传输的信息,而WAF则主要针对Web应用程序。网络防火墙和WAF工作在OSI 7层网络模型的不同层,相互补充,可以搭配使用。WAF的简介如图6.9所示。
图6.9 WAF简介
WAF的部署方式主要有以下几种,各有优劣。
①透明代理模式。在透明代理模式下,WAF对客户端和服务端都是透明的,双方都“认为”自己和对面是直接相连的。以透明代理模式部署WAF的优点是对网络的影响程度比较小,不需要多网络结构进行修改;缺点是客户端和服务端之间的流量都需要经过WAF,这就对WAF的处理能力有了很高的要求。此外,在透明代理模式下是无法在服务器上实现负载均衡的,因此在高并发的场景下对网络的性能有一定的影响。
②反向代理模式。反向代理模式是一种用于隐藏Web服务器的安全模式。在反向代理模式下,客户端的请求会被先定向到Web服务器的代理服务器中,代理服务器收到请求后会将请求再转发到真实服务器,从而使得客户端只能获取代理服务器的地址而无法获取到Web服务器的真实地址。服务器响应请求时,需要经过WAF设备转发才能到达客户端。反向代理模式需要对网络结构进行一定程度的调整。与透明代理模式不同,使用反向代理可以在WAF上实现负载均衡。
③路由代理模式。路由代理模式与透明代理模式的区别在于透明代理工作在网桥模式,而路由代理工作在路由转发模式。路由代理模式需要为WAF的转发接口配置路由以及IP,因此需要对网络进行简单的改动。与透明代理模式相同,路由代理模式也不支持负载均衡。