1、SQL注入攻击
定义:指的是发生在Web应用对后台数据库查询语句处理存在的安全漏洞。
攻击原理:就是在输入字符串中嵌入SQL指令。如果设计程序中忽略了对特殊字符串的检查,这些嵌入指令便会被误认为正常的SQL指令
危害:在数据库中执行,因此可以对后台数据库进行查看等工作,甚至破坏后台数据库造成严重后果
分类:普通注入和盲注。普通注入根据后台数据库提示有价值的错误信息,轻松地进行注入活动;盲注(Blind SQL injection)在给出页面时,没有提供详细的错误信息,攻击者需要运用脚本通过仅有的判断信息(比如时间差)对表中的每个字段进行探测,从而实现注入的技术
2、跨站脚本(XSS)
定义:Cross-Site-Scripting。为了避免和CSS(Cascading Style Sheets,层叠样式表)重名,而选择了Cross发音相似的X。
攻击原理:允许恶意使用者将程序代码注入的网页上,这类攻击一般包含了HTML语言以及目标主机使用的脚本语言。
分类:存储型XSS、反射型XSS、DOM型XSS(一般使用JavaScript脚本实现)
跨站脚本类型 | 特点 | 规避措施 |
---|---|---|
反射型XSS | 一次性攻击; 通过邮件等包含注入的恶意链接发给受害者; 链接中恶意文件请求服务器后反射到受害者的浏览器上执行恶意代码 | 避免点击未知邮件和链接 |
存储型XSS | 攻击脚本能永久存储在目标服务器数据库或文件中 多见于论坛和博客等Web站点,一般帖子中内嵌恶意脚本 | 对发布内容做关键字符监测 |
DOM型XSS | 利用客户端浏览器对请求的网页进行DOM渲染 | URL请求中过滤script关键字 |
3、跨站伪造请求
定义:跨站伪造请求(Cross-Site Request Forgery,CSRF),属于跨站脚本漏洞的一种衍生。
攻击原理 :攻击者利用XSS的注入方式注入一段脚本,当受害者点击浏览器运行该段脚本时,脚本伪造受害者发送了一个合法请求。
示例:
<img src="http://www.boc.cn/transfer.do?toAct=123456&money=10000">
工作原理解析:由于上述代码是在受害者浏览器上执行的,所以受害者的浏览器在请求img标签下的URL链接时,会读取到其Cookie信息,然后对服务器发送请求,这样就像受害者自己发送一样,攻击者便达到了伪造请求的目的。
4、会话认证管理缺陷
定义:会话认证管理缺陷(Broken Authentication and Session Management,BASM),是Web应用中身份验证功能的缺陷。
攻击原理:Web应用程序一般通过Cookie的传送完成使用者身份的认证,通过认证后会话期间会持续使用该身份。如果首次传送Cookie后便不再对Cookie中的内容进行检查,攻击者便可修改Cookie中的重要信息,用来提升权限对网络资料进行存取,或者冒用他人账号获取私密资料。
危害:盗取账号密码、信用卡号等敏感信息泄露、获取Web管理员权限
5、安全误配置
定义:安全误配置(Security Misconfiguration)问题存在于Web应用的各个层次,譬如:Web平台、Web服务器、应用服务器、程序代码等
很多自动化工具能够用于查找是否缺少补丁、是否存在错误的安全配置、默认用户是否存在、不必要的服务是否存在。
6、不安全密码存储
定义:不安全密码存储(Insecure Cryptographic Storage)问题的存在,主要是由于当前Web应用程序中以加密方式存储敏感资料已经成为非常重要的部分,常用的Web应用程序中加密算法强度相对较弱。无论是使用不当的密码算法或是配置不当,都会造成敏感资料的泄露和入侵。
目前存在的不安全密码存储问题主要有以下几点:
-
敏感资料未加密
-
使用自己开发的未经证明的算法
-
持续使用强度不足的算法
-
未经程序处理的key,以及将key存储在不受保护的地方
7、不安全的对象参考
定义:不安全的对象参考(Insecure Direct Object References)
攻击原理:攻击者利用Web系统本身的文档读取功能,任意存取系统的谋一份文档或资料。该方法主要是为了窃取系统内的敏感文件。
示例:
http://www.example.com/application?filedownload=../../../../etc/passwd%00
工作原理解析:通过上述URL后面嵌入的命令,便可轻松获取Linux主机的用户列表。
8、限制URL访问失败
定义:限制URL访问失败(Failure to Restrict URL Access),例如:在商业网站中,公司往往会给内部员工一个未公开的URL,该URL是员工能够以特价形式购买商品,但是由于URL被泄露,导致了所有人都通过特价购买商品,使公司遭到了损失。
这种情况主要是没有对私有页面的访问进行身份验证。
9、缺乏传输层保护
定义:缺乏传输层(Insufficient Transport Layer Protection)指的是在网络传输的过程中,由于没有对传输层使用SSL/TLS等保护机制,导致数据和Session ID可能被监听到,同时,过期的或不正确的证书也可能被使用。
攻击原理:很多网站的登录或认证页面没有使用SSL链接,攻击者截取网络后直接获取用户名和密码。很多网站使用标准的ODBC/JDBC连接数据库,而没有意识到所有流量都是明文的。
10、未验证的重定向和跳转
定义:未验证的重定向和跳转(Unvalidated Redirects and Forwards)
攻击原理:攻击者一般通过未验证重定向页面诱使受害者点击,从而获取密码或其他敏感数据。
Web应用攻击的主要类型(2017)
A1:2017-注入
将不受信任的数据作为命令或查询的一部分发送到解析器时,会产生诸如SQL注入、NoSQL注入、OS 注入和LDAP注入的注入缺陷。 攻击者的恶意数据可以诱使解析器在没有适当授权的情况下执行非预 期命令或访问数据。
A2:2017-失效的身份认证
通常,通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或会话令牌, 或者利用其它开发缺陷来暂时性或永久性冒充其他用户的身份。
A3:2017-敏感数据泄露
许多Web应用程序和API都无法正确保护敏感数据,例如:财务数据、医疗数据和PII数据。 攻击者可 以通过窃取或修改未加密的数据来实施信用卡诈骗、身份盗窃或其他犯罪行为。 未加密的敏感数据容易受到破坏,因此,我们需要对敏感数据加密,这些数据包括:传输过程中的数据、存储的数据以及浏览器的交互数据。
A4:2017-XML 外部实体(XXE)
许多较早的或配置错误的XML处理器评估了XML文件中的外部实体引用。 攻击者可以利用外部实体窃 取使用URI文件处理器的内部文件和共享文件、监听内部扫描端口、执行远程代码和实施拒绝服务攻 击。
A5:2017-失效的访问控制
未对通过身份验证的用户实施恰当的访问控制。 攻击者可以利用这些缺陷访问未经授权的功能或数 据, 例如:访问其他用户的帐户、查看敏感文件、修改其他用户的数据、更改访问权限等。
A6:2017-安全配置错误
安全配置错误是最常见的安全问题,这通常是由于不安全的默认配置、不完整的临时配置、开源云存储、错误的 HTTP 标头配置以及包含敏感信息的详细错误信息所造成的。 因此,我们不仅需要对所 有的操作系统、框架、库和应用程序进行安全配置,而且必须及时修补和升级它们。
A7:2017跨站脚本(XSS)
当应用程序的新网页中包含不受信任的、未经恰当验证或转义的数据时,或者使用可以创建HTML 或 JavaScript 的浏览器API 更新现有的网页时,就会出现 XSS 缺陷。 XSS 让攻击者能够在受害者的浏览器中执行脚本,并劫持用户会话、破坏网站或将用户重定向到恶意站点。
A8:2017-不安全的反序列化
不安全的反序列化会导致远程代码执行。 即使反序列化缺陷不会导致远程代码执行,攻击者也可以利用它们来执行攻击, 包括:重播攻击、注入攻击和特权升级攻击。
A9:2017-使用含有已知漏洞的组件
组件(例如:库、框架和其他软件模块)拥有和应用程序相同的权限。 如果应用程序中含有已知漏洞的组件被攻击者利用,可能会造成严重的数据丢失或服务器接管。 同时,使用含有已知漏洞的组件的应用程序和API可能会破坏应用程序防御、造成各种攻击并产生严重影响。
A10:2017不足的日志记录和监控
不足的日志记录和监控,以及事件响应缺失或无效的集成,使攻击者能够进一步攻击系统、保持持续性或转向更多系统,以及篡改、提取或销毁数据。 大多数缺陷研究显示,缺陷被检测出的时间超过200天,且通常通过外部检测方检测,而不是通过内部流程或监控检测。