初识web安全2--被动攻击与同源策略

0x01 被动攻击

  • 针对web应用程序的攻击可以分为主动攻击(Active Attack)和被动攻击(Passive Attack)

1、主动攻击:指的是攻击者直接攻击服务器
2、被动攻击:攻击者并不直接攻击服务器,而是针对网站用户设置陷阱,利用掉入陷阱的用户来攻击应用程序(一是获取消息内容,二是进行业务流分析)

  • 单纯的被动攻击

1、单纯的被动攻击:将用户诱导到设置有陷阱的网站就是一种单纯的被动
2、攻击案例:用户在浏览过了设置陷阱的网站后就会感染恶意软件(病毒等),理论上如何浏览器不存在漏洞(包括Flash等插件)这类单纯的被动攻击时行不通的

  • 恶意利用正常网站进行的被动攻击

step1:攻击者事先入侵正规网站,向其中嵌入恶意代码(前期准备)
step2:用户浏览含有恶意代码的内容(被动攻击过程)
step3:感染病毒(结果)

缺点:利用正常网站进行攻击要比自己准备一个网站要费事
优点:不需要专门将用户诱导到恶意网站;正规网站用户数量庞大;能非法利用正规网站功能从中获得利益;能窃取网站用户个人信息而获利

  • 在正常网站中设置陷阱的常用手法:

1、非法获取FTP等服务器的密码后篡改网站内容
2、通过攻击web服务器的安全隐患来篡改网站内容
3、通过SQL注入攻击来篡改网站内容
4、在社交网络等用户能够自己发布内容的网站上面,利用xss等方式实施攻击

  • 跨站被动攻击

🐓流程:
step1:用户浏览恶意网站
step2:从恶意网站中下载含有恶意代码的HTML
step3:HTML中的恶意代码被触发,从而向正常网站发送攻击请求
step4:正常网站返回包含JavaScript等的响应内容
#含有恶意代码的HTML,多数是指在网络论坛上发布的专门用来攻击的URL

  • 常见的被动攻击形式

1、网络监听
2、嗅探
3、信息收集
4、流量分析(扫描)——可导致信息泄露

0x02 如何防御被动攻击

针对被动攻击,用户和网站都需要做出相应的防御措施,浏览器开发者也需要做出措施
客户端最常见的方式:沙盒
沙盒,是JavaScript、Java Applet、Adobe Flash Player等经常使用的一种思路。在沙盒里面,程序的权限是受到限制的,就算有恶意程序也无法对用户造成威胁。通常情况下,沙盒限制了以下功能:

禁止访问本地文件
禁止使用打印机等资源(可以显示页面)
限制网络访问(同源策略)

0x03 同源策略

同源策略(Same Origin Policy)是浏览器的一个安全功能,就是禁止JavaScript进行跨站访问的安全策略,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源。 同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的重要安全机制。它也是浏览器的沙盒环境所提供的一项制约。

  • 同源的条件

URL的主机(FQDN全称域名)一致
Scheme(协议)一致
端口号一致

此外,由于发送cookie时的条件与协议和端口号无关,所以针对JavaScript的限制正在变得越来越严格

#在使用iframe外层的JavaScript访问外层(其他主机)数据时由于违反了同源策略,访问会被拒绝。但是,这种情况下可以使用一些特殊手段将JavaScript放到iframe的内层去执行。由于在iframe内层不会收到同源策略的限制,因此就可以成功访问到文档信息。这种攻击叫做跨站脚本攻击(xss)

  • 第三方JavaScript

1、虽然XSS是由于恶意的第三方执行JavaScript而产生的问题,但是有些情况下我们也会需要执行第三方JavaScript。为了安全上面的考虑,网站运营者或者网页浏览者通常也需要执行的是他们信任的第三方JavaScript
2、网站有时会将他们所信任的第三方JavaScript嵌入到自己的网站中。例如:访问解析、横幅广告、博客插件等
3、网页浏览者有时也会信任第三方而向网页中嵌入JavaScript,比如firefox浏览器中的tampermonkey(油猴脚本)就可以让用户安装各种js脚本从而轻易的改变浏览中的网页内容,tampermonkey运行时通常会有比JavaScript更大的权限,所以一些恶意的Tampermonkey脚本作者就可以进行盗取密码等非法操作
4、嵌入的JavaScript如果是恶意代码,网站或个人用户就有信息泄露或遭到恶意篡改的风险。所以JavaScript提供方值得信赖是这一切的前提条件

现实中第三方JavaScript所造成的威胁时常发生,例如:

1、提供方有意搜集个人信息
2、提供方的服务器存在安全隐患,JavaScript代码被掉包
3、提供方的JavaScript代码存在安全隐患而被迫运行其他脚本

  • JavaScript以外的跨域访问
    JavaScript的跨域访问会受到同源策略的严格限制,一些其他的浏览器功能也可以进行跨域访问

(1) frame元素与iframe元素

frame元素和iframe元素能够进行跨域访问,但是通过JavaScript却不能跨域访问iframe中的文档内容

(2) img元素

img元素的src属性能够指定其他域名。此时,请求图象时会附带图象所在主机的cookie,所以就可以让恶意网站上的图象显示为"此图像需要认证"。JavaScript无法访问图像文件内部,所以跨域图像访问不会造成什么问题。如果不想让自己的图象被贴到某些特定网站,就可以针对图像检验Referer消息头。不过这样会使得关闭了Referer的用户无法看到图像。

(3) script元素

1、通过指定script元素的src属性就可以从其他网站读取JavaScript。这里假设A网站读取B网站的JavaScript
2、JavaScript的源码就位于B网站的服务器中,但是JavaScript执行 document.cookie 后得到的就是A网站上的cookie信息
3、A网站向B网站取得的JavaScript的请求时,也会向B网站发送cookie。所以,根据用户在B网站中的登陆状态,B网站中的JavaScript的代码会发生变化,从而影响A网站中的内容
4、这种情况也可能会伴随着JSONP(JSON with padding)而出现。JSONP是从Ajax应用而来访问不同来源的服务器中的数据时所采用的一种方式,但是根据认证状态的不同,JavaScript的代码(JSONP的数据)会发生变化,从而就有可能会导致意想不到的信息泄漏事故。所以JSONP是不能用于传送隐私信息的。

(4) css

1、 CSS(Cascading Style Sheets)能够被跨域读取。具体来说,除了HTML的link元素之外,也能在CSS中使用 @import,或者使用JavaScript的 addImport 方法
2、 一般来说,即使读取不良网站的CSS也不会造成什么问题。但是以前在IE浏览器中出现过叫做 CSS Style XSS 的安全隐患,它能够使得HTML或者JavaScript被当成CSS读取,而如果其中部分代码能够被执行的话就会有危险

(5) form元素的action属性

1、 form元素的action属性也可以跨域指定。而且无论action的目标是否跨域,form的提交都可以JavaScript来操作
2、 恶意利用form元素的特性来实施攻击的方式被称为跨站请求伪造(CSRF)。CSRF攻击是让用户在不知情的情况下提交form,从而肆意使用应用中的功能

转载请注明链接!
链接地址:https://blog.csdn.net/weixin_45126664/article/details/107493895

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值