我们友情进行XSS检查,偶然跳出个小弹窗,其中我们总结了一些平时可能用到的XSS插入方式,方便我们以后进行快速检查,也提供了一定的思路,其中XSS有反射、存储、DOM这三类,至于具体每个类别的异同之处,本文不做学术介绍,直接介绍实际的插入方式。
四种超级基础的绕过方法。
1.转换为ASCII码
例子:原脚本为
2.转换为HEX(十六进制)
例子:原脚本为
通过转换,变成:
%3c%73%63%72%69%70%74%3e%61%6c%65%72%74%28%2018%49%20%6c%6f%76%65%20%46%34%63%6b%2019%29%3c%2f%73%63%72%69%70%74%3e
3.转换脚本的大小写
例子:原脚本为
转换为:
4.增加闭合标记”>
例子:原脚本为
转换为:”>
更详细绕过技术请参考此网页
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
转换工具使用的是火狐的 hackbar mozilla addon.
绕过进行一次移除操作:
我们可以像如下这样在米素中定义 JavaScript 事件:
这个 JavaScript 代码当有人点击它后就会被执行,同时还有其他事件如页面加载或移动鼠标都可以触发这些事件。绝大部分的时间都被过滤器所移除了,但是依旧还有少量事件没有被过滤,例如,onmouseenter 事件:当用户鼠标移动到 div 上时就会触发我们的代码。
另一个绕过的办法就是在属性和= 之间插入一个空格:
我们同样可以在行内样式里利用 IE 浏览器支持的动态特性:
过滤器会检查关键字 style,随后跟随的不能是 <,在随后是 expression:
/style=[^<]*((expression\s*?\([^<]*?\))|(behavior\s*:))[^<]*(?=\>)/Uis
所以,让我们需要把< 放到其他地方:
IE 浏览器支持在 CSS 中扩展 JavaScript,这种技术称为动态特性(dynamic properties)。允许攻击者加载一个外部 CSS 样式表是相当危险的,因为攻击者现在可以在原始页面中执行 JavaScript 代码了。