ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] ## 一、 xss基础和分类 ### 1 XSS的危害: 攻击者可以使用户在**浏览器中**执行其预定义的**恶意脚本**,其导致的危害**可想而知**,如劫持用户会话,插入**恶意内容**、重定向用户、使用恶意软件劫持用户浏览器、繁殖XSS蠕虫,甚至破坏网站、修改路由器配置信息等。 >XSS 存在的**根本原因**是,对URL中的参数,对用户输入提交给 webserve r的内容,**没有**进行充分的**过滤**。如果我们能够在 web 程序中,对用户提交的URL中的参数,和提交的所有内容,进行**充分的过滤**,将所有的不合法的参数和输入内容过滤掉,那么就**不会导致**“在用户的浏览器中执行**攻击者**自己定制的**脚本**”。 但是,其实**充分而完全的过滤**,实际上是**无法实现**的。因为攻击者有各种各样的神奇的,你完全想象不到的方式来**绕过服务器**端的过滤,最典型的就是对URL和参数进行各种的编码,比如escape,encodeURI, encodeURIComponent, 16进制,10进制,8进制,来**绕过XSS过滤**。 ### 2 XSS的原理: HTML是一种超文本标记语言,通过将一些字符特殊地对待来区别文本和标记,例如,小于符号(<)被看作是HTML标签的开始,之间的字符是页面的标题等等。当动态页面中插入的内容含有这些特殊字符(如<)时,用户浏览器会将其误认为是插入了HTML标签,当这些HTML标签引入了一段JavaScript脚本时,这些脚本程序就将会在用户浏览器中执行。**所以**,**当这些特殊字符不能被动态页面检查或检查出现失误时,就将会产生XSS漏洞。** 总结后为三点。 > **①攻击者对含有漏洞的服务器发起XSS攻击(注入JS代码)。** > **②诱使受害者打开受到攻击的服务器URL。** > **③受害者在Web浏览器中打开URL,恶意脚本执行。** ### 2 xss分类 1. 反射型(非持久):最普遍的类型。用户访问服务器-跨站链接-返回跨站代码。 就是利用get请求,往网页的url中加入特定的参数,欺骗用户执行这个url,后端服务器接收到恶意参数后,给前端用户反应恶意数据 2. 存储型(持久型):最直接的危害类型,跨站代码存储在服务器(数据库) 通过使用网页的提交功能(如留言板),将代码写入到后端文件或数据库中。 别的用户访问页面时,服务器返回的数据中就包含这些恶意代码 3. DOM型:客户端脚本处理逻辑导致的安全问题。 类似反射型,也是构造恶意url参数,但由浏览器直接执行js,可以脱离后端服务器 ## 二、XSS的攻击方式: ### 1、常用的XSS攻击手段和目的有: > **①**盗用cookie,获取敏感信息。 > **②**利用植入 Flash,通过 crossdomain 权限设置进一步获取更高权限;或者利用 Java 等得到类似的操作。 > **③**利用 iframe、frame、XMLHttpRequest 或 Flash 等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作。 > **④**利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。 > **⑤**在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DDoS攻击的效果。 > **⑥**xss钓鱼网站,利用JavaScript脚本直接放用户跳转到钓鱼网站 > **⑦**xss获取键盘记录,xss可以实现键盘操作,但是有局限性,不能跨域。 ### 2、XSS之存储型 **存储型 XSS 的攻击步骤:** > **①**攻击者将恶意代码提交到目标网站的数据库中。 > **②**用户打开目标网站时,网站服务端将恶意代码从数据库取出,拼接在 HTML 中返回给浏览器。 > **③**用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行。 存储型 XSS攻击常见于带有用户保存数据的网站功能,如论坛发帖、商品评论、用户私信等。 储存型XSS会把用户输入的数据“储存”在服务器端。这种XSS具有很强的稳定性。持久的XSS危害性大,容易造成蠕虫,因为每当用户打开页面,查看内容时脚本将自动执行。持久型XSS最大的危害在于可能在一个系统中的用户间互相感染,以致整个系统的用户沦陷。能够造成这种危害的脚本我们称之为XSS蠕虫。 ### 3、XSS之反射型 **反射型 XSS 的攻击步骤:** > **①**攻击者构造出包含恶意代码的 URL,通过各种办法发送给终端用户(**钓鱼**)。 > **②**用户打开带有恶意代码的 URL 时,网站服务端将恶意代码从 URL 中取出,拼接在 HTML 中返回给浏览器。 > **③**用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行。 反射型 XSS漏洞常见于通过 URL 传递参数的功能,如网站搜索、跳转等。 反射型XSS只是简单的把用户输入的数据“反射”给浏览器,也就是说需要诱使用户“点击”一个恶意链接,才能攻击成功。漏洞产生的原因是攻击者注入的数据反映在响应中。非持久型XSS攻击要求用户访问一个被攻击者篡改后的链接,用户访问该链接时,被植入的攻击脚本被用户游览器执行,从而达到攻击目的。 ### 4、XSS之DOM型 **DOM 型 XSS 的攻击步骤:** > **①**攻击者构造出特殊的 URL,其中包含恶意代码。 > **②**用户打开带有恶意代码的 URL。 > **③**用户浏览器接收到响应后解析执行,前端 JavaScript 取出 URL 中的恶意代码并执行。 DOM 型 XSS 跟前两种 XSS 的区别:DOM 型 XSS 攻击中,取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞,而其他两种 XSS 都属于服务端的安全漏洞。 DOM通常代表在html、xhtml和xml中的对象,使用DOM可以允许程序和脚本动态的访问和更新文档的内容、结构和样式。它不需要服务器解析响应的直接参与,触发XSS靠的是浏览器端的DOM解析,所以防范DOM型XSS完全就是前端的责任,必须注意!!!。