XSS攻击-原理学习

1、百度百科
XSS,跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。因此,通常将跨站脚本攻击缩写为XSS。
XSS攻击,通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。
这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。
攻击成功后,攻击者可能得到包括但不限于更
高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。
参考:百度百科


2、攻击条件
1)向web页面注入恶意代码;
2)这些恶意代码能够被浏览器成功的执行


3、XSS攻击类型
1)反射型XSS(非持久型跨站):反射型跨站脚本漏洞,最普遍的类型。用户访问服务器-跨站链接-返回跨站代码。
这类通常使用URL,具体流程:
①攻击者构造出特殊的 URL,其中包含恶意代码。
②用户打开带有恶意代码的 URL 时,网站服务端将恶意代码从 URL 中取出,拼接在 HTML 中返回给浏览器。
③恶意页面中的JavaScript打开一个具有漏洞的HTML页面并将其安装在用户电脑上。
④用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行。
⑤恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。
反射型 XSS 跟存储型 XSS 的区别是:存储型 XSS 的恶意代码存在数据库里,反射型 XSS 的恶意代码存在 URL 里。
反射型 XSS 漏洞常见于通过 URL 传递参数的功能,如网站搜索、跳转等。
由于需要用户主动打开恶意的 URL 才能生效,攻击者往往会结合多种手段诱导用户点击。
POST 的内容也可以触发反射型 XSS,只不过其触发条件比较苛刻(需要构造表单提交页面,并引导用户点击),所以非常少见。
示例:
http://xxx/xsstest?key=<script>alert("XSS")</script>
http://xxx/xsstest?key=<img src='w.123' onerror='alert("XSS")'>
http://xxx/xsstest?key=<a onclick='alert("XSS")'>点我</a>
2)存储型XSS(持久型跨站):最直接的危害类型,跨站代码存储在服务器(数据库)
攻击流程:
①攻击者构造出特殊的 URL,其中包含恶意代码。
②用户打开带有恶意代码的 URL。
③用户浏览器接收到响应后解析执行,前端 JavaScript 取出 URL 中的恶意代码并执行。
④恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。
DOM 型 XSS 跟前两种 XSS 的区别:DOM 型 XSS 攻击中,取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞,而其他两种 XSS 都属于服务端的安全漏洞。
示例:
①窃取用户信息,如cookie,token,账号密码等。
<script>alert("xss")</script>
②生成一些恶意图片,文字,用户点击图片或文字,跳转至相应目标网站
<img onclick="window.location.href='http://xxx.com'" width='300' src='img/testxss.jpg'/>
③劫持流量实现恶意跳转
<script>window.location.href="http://xxx.com";</script>
3)DOM跨站(DOM XSS):DOM(document object model文档对象模型),客户端脚本处理逻辑导致的安全问题。
攻击流程:
①攻击者构造出特殊的 URL,其中包含恶意代码。
②用户打开带有恶意代码的 URL。
③用户浏览器接收到响应后解析执行,前端 JavaScript 取出 URL 中的恶意代码并执行。
④恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。
DOM 型 XSS 跟前两种 XSS 的区别:DOM 型 XSS 攻击中,取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞,而其他两种 XSS 都属于服务端的安全漏洞。
参考:
网络攻击-XSS攻击详解
web安全之XSS攻击
前端安全系列(一):如何防止XSS攻击?


4、漏洞总结
①在 HTML 中内嵌的文本中,恶意内容以 script 标签形成注入。
②在内联的 JavaScript 中,拼接的数据突破了原本的限制(字符串,变量,方法名等)。
③在标签属性中,恶意内容包含引号,从而突破属性值的限制,注入其他属性或者标签。
④在标签的 href、src 等属性中,包含 javascript: 等可执行代码。
⑤在 onload、onerror、onclick 等事件中,注入不受控制代码。
⑥在 style 属性和标签中,包含类似 background-image:url("javascript:…"); 的代码(新版本浏览器已经可以防范)。
⑦在 style 属性和标签中,包含类似 expression(…) 的 CSS 表达式代码(新版本浏览器已经可以防范)。
5、防御规则
1)不要在允许位置插入不可信数据
2)在向HTML元素内容插入不可信数据前对HTML解码
3)在向HTML常见属性插入不可信数据前进行属性解码
4)在向HTML JavaScript DATA Values插入不可信数据前,进行JavaScript解码
5)在向HTML样式属性插入不可信数据前,进行CSS解码
6)在向HTML URL属性插入不可信数据前,进行URL解码


5、防御攻击方法
①验证所有输入数据,有效监测攻击;
②对所有输出数据进行适当编码,防止任何已成功注入的脚本在浏览器端运行;
③输入长度做限制(对于不受信任的输入,都应该限定一个合理的长度。虽然无法完全防止 XSS 发生,但可以增加 XSS 攻击的难度);
④禁止加载外域代码,防止复杂的攻击逻辑;
⑤禁止外域提交,网站被攻击后,用户的数据不会泄露到外域;
⑥禁止内联脚本执行(规则较严格,目前发现 GitHub 使用);
⑦禁止未授权的脚本执行(新特性,Google Map 移动版在使用);
⑧合理使用上报可以及时发现 XSS,利于尽快修复问题;
⑨禁止 JavaScript 读取某些敏感 Cookie,攻击者完成 XSS 注入后也无法窃取此 Cookie。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容