XSS简介XSS是跨站脚本(CrossSiteScripting)的缩写,但从首字母的命名方式来看,应该命名为CSS,但这与Cascading不一样样式表(CascadingStyleSheets)。StyleSheets,CSS)改名了,所以取名为XSS。XSS攻击一般是指攻击者在网页中注入恶意脚本,当用户浏览网页时,执行恶意脚本来控制用户浏览器行为的一种攻击方式。XSS危害窃取用户cookie,获取用户隐私,窃取用户账号。劫持用户(浏览器)会话进行任意操作,如非法转账、强制登录、发送邮件等强制弹出广告页面、刷流量等传播跨站脚本蠕虫、网页木马等.结合其他漏洞,如CSRF漏洞,进行进一步的攻击。......XSS分类XSS攻击根据攻击数据是否存储在服务器中以及攻击行为是否伴随攻击数据,可以分为非持久性XSS攻击和持久性XSS攻击。XSS攻击按攻击方式可分为反射型XSS、DOM型XSS和存储型XSS。反射型XSS和DOMXSS被认为是非持久性XSS攻击,存储型XSS被认为是持久性XSS攻击。反射型XSS(ReflectedXSS)攻击者诱导用户访问带有恶意代码的URL后,服务器接收到数据并进行处理,然后将带有恶意代码的数据发送给浏览器,浏览器解析包含恶意代码的URL.然后将XSS代码的数据作为脚本执行,最终完成XSS攻击。因为这个过程很像反射,所以称为反射型XSS。攻击步骤:1.攻击构造一个特殊的URL,其中包含恶意代码。2、诱导用户打开带有恶意代码的URL,服务器端将URL中的恶意代码作为参数取出,然后将带有恶意代码的数据返回给用户。3.用户浏览器收到响应,解析并执行,其中混入的恶意代码也被执行。4、恶意代码窃取用户敏感数据发送给攻击者,或冒充用户,调用目标网站的接口执行攻击者指定的操作。例如下面是一个正常的搜索流程1.打开首页,输入搜索内容https://www.kkkk1000.com/xss/Reflected/index.html2.开始搜索,查看结果https://www.kkkk1000.com/xss/Reflected/searchResult.html?kw=斗罗大陆但是如果没有搜索结果,后台也会返回用户输入的内容,然后显示在页面上。https://www.kkkk1000.com/xss/Reflected/searchResult.html?kw=xxx因为没有对用户输入的数据进行处理,所以我们构建了这样一个链接:https://www.kkkk1000.com/xss/Reflected/searchResult.html?kw=并诱导他人点击此链接完成反射型XSS攻击。对于这么长的链接,我们也可以将其伪装成短网址或者二维码。短网址:http://i6q.cn/4TJcII二维码:可能你觉得只是一个弹框,问题不大,但是如果我们把攻击代码改成加载第三方js文件呢?使用document.cookie窃取cookie的代码呢?总之,如果是真正的攻击,就不会只是弹框那么简单了。基于DOM的XSS(DOM-basedXSS)DOM-basedXSS的产生原因是修改页面的DOM节点形成的XSS。在DOM型XSS攻击中,恶意代码的去除和执行是由浏览器完成的,这是前端本身的安全漏洞。攻击步骤:1.攻击者构造一个包含恶意代码的特殊URL。2.诱导用户打开带有恶意代码的URL。3、用户浏览器收到响应后,解析并执行,前端JavaScript取出URL中的恶意代码并执行。4.恶意代码窃取用户数据发送到攻击者网站,或冒充用户,调用目标网站的接口执行攻击者指定的操作。比如下面是一个物流详情页面。url中有一个快递单号的参数,通过这个参数获取数据。https://www.kkkk1000.com/xss/dom/index.html?serialNumber=YT40359134268305因为在源码中可以看到,页面显示的快递单号是直接从URL上的参数显示的。于是我们构造了这样一个URL:https://www.kkkk1000.com/xss/dom/index.html?serialNumber=诱导他人点击这个链接完成DOM类型的XSS攻击。存储型XSS(StoredXSS)存储型XSS和反射型XSS的区别在于存储型XSS的恶意代码存在于服务器端,而反射型XSS的恶意代码存在于URL中。在存储型XSS攻击期间,恶意脚本存储在目标服务器上。当浏览器请求数据时,脚本从服务器传回并执行。它是最危险的跨站点脚本类型,比反射型XSS和DOM式XSS都更隐蔽,因为它不需要用户手动触发。任何允许用户存储数据的Web应用程序都可能容易受到存储型XSS攻击。如果一个页面被存储型XSS攻击,所有访问该页面的用户都会被XSS攻击。攻击步骤:1.攻击者向目标网站服务器提交恶意代码。2、用户打开目标网站,网站服务器将带有恶意代码的数据取出,作为正常数据返回给用户。3.用户浏览器收到响应,解析并执行,其中混入的恶意代码也被执行。4、恶意代码窃取用户敏感数据发送给攻击者,或冒充用户,调用目标网站的接口执行攻击者指定的操作。比如这是一个可以评论的文章页面https://www.kkkk1000.com/xss/Stored/index.html但是评论的内容还没有处理,那么如果我们输入这样的内容:也可以用作注释。当我们使用此类内容作为评论后,所有打开这篇文章的用户都会受到存储型XSS的攻击。防御方式浏览器自带防御(X-XSS-Protection)HTTPX-XSS-Protection响应头是InternetExplorer、Chrome和Safari的一个功能,当检测到跨站脚本攻击(XSS)时,浏览器会停止加载页面。他可以设置4个值:X-XSS-Protection:0禁止XSS过滤。X-XSS-Protection:1启用XSS过滤(通常浏览器是默认的)。如果检测到跨站点脚本攻击,浏览器将清除页面(删除不安全的部分)。X-XSS-保护:1;mode=block启用XSS过滤。如果检测到攻击,浏览器不会清除页面,而是阻止页面加载。X-XSS-保护:1;report=
