8·1Web安全攻击概述|8·3会话管理机制|8·4SQL注入攻击|8·5跨脚本攻击|8·6CSR攻击

发布时间 2023-04-06 13:17:20作者: ja不会va

Web安全攻击概述

 web应用的概念

  web应用是由动态脚本,编译过的代码等组合而成

  它通常架设在Web服务器上,用户在Web浏览器上发送请求

  这些请求使用HTTP协议,由Web应用和企业后台的数据库及其他动态内容通信

 Web应用三层架构

  典型的Web应用通常是标准的三层架构模型

  

WASC的定义

  Web Application Security Consortium

  是一个有安全专家,行业顾问和诸多组织的代表组成的国际团体

  他们负责为www指定被广为接受的应用安全标准

WASC将Web应用安全威胁分为六大类

  1、Authentication(验证):用来确认某用户、服务或是应用身份的攻击手段

  2、Authorization(授权):用来决定是否某用户、服务或是应用具有执行请求动作必要权限的攻击手段

  3、Client-side Attacks(客户侧攻击):用来扰乱或是探测Web站点用户的攻击手段

  4、Command Execution(命令执行):在Web站点上执行远程命令的攻击手段

  5、Information Disclosure(信息暴露):用来获取Web站点具体系统信息的攻击手段

  6、Logical Attacks(逻辑性攻击):用来扰乱或是探测Web应用逻辑流程的攻击手段

OWASP的定义

  Open Web Application Security Project

  该组织致力于发现和解决不安全Web应用的根本原因

  他们最重要的项目之一是"Web应用的十大安全隐患"

  总结了之前Web应用最常受到的十种攻击手段,并且按照攻击发生的概率进行了排序

OWASP谈漏洞分析

  A1:-注入

    将不受信任的数据作为命令或査询的部分发送到解析器时,会生注入SQL注入、NOSQL注入、OS注入和LDAP注入缺陷。

  A2:-失效的身份认证

    通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或会话令牌。

  A3:-敏感数据泄露

    许多web程序和APl都无法正确保护敏感数据,攻击者可通过窃取或修改未加密的数据来实施信用卡诈骗、身份盗窃等犯罪行为

  A4:-XML外部实体类

    许多较早的或配置错误的XML处理器评估的XML文件中的外部实体引用。攻击者可利用外部实体窃取内部文件、执行远程代码

 

 

  A5:-失效的访问控制

    未对通过身份验证的用户实施恰当的访问控制。

 

  A6:-安全配置错误

    安全配置错误是最常见的安全问题,这通常是由于不安全的默认配置、不完整的临时配置、开源云错误等造成。

 

 

  A7:-跨站脚本(XSS)

    XSS让攻击者能够在受害者的浏览器中执行脚本,并劫持用户会话、破坏网站或将用户重定向到恶意站点

 

  A8:-不完全的反序列化

    不安全的反序列化会导致远程代码执行

 

  A9:-使用含有以知漏洞的组件

    组件如库、框架和其他软件模块拥有和应用程序相同的权限

  A10:-不足的日志记录和监控

    不足的日志记录和监控,以及事件响应缺失或无效的集成,使攻击者能够进一步攻击系统、保持持续性、篡改、提取或销毁数据

会话管理概念

  绝大多数Web应用程序中,会话管理机制是一个基本的安全组件。

  会话管理在应用程序执行登录功能时显得特别重要。

  因为,它可在用户通过请求提交他们的证书后,持续向应用程序保证任何特定用户身份的真实性。

会话管理概述

  由于会话管理机制所发挥的关键作用,它们成为针对应用程序的恶意攻击的主要目标。

  若攻击者能够破坏应用程序的会话管理,他就能轻易避开其实施的验证机制,不需用户证书即可伪装成其他应用程序用户。

  如果攻击者以这种方式攻破一个管理用户,那么他就能够控制整个应用程序。

会话令牌生成漏洞

  一些会话令牌通过用户的用户名或电子邮件地址转换而来,或者使用与其相关的其他信息创建  

  这些信息可以某种方式进行编码或模糊处理,也可与其他数据结合在一起

   生成随机数强度不够

  计算机种的数据极少完全随机

  因此,如果由某种原因需要随机数据,一般通过软件使用各种技巧生成伪随机数字

会话终止攻击

  最糟糕的情况:当用户单击"退出"按钮时,应用程序并不与服务器通信,因此服务器不采取任何行动

  相反,应用程序执行一段客户端脚本清空用户的 cookie,在随后的请求中将用户返回到登录页面。

  访问这个 cookie的攻击者就能使用会话,好像用户从未退出一样。

会话管理的防御

  1令牌传输安全

    令牌只能通过HTTPS传送。

    如果使用HTTPcookie传送令牌(大多数情况下),应将这些cookie标记为secure,以防止用户浏览器通过HTTP传送它们。

  2增加软硬会话过期

    软会话过期,它指的是用户在一定的时间内与应用系统没有交互,则会话过期,也就是我们常说的 Session失效

    硬会话过期,它指的是用户登录到系统中经过一定的时间后,不管用户做什么,该会话都会过期  

  3提供完善的注册功能

    用户可以手动地使当前会话过期,这就是我们在几乎所有网站上都看到的 logout按钮

    TIPS:要保证注销不存在会话终止漏洞。

SQL注入原理

  几乎每一个web应用都需要使用数据库来保存操作所需的各种信息。

  所以web程序经常会建立用户提交数据的SQL语句。

  如果,建立这种语句的方法不安全,那么应用程序就很容易受到SQL注入的攻击。

  最严重的情况下,攻击者可利用SQL注入读取甚至修改数据库中的保存的所有数据

  用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据。

SQL注入防御

  参数化查询是对sql注入根本性的防御策略,也叫做预处理语句,在建立一个包含用户的sql语句时分为两部:

    1、指定查询结构,用户输入预留占位符

    2、指定占位符内容

XSS攻击原理

  跨站脚本攻击( Cross Site Scripting),XSS是一种经常岀现在web应用中的计算机安全漏洞。

  它允许恶意web用户将代码植入到提供给其它用户使用的页面中,其他用户在观看网页时,恶意脚本就会执行。

  这类攻击通常通过注入HTML或s等脚本发动攻击。

  攻击成功后,攻击者可以得到私密网页内容和 cookie等。

XSS攻击危害

  盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号

  控制数据,包括读取、篡改、添加、删除企业敏感数据的能力

  盗窃企业重要的具有商业价值的资料

  非法转账

  强制发送网站挂马

  控制受害者机器向其它网站发起攻击
XSS分类

  针对XSS的攻击方式不同,我们可以把XSS分为如下三大类

  1、反射式XSS

  2、存储式XSS

  3、基于DOM的XSS
放射式XSS

  也称为非永久性XSS,是目前最流行的XSS攻击。

  它出现在服务器直接使用客户端提交的数据,如url的数据、html表单中提交数据等,并且没有对数据进行无害化处理。

  如果提交的数据中含有HTML控制字符而没有被正确处理,那么一个简单的XSS攻击就会发生。

反射式XSS

  典型的反射式攻击可通过一个邮件或中间网站,诱饵是一个看起来可信任的站点的链接,其中包含XSS攻击脚本。

  如果信任的网站没有正确处理这个脚本,用户点击后就会导致浏览器执行含有恶意攻击的脚本。

存储式XSS

  也成为永久性XSS,危害更大。

  攻击将攻击脚本上传到Web服务器上,使得所有访问该页面的用户都面临信息泄漏的可能,其中也包括了Web服务器的管理员。

存储式XSS多发生在最终显示给其他用户的位置包含:

  个人信息字段,如姓名、地址、电子邮件、电话等

  文档、上传文件及其他数据的名称

  提交给应用程序管理员的反馈或问题

  向其他应用程序用户传送的消息、注释、问题等

  在用户之间共享的上传文件内容

基于DOM的XSS攻击

  反射式XSS攻击和存储式XSS攻击都是通过服务器端提取用户提交的数据

  并且以不安全的方式将其返回给用户

  基于DOM的攻击仅仅通过JavaScript的方式执行

  也就是说这种攻击常发生在应用程序每次返回相同的静态html,而通过客户端JavaScript动态生成信息,并不会跟服务端交互获取的时候。

XSS攻击载荷

  1、会话令牌

    XSS攻击最普遍的方式

      截取一名受害者的会话令牌,劫持他的会话,进而作为受害者的身份来使用应用程序,执行任意操作并占有该用户的账户。

  2、虚拟置换

    这种攻击需要在一个Web应用程序页面注入恶意数据,从而向应用程序的用户传送误导性信息。

    包括简单的向站点注入html,或者使用脚本注入精心设计的内容

    攻击者实际上没有修改保存在服务器上的内容,而是利用程序处理并显示用户提交的输入方面的缺陷实现置换。

  3、注入木马

    这种攻击造成的后果远比虚拟置换严重,它在易受攻击的应用程序中注入实际运行的功能,旨在欺骗终端用户执行某种有害操作(如输入敏感数据)。

    随后将它们传送给攻击者

    在一个明显的攻击中,攻击者注入的功能向用户显示一个木马登录表单,要求他们向攻击者控制的服务器提交他们自己的证书。

    如果由技巧熟练的攻击者实施,这种攻击还允许用户无缝登录到真正的应用程序中,以便他们不会发觉访问过程中的任何反常情况。

    然后,攻击者就可以自由使用受害者的证书实现自己的目的。

    这种类型的有效载荷非常适宜于用在钓鱼攻击中,向用户传送一个经过专门设计、连接可信应用程序的URL,并要求他们正常登录以访问这个URL。

XSS防御措施

  1、输入验证码

    如果应用程序在某个位置收到的用户提交的数据将来有可能被复制到它的响应中,应用程序应根据这种情形对这些数据执行尽可能严格的确认。

    数据不是太长

    数据仅包含某组合法字符数据与一个特殊的正规表达式相匹配

    根据应用程序希望在每个字段中收到的数据类型,应尽可能限制性地对姓名、电子邮件地址、账号等应用不同的确认规则

  2、输出编码

    如果应用程序将某位用户或第三方提交的数据复制到它的响应中,那么应用程序应对这些数据进行HTML编码,以净化可能的恶意字符。

    HTML编码指用对应的HTML实体替代字面量字符,这样做可确保浏览器安全处理可能为恶意的字符,把它们当作HTML文档的内容而非结构处理。

    经常造成问题的字符的HTML编码如下:
  

  应用程序之所以结合使用输入确认与输出净化,原因在于这种方法能够提供两层防御:如果其中一层被攻破,另一层还能提供一些保护。

  许多执行输入与输出确认的过滤都容易被攻破

  结合这两种技巧,应用程序就能够获得额外的保护,即使攻击者发现,其中一种过滤存在缺陷,另一种过滤仍然能够阻止他实施攻击。

  在这两种防御中,输出确认最为重要,必不可少。实施严格的输入确认应被视为一种次要故障恢复。
 

CSR攻击

  攻击原理

    CSRF (Cross-site Request Forgery,跨站请求伪造,也被称为"one click attack”或者session riding,

      通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。

    尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。

    XSS利用站点内的信任用户(受害者),而CSRF通过伪装来自受信任用户的请求来利用受信任的网站

 

    通过社会工程学的手段(如通过电子邮件发送一个链接)来盖惑受害者进行一些敏感性的操作,

      如修改密码、修改E-mail、转账等,而受害者还不知道他已经中招

CSRF攻击危害

  CSRF攻击危害

  如果受害者只是个普通的用户,则一个成功的CSRF攻击会危害用户的数据以及一些功能

  如果受害者具有管理员权限,则一个成功的CSRF攻击甚至会威胁到整个网站的安全

  与XSS攻击相比,CSRF攻击往往不太流行(因此对其进行防范的资源也相当稀少)和难以防范

  故被认为比XSS更具危险性,所以CSRF在业内有个响当当的名字——沉睡的巨人

典型的CSRF攻击传递
  Alice登录了一个金融网站mybank.com

  Bob 知道这个金融网站mybank.com,并且发现这个网站的转账功能有CSRF漏洞

  于是,Bob 在myblog.com 上发表了一条blog,这个blog支持img自定义功能

  

  Alice在自己的浏览器上打开了另一个标签页正好也读到这个blog

 

CSRF攻击预防

  1、增加一些确认操作

 

  2、重新认证

 

  3、使用Token