3.2 Web 应用防火墙
企业主要通过网站、App或微信生态(公众号、小程序等)给用户或客户提供服务,这些都是Web应用。
Web应用开放在互联网上,会面临各种黑客发起的攻击和探测。要应对这些威胁,除保障应用系统自身的**性外,还要能有效防范Web攻击,其**基础为Web应用防火墙(Web Application Firewall,WAF),本节介绍WAF的基本功能和应用实践。
3.2.1 Web 应用**威胁
Web应用非常容易遭受攻击,主要有以下几个方面的原因。
Web应用系统是对外开放的,正常用户和黑客均可以访问。
开发人员重视功能和性能实现,忽略了系统**性设计。
虽然知道Web应用系统存在**漏洞,但由于各种原因,应用系统改造难度大,暂时无法修复。
大量的中间件或组件存在高危漏洞,利用难度低,危害巨大。
比较典型的Web应用**风险为OWASP TOP 10,即开放式Web应用**项目(OWASP)定 期发布的 10 个Web应用**威胁,本书编写时,*新版本为 2017 版,10 个**风险如下。
A1. Injection(注入攻击漏洞)
如SQL、NoSQL、OS及LDAP注入,攻击者发送恶意攻击数据或脚本给解析器时,不可信的
数据被当成命令成功欺骗解释器,使得其可以执行计划外的命令或在未被恰当授权时访问数据。
典型的攻击案例是SQL注入攻击。
A2. Broken Authentication(失效的认证)
与身份认证和会话管理相关的应用程序功能得不到正确的实现,导致攻击者通过破坏密码、密钥、会话令牌或攻击其他的漏洞去冒充其他用户的身份(暂时或**)。
典型攻击案例是用户Cookie或访问令牌被盗取或劫持,冒充用户身份成功访问网站或应用。
A3. Sensitive Data Exposure(敏感信息泄露)
许多Web应用程序和API没有正确保护敏感数据,如身份证号码、手机号等信息,攻击者可以窃取或修改未加密的敏感数据。因此,需要对敏感数据加密,这些需要加密的敏感数据包括传输过程中的数据和存储在数据器中的交互数据。
典型的案例是用户的密码没有使用加盐的哈希算法保护,导致黑客通过彩虹表碰撞出真实的
密码。
A4. XXE XML External Entities (XXE,XML 外部处理漏洞 )
XXE是XML外部实体注入,当允许引用外部实体时,攻击者可以利用外部实体窃取使用URI
文件处理器的内部文件和共享文件、监听内部扫描端口、执行远程代码、实施拒绝服务攻击。
典型的案例是通过该漏洞执行系统命令,如利用“fifile:///etc/passwd”获取密码文件。
A5. Broken Access Control(失效的访问控制)
对未通过身份验证的用户实施恰当的访问控制,攻击者可以利用这些缺陷访问未经授权的功能或数据。例如,访问其他用户的账户、查看敏感文件、修改其他用户的数据、更改访问权限等。
典型案例是未授权访问漏洞、越权访问漏洞。
A6. Security Misconfiguration(**配置错误)
**配置错误是*常见的**问题,这通常是不**的默认配置、不完整的临时配置和开源
云、错误的 HTTP 报头配置及包含敏感信息的详细错误信息造成的。因此,**人员不仅需要对所有操作系统、框架、库和应用程序进行**配置,而且必须及时对其进修补和升级。
典型案例是未关闭调试或测试信息,导致攻击者可以通过报错信息获取服务器或组件的版本信息,利用版本漏洞发起攻击,如Nginx、Tomcat等。
A7. Cross-Site Scripting(XSS,跨站脚本攻击)
当应用程序的新网页中包含不受信任的、未经恰当验证或转义的数据时,或者使用可以创建
HTML或JavaScript 的浏览器 API 更新现有的网页时,就会出现XSS漏洞。XSS 让攻击者能够在受害者的浏览器中执行脚本,并劫持用户会话、破坏网站或将用户重定向到恶意站点。
典型案例是攻击者利用XSS漏洞获取用户Cookie信息并发送到攻击者服务器上。
A8. Insecure Deserialization(不**的反序列化)
不**的反序列化会导致远程代码执行。即使反序列化缺陷不会导致远程代码执行,攻击者也可以利用它们来进行攻击,包括重播攻击、注入攻击和特权升级攻击。
典型的案例是攻击者利用Weblogic反序列化漏洞进行远程系统命令执行,控制用户服务器。
A9. Using Components with Known Vulnerabilities(使用含有已知漏洞的组件)
组件(如库、框架和其他软件模块)拥有和应用程序相同的权限。如果应用程序中含有已知漏洞的组件被攻击者利用,可能会造成严重的数据丢失或服务器被接管。同时,使用含有已知漏洞的组件的应用程序和API可能会破坏应用程序防御系统、造成各种攻击并产生严重危害。
典型的案例是使用含有漏洞的Struts 2 框架,可能被执行远程命令控制服务器。
A10. Insufficient Logging&Monitoring(日志记录和监控不足)
日志记录和监控不足,以及事件响应缺失或无效的集成,使攻击者能够进一步攻击系统、保持持续性攻击或转向攻击更多系统,以及篡改、提取或销毁数据。
典型案例是未记录登录尝试失败记录,没有进行暴力破解防护导致系统被入侵后未及时发现。