当前位置:首页 > 网站技术 > 前端技术 > 正文内容

HTTP之安全威胁解析

小彬2020-08-06前端技术149

1、web安全攻击


web应用的概念

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

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

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


web应用三层架构

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

web浏览器---[web页(表示层)]---[业务员逻辑层]---[数据层]----数据库服务器

          |----------------- [common层]----------------|

HTTP之安全威胁解析


日常安全问题

登录要求输入验证码

网站长时间没有操作,session失效


HTTP之安全威胁解析

WASC的定义:负责为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:该组织致力于发现和解决不安全web应用的根本原因。

总结了目前web应用的最长受到的十种攻击手段


A1:2017-注入

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


A2:2017-失效的身份认证

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


A3:2017-敏感数据泄露

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


A4:2017-XML外部实体(XXE)

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


A5:2017-失效的访问控制

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


A6:2017-安全配置错误

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


A7:2017-跨站脚本(XSS)

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


A8:2017-不完全的反序列化

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


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

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


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

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



2、验证机制概述

1.验证机制是web应用程序中最简单的一种安全机制

◆一般来说,应用程序必须核实用户提交的用户名和密码是否正确。正确则允许登录,否则禁止登录

2.验证机制是应用程序防御恶意攻击的核心机制

◆它处在安全防御的最前沿,如果被用户轻易突破,通常应用程序的全部功能、数据都会被其控制。

◆缺乏安全有效的验证机制,其他核心安全机制都无法实施( 会话管理和访问控制)。


验证技术

基于html表单的验证

多元机制,如组合型密码

客户端ssl证书


弱密码

许多web应用程序没有或很少对用户密码强度进行控制

◆非常短或空白密码

◆以常用字典词汇为密码( password、123456)

◆密码与用户名完全相同

◆长时间使用默认密码


暴力破解

◆登录功能的公开性会诱使攻击者试图猜测用户名和密码,从而获得访问应用程序的权力。

◆如果应用程序允许攻击者用不同的密码暴力尝试,直到他找到正确的密码,这个程序就非常容易遭受攻击。


◆很多工具(如Burpsuite) 自身提供了一些常用密码破解list,我们也可以自行添加一-些常用字典,网上也有更多全面的密码字典。

◆依赖今天的带宽和处理能力,根据经验,每分钟可以发出几千甚至上万个登录尝试,如果没有一 些安全措施的话,最强大的密码也最终会被攻破。

HTTP之安全威胁解析

暴力破解安全措施

验证码技术

◆最常见和有效的应对方式, 需要注意几个问题:

    1.验证码是否真实有效

    2.验证码复杂度

    3.应对当前的“打码”事业盛行

    4.人们已经对captcha技术做了大量研究

3、Cookie和会话检测

◆有些应用程序会设置一个cookie, 如failedlogin=0;登录尝试失败,递增该值,达到某个.上限,检测到这个值并拒绝再次处理登录。

◆失败计数器可能在Cookie中,也可能存储在会话中。

双因子认证(支付宝阿里云就是双因子认证)

◆双因子认证的核心是综合what you know (个人密码)和what you have (手机)来达到双重认证效果。

◆目前很多电商、银行都采用了该认证方式。



谁忘记了你的密码

◆当前互联网网站大多提供"忘记密码”功能,但是呢,这里面往往会存在一些典型的安全问题。

◆核心问题就是忘记密码的流程跳过了身份验证。

◆如果不考虑通过客服找回密码的话,通常网站设计有三种方式来认证用户:

  1.用户设定的安全问题

  2.用户注册时留下的安全邮箱

  3.给预留手机号发送验证码短信



忘记密码模块可能存在的漏洞

例1、安全问题

◆某网站登录页中的找回密码功能,再点击下面的“网上申诉”

◆在申诉页面的源代码里,不但有密码提示问题,Hide表单里竟然泄露问题答案

◆这样,可获得任意用户修改密码问题答案,从而轻松修改任意用户邮箱密码

例2、邮件找回密码

◆某网站贴心地实现了 “重新发送找回密码邮件"功能

◆不幸地是,在GET请求的URL里,目标email参数是明文的

◆从而可以将任意用户的密码重置邮件发给指定邮箱

例3、手机验证码

◆某网站高级的使用手机安全绑定重置密码,结果发现短信验证码直接隐藏在页面里

例4、MD5加密依赖

◆太过依赖MD5加密,事实大多数时候,MD5不是神器

例5、多阶登录机制

◆人们常常认为,多阶段登录机制币标准的用户名/密码验证的安全漏洞更少。

◆这种看法某些时候是错误的。

◆执行多次验证检查可能会提高登录机制的安全性,但相应的,这个过程也可能存在更多的执行缺陷。



4、会话管理概述

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

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

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

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

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

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

HTTP之安全威胁解析


会话令牌生成漏洞

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

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


令牌可预测

◆一些会话令牌并不包含与某个特殊用户有关的任何有意义的数据,但由于它们包含某种顺序或模式,允许攻击者通过几个令牌样本即可推断出应用程序最近发布的其他有效令牌,因此具有可预测性。

◆即使推断过程需要做出大量尝试,并且成功率极低(例如,每1000次尝试得到一一个有效令牌),自动攻击工具也仍然能够利用这种缺陷在很短的时间内确定大量有效令牌。

隐含序列

时间依赖


会话令牌生成漏洞

◆生成随机数强度不足

◆计算机中的数据极少完全随机

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

◆所使用的一些算法生成看似随机并且在可能的数值范围内平均分布的序列



会话终止攻击

◆尽可能缩短一个会话的寿命可降低攻击者截获、猜测或滥用有效会话令牌的可能性。

◆其次,如果用户不再需要现有会话,终止会话为用户提供一一种使其失效的途径,在进一步降低上述可能性的同时,在某种程度上确保共享计算环境中会话的安全。

◆一些应用程序并不实施有效的会话终止功能。

◆会话一旦建立,它在收到最后请求后的许多天内也仍然有效,直到服务器最终将其清除。

◆有些时候,退出功能实际上并不能帮助服务器终止会话

◆即使服务器从用户的浏览器中删除令牌(例如,通过发布一个清空令牌的Set-Cookie指令)。

◆然而,如果用户继续提交这个令牌,服务器仍然接受它。

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

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

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



会话劫持攻击

◆攻击者通过网络嗅探、XSS攻击等方式获取被攻击者会话令牌的攻击方式。

◆这种攻击方式最简单也最有效,也是目前最多采用的攻击方式。


会话管理漏洞的防御

1.令牌传输安全

◆令牌只能通过HTTPS传送。

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


2.增加软硬会话过期

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

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


3.提供完善的注销功能

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

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


5、SQL注入原理

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

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

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

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

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

◆这就是所谓的SQL Injection,即SQL注入。


SQL注入威胁

SQL注入危害

探知数据库的具体结构,为进一步攻击做准备(sql盲注)

泄露数据,尤其是机密信息、账户信息等

取得更高权限,来修改表数据甚至是内部结构


SQL注入防御

参数化查询

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

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

2.指定占位符的内容



6、XSS攻击原理

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

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

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

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

◆最近几年XSS攻击已经成为最流行的攻击方式。


XSS攻击危害

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

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

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

◆非法转账

◆强制发送网站挂马

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


xss攻击真实案例

Myspace XSS攻击事件

Apache 攻击事件



XSS分类

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

1.反射式XSS

2.存储式XSS

3.基于DOM的XSS


反射式XSS

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

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

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

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

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


存储式XSS 

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

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



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

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

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

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

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

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



基于DOM的XSS攻击

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

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

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

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


XSS攻击负荷

1.会话令牌

◆XSS攻击最 普遍的方式。

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

2.虚拟置换

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

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

3.注入木马

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

◆随后将它们传送给攻击者。

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

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

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

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



XSS防范措施

1.输入验证

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

◆需要确认的数据的潜在特性包括以下几点。

  数据不是太长

  数据仅包含某组合法字符

  数据与一个特殊的正规表达式相匹配

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

2.输出编码

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

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

HTTP之安全威胁解析


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

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

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


7、CSRF攻击原理

◆CSRF (Cross-site Request Forgery,跨站请求伪造,也被称为"one click attack"或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。

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

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

◆通过社会工程学的手段(如通过电子邮件发送一个链接)来蛊惑受害者进行一些敏感性的操作,如修改密码、修改E-mail、 转账等,而受害者还不知道他E已经中招。



CSRF攻击危害

CSRF 的破坏力依赖于受害者的权限。

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

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

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

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


攻击过程深度剖析

1. Web浏览器对于Cookie和HTTP身份验证信息之类的会话信息的处理方式:

◆目前,浏览器会自动地发送标识用户对话的信息,而无须用户干预。

◆换句话说,当浏览器发送这些身份信息的时候,用户根本感觉不到。




CSRF预防


1.增加一些确认操作

2.重新认证

3.使用token

◆在用户刚登录的时候,产生一个 新的不可预知的CSRFToken,并且把此Token存放在用户的session中。

◆在任何一个需要保护的表单中, 增加一个隐藏的字段来存放这个Token。

◆对于需要保护的URL,增加一个参数来存放此Token。

◆提交此请求的时候, 在服务器端检查提交的Token与用户session中的Token是否一致,如果一致, 继续处理请求,否则返回一个错误信息给用户。

◆在用户退出或者session过期的时候,用户信息(包括CSRF Token)从session 中移除并且销毁session。


标签: http
分享给朋友:

相关文章

手机端分享调用功能的实现(只能在真机上测试有效)

手机端分享调用功能的实现(只能在真机上测试有效)

html: <a href="javascript:void(0);" onclick="call('default')"> <...

SEO搜索引擎工作原理

SEO搜索引擎工作原理

一、搜索引擎工作原理  当我们在输入框中输入关键词,点击搜索或查询时,然后得到结果。深究其背后的故事,搜索引擎做了很多事情。  在搜索引擎网站,比如百度,在其后台有一个非常庞大的数据库,里面存储了海量...

浏览器缓存机制

浏览器缓存机制

浏览器缓存机制本文地址: https://www.laruence.com/2010/03/05/1332.htmlCache-ControlCache-Control 是最重要的规则。这个...

PC端固定顶部的导航栏在屏幕缩小时左右滚动

PC端固定顶部的导航栏在屏幕缩小时左右滚动

一般网站都会有固定导航栏,但是大多数都是随着屏幕的缩小并不会出现左右滚动。比如京东和淘宝的官网就是没有出现左右滚动你想想,如果把这个问题解决掉,其实你比他们还优秀言归正传,那就来说说怎么实现。首先上我...

从输入URL到页面加载完成的过程(全程梳理)

从输入URL到页面加载完成的过程(全程梳理)

注:文章来源于CSDN博主「Junli_1413」的原创文章https://blog.csdn.net/qq_20901397/article/details/79982679主干流程:一、从浏览器接...

评论列表

竹林小虾
2020-08-06

产出很高啊,你哪有那么多时间呢

小彬 回复:
时间就像海绵,挤一挤总会有的
2020-08-06

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

分享:

支付宝

微信