XSS攻击脚本的构造

一、绕过XSS-Filter

用户提交信息时,系统的XSS Filter会对所有的输入进行校验,如果检测到黑名单列表中的数据,便会进行拦截、编码和过滤等处理。

1、利用HTML标签属性值

2、空格、回车、Tab

若XSS Filter仅把敏感的字符列入黑名单处理,则可以利用空格、回车和Tab键拆分输入的字符,来绕过限制。
原因:JavaScript语句通常以分号结尾,如果JavaScript引擎确定一个语句是完整的,而这一行的结尾有换行符,那么就可以省略分号。

3、对标签属性值进行转码

-将输入字符通过ASCII码进行转码,来避免XSS Filter过滤
-HTML属性值支持ASCII编码形式
-示例:t的ASCII值为116,则用“t”表示

4、利用事件

5、利用CSS样式表

-缺点:不同浏览器或者同一浏览器不同版本之间有可能不通用
-可以使用expression执行JavaScript代码
-可以使用@import直接执行JavaScript代码,例如:

<style>
    @import 'javascript:alert("XSS")';
style>

-JavaScript脚本通常嵌入到style标签/属性中
-style属性可以配合任意HTML标签使用

扰乱过滤规则

-大小写转换
-不使用引号,或改用单引号
-在使用CSS中的expression执行XSS脚本时,可以构造不同的全角字符来扰乱过滤规则

<xss STYLE="xss:expression(alert('XSS'))">

-使用注释字符
-样式标签中,\和结束符\0也是被浏览器忽略的

二、利用字符编码

三、输入字符长度有限制时,可以拆分XSS脚本

你可能感兴趣的:(Linux环境部署,测试,安全测试)