注入
注入攻击漏洞,例如SQL,OS以及LDAP注入。这些攻击发生在当不可信的数据作为命令或者查询语句的一部分,被发送给解释器的时候。攻击者发送的恶意数据可以欺骗解释器,以执行计划外的命令或者在未被恰当授权时访问数据。
注入类型
SQL查询语句、LDAP查询语句、Xpath查询语句、OS命令、XML解释器、SMTP头注入等
关键技术点
SQL、存储过程、ORM、Hibernate、Mybatis、XML、LDAP、SSI、代码注入、命令注入、Buffer Overflow、预编译/参数化查询、HQL、XXE
失效的身份认证和会话管理
与身份认证和会话管理相关的应用程序功能往往得不到正确的实现,这就导致了攻击者破坏密码、密匙、会话令牌或攻击其他的漏洞去冒充其他用户的身份(暂时的或者永久的)。
常见问题功能
退出登录、密码管理、记住我、秘密问题、账户更新
关键技术点
HTTP协议、Session、Cookie、Session fixation、Referer、Oauth、Openid、XSS、CSRF
跨站脚本
每当应用程序在新网页中包含不受信任的数据而无需正确的验证或转义时,或者使用可以创建JavaScript的浏览器API并使用用户提供的数据更新现有网页就会发生XSS缺陷。XSS允许攻击者在受害者的浏览器上执行脚本,从而劫持用户会话、危害网站、或者将用户转向至恶意网站。
常见危害
盗取身份认证信息、网站挂马、数据篡改、拒绝服务、挂黑链、流量劫持、账户劫持、广告弹窗、蠕虫等
关键点技术
反射型XSS、DOM型XSS、存储型XSS、JavaScript、转义(escape)、编码(encode)、浏览器解析顺序、浏览器解码顺序、CRLF、Cross Site Tracing(XST)、同源策略(SOP)、跨域资源共享(CORS)、内容安全策略(CSP)、X-XSS-Protection、X-Frame-Options、HttpOnly、Content-Type。
失效访问控制
仅允许通过身份验证的用户的限制没有得到适当的强制执行。攻击者可以利用这些缺陷来访问未经授权的功能和/或数据,例如访问其他用户的帐户,查看敏感文件,修改其他用户的数据,更改访问权限等。
安全威胁
用户信息泄漏、商业信息泄漏、破坏数据完整性等
关键点技术
目录穿越、本地文件包含、远程文件包含、越权
安全配置错误
好的安全需要对应用程序、框架、应用程序服务器、web服务器、数据库服务器和平台定义和执行安全配置。由于许多设置的默认值并不是安全的,因此,必须定义、实施和维护这些设置。这包含了对所有的软件保持及时地更新,包括所有应用程序的库文件。
常见问题
DNS域传送、目录浏览、弱口令等
关键点技术
补丁不及时、默认口令或弱口令、不必要的功能或服务、错误信息回显、配置错误导致信息泄漏等
敏感信息泄漏
许多Web应用程序没有正确保护敏感数据,如信用卡,税务ID和身份验证凭据。攻击者可能会窃取或篡改这些弱保护的数据以进行信用卡诈骗、身份窃取,或其他犯罪。敏感数据值需额外的保护,比如在存放或在传输过程中的加密,以及在与浏览器交换时进行特殊的预防措施。
常见问题
数据传输不加密、数据存储不加密、脆弱的加密算法、缺乏密钥管理
关键点技术
对称加密、非对称加密、哈希算法、哈希长度拓展攻击、密钥、Bcrypt、中间人攻击、SSL/TSL、HSTS、CA、证书、签名、PKI
攻击检测与防御不足
大多数应用程序和API缺乏针对手动和自动攻击的检测,预防和响应的基本功能。攻击保护远远超出了基本输入验证,并且涉及自动检测,记录,响应甚至阻止攻击。应用程序所有者还需要有快速部署补丁以防止攻击的能力。
常见问题
识别到攻击不做阻止、导致可以不断尝试测试,造成安全隐患。
跨站请求伪造(CSRF)
一个跨站请求伪造攻击迫使登录用户的浏览器将伪造的HTTP请求,包括该用户的会话cookie和其他认证信息,发送到一个存在漏洞的web应用程序。这就允许了攻击者迫使用户浏览器向存在漏洞的应用程序发送请求,而这些请求会被应用程序认为是用户的合法请求。
关键点技术
cookie/session机制、jsonp、跨域资源共享、json劫持
使用含有已知漏洞的组件
组件,比如:库文件、框架和其它软件模块,几乎总是以全部的权限运行。如果一个带有漏洞的组件被利用,这种攻击可以造成更为严重的数据丢失或服务器接管。应用程序使用带有已知漏洞的组件会破坏应用程序防御系统,并使一系列可能的攻击和影响成为可能。
常见漏洞组件
struts2、heartbleed、反序列化、weblogic、websphere、jboss、jenkins
未受保护的APIs
现代应用程序和API通常涉及丰富的客户端应用程序,例如浏览器中的JavaScript和移动端应用程序,连接到某种API(SOAP / XML,REST / JSON,RPC,GWT等)。这些API通常是不受保护的,并且包含许多漏洞。
关键点技术
API格式:XML、JSON、RPC、GWT、自定义
客户端:微服务、服务、终端、移动app
防御建议
保护API的关键在于确保您充分了解威胁模型以及防御方式:
1.确保您已经保护客户端和您的API之间的通信。
2.确保您的API具有强大的身份验证方案,并且所有凭据,密钥和令牌已被保护。
3.确保您的请求使用的任何数据格式,解析器都被配置并强化到可以防止此类攻击。
4.实现访问控制方案,保护API不被不正确地调用,包括未经授权的功能和数据引用。
5.防止所有形式的注入,即便它们适用于普通应用,但是这些攻击对API同样可行。