XSS 攻击与防御

XSS(Cross Site Scripting)

XSS,全称Cross Site Scripting,即跨站脚本攻击,也是一种注入攻击,是指攻击者在页面注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在浏览器上运行。根据恶意代码是否存储在服务器中,XSS可以分为存储型的XSS与反射型的XSS。还有一种特殊的基于DOM的XSS(DOM Based XSS)

1、反射型XSS

又称为非持久性跨站点脚本攻击。攻击者是通过URL控制了页面的输出。攻击者构造一个包含XSS代码的URL,诱导用户去点击恶意链接,被植入的攻击脚本被用户游览器执行,达到劫持访问、获取cookies等的攻击目的。

假设后端代码为:

XSS攻击对应链接为:

http://xi.baidu.com?username=

2、存储型XSS

又称为持久型跨站点脚本,可以将脚本代码通过发布内容(如发论坛、博文、写留言等)的方式发布后,存储在数据库中,成为某个url正常的页面的一部分,当一个页面被用户打开的时候执行。持久型XSS更具有隐蔽性,带来的危害也更大。

3、DOM Based XSS

意味着出现在DOM(文档对象模型)中的跨站点脚本漏洞,而不是HTML的一部分,是一种利用前端代码漏洞进行攻击的攻击方式。DOM Based XSS既有可能是反射型的,也有可能是存储型的。在反射和存储的跨站点脚本攻击中,可以在响应页面中看到漏洞Payload,但在基于DOM的跨站点脚本中,HTML源代码和攻击响应将完全相同,即无法在响应。它只能在运行时或通过调查页面的DOM来观察。

常见XSS攻击方式如下:

1、普通的XSS JavaSript注入:

 IMG标签XSS使用JavaScript命令:

IMG标签无分号无引号:


IMG标签大小写不敏感:

HTML编码(必须有分号):

修正缺陷IMG标签:

">

formCharCode标签(计算器):

十六进制编码:

嵌入式标签,将JavaScript分开:


嵌入式编码标签,将JavaScript分开:

嵌入式换行符:


嵌入式回车:

嵌入式多行注入JavaScript,这是XSS极端的例子:

解决限制字符(要求同页面):










Spaces和meta前的IMG标签:

双开括号:

<

无结束脚本标记(仅火狐浏览器):

Input Image:

BODY Image:

BODY标签:

远程样式表:

META链接url:

使用BASE标签:

URL绕行:

XSS

URL编码:

XSS

常见的XSS攻击载荷:




">

">123

">

123

">

123

XSS特殊攻击方式:

利用js特性进行特殊编码变形绕过防御手段:

1、Jsfuck

Jsfuck可以针对常见的js函数、语法进行编码进行编码转换。http://www.jsfuck.com/

2、Aaencode

js加密工具aaencode把js转为文字表情符。http://utf-8.jp/public/aaencode.html

另外市场上面有大量的XSS平台,自动生成js攻击载荷,大大减少了攻击难度。

简单的测试方法:

所有提交数据的地方都有可能存在XSS,可以用最简单脚本进行测试:

XSS攻击防御

从输入到输出都需要过滤、验证、转义。

输入:

客户端请求参数:包括用户输入,url参数、post参数。

1、对

你可能感兴趣的:(Web安全,xss)