习CSS注入的目的是学习计算机知识,千万不要做违反法律的事情,不然等待你的是法律的严惩。
CSS仅仅只是一种用来表示样式的语言吗?当然不是!CSS就已被安全研究人员运用于渗透测试当中。使用属性选择器和iFrame,并通过CSS注入来窃取敏感数据的方法。但由于该方法需要iFrame,而大多数主流站点都不允许该操作,因此这种攻击方法并不实用。这里为大家详细介绍一种不需要iframe且只需10秒,就能为获得CSRF token的方法。
一、背景
CSS属性选择器开发者可以根据属性标签的值匹配子字符串来选择元素。 这些属性值选择器可以做以下操作:
属性选择器能让开发人员查询单个属性的页面HTML标记,并且匹配它们的值。一个实际的用例是将以“https://example.com”开头的所有href属性变为某种特定的颜色。而在实际环境中,一些敏感信息会被存放在HTML标签内。在大多数情况下CSRF token都是以这种方式被存储的:即隐藏表单的属性值中。
可以将CSS选择器与表单中的属性进行匹配,并根据表单是否与起始字符串匹配,加载一个外部资源,例如背景图片,来尝试猜测属性的起始字母。通过这种方式,攻击者可以进行逐字猜解并最终获取到完整的敏感数值。想要解决这个问题受害者可以在其服务器实施内容安全策略(CSP),防止攻击者从外部加载CSS代码。
二、无 iFrames
要做到无iFrame,使用一种方法:创建一个弹窗,然后在设置计时器后更改弹出窗口的位置。使用这种方仍然可以加载受害者的CSS,不再依赖于受害者是否允许iFrame。因为最初的弹出是通过用户事件触发的,没有被浏览器阻止。为了强制重载,在CSS注入间弹出一个虚拟窗口,如下:
但由于CSRF是针对客户端的攻击,因此如果能想出一种不需要服务器的方法,那么就可以节省大量的开销和简化操作。为了接收客户端加载资源,可以利用Service Workers来拦截和读取请求数据。Service Workers目前只适用于同源请求,在演示中受害者和攻击者页面已处于同一源上。
不久后,chrome很可能会合并这个实验性的功能,允许Service Workers拦截跨域请求。这样,就可以确保在客户端的攻击100%的执行,并强制用户在10秒内点击链接执行CSRF攻击,演示如下:
三、Demo
如上所述,因为不想运行一个web服务器,所以使用service workers拦截和模拟服务器端组件。目前,该演示只适用于Chrome浏览器。首先创建了一个易受攻击的目标,它存在一个基于DOM的CSS注入漏洞,并在页面放置了一个敏感token。再对脚本标签添加了一些保护措施,对左尖括号和右尖括号进行了编码。
接下来将强制加载受害者的CSS,并且使用上述方法,可一次窃取(猜解)一个敏感字符。在接收端,定义一个拦截请求的service worker,并通过post-message将它们发送回域,然后将token存储在本地存储中以供后续使用。你也可以想象一个后端Web服务器,通过Web套接字或轮询将CSRF token回发给攻击者域。
如果你的浏览器支持的话,只需点击打开页面任意位置,你将看到CSRF token将逐一被猜解出来。
四、结束语
反射型CSS注入实际上比存储型CSS注入更致命,因为存储型CSS注入需要一个服务器在受害者渲染之前来更新CSS。一段时间以来,CSS注入在严重程度上来回变化。过去IE浏览器是允许用户在CSS中执行Javascript代码的。这个演示也从某种程度上表明了CSS注入,以及渲染不受信任的CSS仍会导致严重的安全问题。所以在设计软件一定要测试,才能及时发现和修复各种漏洞。
eb前端教程
ASP是动态服务器页面(ActiveServerPage)的英文缩写。是微软公司开发的代替CGI脚本程序的一种应用,它可以与数据库和其它程序进行交互,是一种简单、方便的编程工具。ASP的网页文件的格式是.asp。现在常用于各种动态网站中。
我们在写asp页面的时候,常常使用include命令来包含公共文件。由于这个方法用起来非常方便,于是很多人在html页面里尝试使用include,但是发现根本就不起作用。这是因为,include是VBScript的命令,因此可以在asp页面里使用。而HTML静态页面被调用的时候并不经过asp解释器,而是直接发送到用户浏览器,因此include命令就无效了。
对于信息量较大的网站,通常我们都选择使用静态页面,否则数据库查询太频繁,服务器压力太大。但是过多的页面里面,如果不能用调用的方式将公共内容包含进去,那么一旦修改起来就太可怕了。
include最大的价值就是因重用而易于维护,怎样才能在静态页面里也实现include的功能呢?最简单的办法,就是做asp后缀的静态页面——内容是静态的,页面保存成asp后缀的,这种方式对搜索引擎没有什么影响,实际运算量也并不大(因为虽然经过asp解释器,但是实际上几乎没有运算量)。如果您一定要做HTM后缀的静态页,那么还有下面这些方法可供替代。
1.IFrame.这个可能是大家最熟悉的
<iframe.name="neepage"marginwidth="0"marginheight="0"src="import.htm"width="100%"height="30"></iframe>
加上它的一些属性可以实现一些透明,无滚动条等具体的效果.大家可以html教程的相关介绍2.Frameset
这就是大家熟悉的框架了,没什么好说的,看看html教程就行3.<objecttype="text/x-scriptlet"data="import.htm"width=100%height=30></object>4.Behavior的download方式
<ie:downloadid="oDownload"></ie:download>
<script>
functiononDownloadDone(downDate){
showImport.innerHTML=downDate
}
oDownload.startDownload('import.htm',onDownloadDone)
</script>5.<script>
就是把相关的html文件转化为js文件,再在调用的时候用
<script.src="import.js"></script>
很多CMS系统的广告模块都是这么实现的。
这个方法有点要注意的假如你是用来包含象头部、导航这些的话,建议不要用这个,不利于搜索引擎的搜集。主导航也尽量不要使用js,不利于搜索引擎对你的站点结构建立索引。
ASP是一种服务器端脚本编写环境,可以用来创建和运行动态网页或web应用程序。ASP网页可以包含HTML标记、普通文本、脚本命令以及COM组件等。利用ASP可以向网页中添加交互式内容(如在线表单),也可以创建使用HTML网页作为用户界面的web应用程序。
用JSP进行开发,需要具备相应的运行环境,即Web浏览器、Web服务器、JDK开发工具包、数据库。
浏览器主要是作为用于客户端用户访问Web应用的工具,与开发JSP应用的关系不大。
开发JSP对浏览器的要求并不是很高,任何支持HTML的浏览器都可以。
Web服务器是运行及发布Web应用的大容器,只有将开发的Web项目放置到该容器中,才能使网络中的所有用户通过浏览器进行访问。
开发JSP应用所采用的的服务器主要是Servlet兼容的Web服务器,比较常用的有WebLogic、WebSphere、Tomcat。
WebLogic是BEA公司的产品,后被Oracle公司并购,它分为WebLogic Server、WebLogic Enterprise和WebLogic Portal系列,其中WebLogic Server的功能特别强大,它支持企业级的、多层次的和完全分布式的Web应用,并且服务器的配置简单、界面友好。
IBM公司的WebSphere是一种功能完善、开放的Web应用程序服务器,它基于Java的应用环境,建立、部署和管理Web应用程序。相对于其他流行的Web服务器而言,应用的数量很少。
Tomcat服务器最为流行,它是Apache-Jarkarta开源项目中的一个子项目,是一个小型的、轻量级的、支持JSP和Servlet技术的Web服务器。但是Tomcat对静态文件和高并发的处理能力比较弱。
JDK(Java Develop Kit,Java开发工具包)包括运行Java程序所必须得JRE环境及开发过程中常用的库文件。
在使用JSP开发网站之前,首先必须安装JDK。
任何项目的开发几乎都需要使用数据库,数据库用来存储项目中需要的信息。
根据项目的规模及业务特点采用合适的数据库。
大型项目可采用Oracle数据库。
中小型项目可采用MySQL数据库。
五、JSP程序开发模式
1、单纯的JSP页面编程
通过应用JSP中的脚本标志,可直接在JSP页面中实现各种功能。
但是这种方式将大部分的Java代码与HTML代码混淆在一起,会给程序的维护和调试带来很多的困难。就好比将负责不同任务的所有员工都安排在一起工作,势必混乱不堪。
2、JSP + JavaBean编程
该模式是JSP程序开发经典设计模式之一,适合小型或中型网站开发。
JavaBean是一个遵循了一定规则的Java类,在程序的开发中,将要进行的业务逻辑封装到这个类中,在JSP页面中通过动作标签来调用这个类,从而执行这个业务逻辑。
此时的JSP除了负责部分流程的控制外,大部分用来进行页面的显示。JavaBean则负责业务逻辑的处理。
第一步:用户通过客户端浏览器请求服务器。
第二步:服务器接收用户请求后调用JSP页面;
第三步:在JSP页面中调用JavaBean。
第四步:在JavaBean中连接及操作数据库,或实现其他业务逻辑。
第五步:JavaBean将执行的结果返回JSP页面。
第六步:服务器读取JSP页面中的内容,将JSP中的静态内容和动态内容相结合。
最后服务器将最终的结果返回给客户端浏览器进行显示。
*请认真填写需求信息,我们会在24小时内与您取得联系。