写在前面 虽然今天是周末,但职位每日推荐不可少,万一有努力找工作的小伙伴因为我一天偷懒导致没找到满意工作那就是我的罪过了,今日职位已放置在文章末尾,请注意查看! 引言 XSS 是目前最普遍的 Web 应用安全漏洞,它带来的危害是巨大的,是 Web 安全的头号大敌。 关键词: 跨站 脚本(JavaScript、Java、 VBScript、ActiveX、 Flash 或者 HTML) 注入 执行 1. 什么是 XSS 漏洞? XSS 攻击:跨站脚本攻击(Cross Site Scripting),为不和 前端层叠样式表(Cascading Style Sheets)CSS 混淆,故将跨站脚本攻击缩写为 XSS。 XSS(跨站脚本攻击)是指恶意攻击者往 Web 页面里插入恶意 Script 代码,当用户浏览该页时,嵌入其中 Web 里面的 Script 代码会被执行,从而达到恶意攻击用户的目的。类似于 sql 注入。是目前最普遍的 Web 应用安全漏洞,也是 Web 攻击中最常见的攻击方式之一。 XSS( 跨站脚本攻击)攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是 JavaScript,但实际上也可以包括 Java、 VBScript、ActiveX、 Flash 或者甚至是普通的 HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和 cookie 等各种内容。 2. XSS 漏洞攻击原理及攻击手段 HTML 是一种超文本标记语言,通过将一些字符特殊地对待来区别文本和标记,例如,小于符号(<)被看作是 HTML 标签的开始,之间的字符是页面的标题等等。 当动态页面中插入的内容含有这些特殊字符(如<)时,用户浏览器会将其误认为是插入了 HTML 标签,当这些 HTML 标签引入了一段 JavaScript 脚本时,这些脚本程序就将会在用户浏览器中执行。所以,当这些特殊字符不能被动态页面检查或检查出现失误时,就将会产生 XSS 漏洞。 常用的 XSS 攻击手段和目的有: 1、盗用 cookie,获取敏感信息。 2、利用植入 Flash,通过 crossdomain 权限设置进一步获取更高权限;或者利用 Java 等得到类似的操作。 3、利用 iframe、frame、XMLHttpRequest 或上述 Flash 等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作。 4、利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。 5、在访问量极大的一些页面上的 XSS 可以攻击一些小型网站,实现 DDoS 攻击的效果。 最简单的 XSS 示例: 3. XSS 分类如下: 分类 主要特点 存储型 XSS 经过后端服务处理,数据存储在数据库端 反射型 XSS 经过后端服务处理,不存储数据库 DOM型 XSS 不经过后端服务处理,不存储数据库 4. XSS 漏洞分析 4.1 存储型 XSS 通过网页注入的代码最终会存储在数据库或其他物理文件中,在某个页面中注入的代码会被浏览器成功执行,该类型的漏洞存在持久性的特点。 主要特点: 存储 持久性 图解成因分析: 4.2 反射型 XSS 一般是通过 url 的形式注入代码,注入的代码不在服务器端存储,但会在服务器端进行处理然后进行回显,在回显时浏览器会触发漏洞执行注入代码,该类型攻击具有临时性特点。 主要特点: 回显 临时性 图解成因分析 4.3 DOM 型 XSS 也是通过 url 的形式注入代码,注入的代码服务器端程序不存储、不处理,而是由浏览器进行处理,该类型攻击也具有临时性特点。主要特点: 不存储、不处理 浏览器 临时性 图解成因分析 5. 三种XSS漏洞对比 分类 一般表现形式 特点 存储型 XSS 表现为包含表单的页面,post提交后数据存储在数据库,通过其他页面访问触发 存储、持久性 反射型XSS 表现为包含参数的url地址,参数经后端程序程序处理后回显,通过访问 url 触发 url参数、后端处理参数、临时性 DOM型XSS 表现为包含参数的url地址,参数由页面中的JS代码处理,通过访问 url 触发 url参数、JS处理参数、临时性 6. 植入 JS 代码攻击及危害分析 外在表现形式: 直接注入 JavaScript 代码 引用外部 JS 文件 基本实现原理: 通过 img 标签的 src 发送数据 构造表单诱导用户输入账密 构造隐藏的 form 表单自动提交 页面强制跳转 植入文字链接、图片链接 潜在危害: 获取管理员或者其他用户 Cookie,冒充用户身份登录 构造表单诱导用户输入账号、密码,获取账密 跳转到其他网站,网站流量被窃取 植入广告、外链等 通过隐藏友链提升其他网站百度权重(SEO 黑帽) 7. 植入 HTML 代码攻击及危害分析 外在表现形式: 构造 img 标签 构造 a 标签 构造 iframe 构造其他 HTML 标签 基本实现原理: 通过 img 标签的 src 发送数据 通过 img 的 onerror 触发脚本代码 通过 a 标签被动触发脚本代码 href/onclick 通过 iframe 引入第三方页面 直接构造文字链接或图片链接 style 属性嵌入脚本代码 background-image:url("javascript:…");(浏览器已可防范) 潜在危害: 获取管理员或者其他用户 Cookie,冒充用户身份登录 构造表单诱导用户输入账号、密码,获取账密 植入广告、外链等 通过隐藏友链提升其他网站百度权重(SEO 黑帽) 8. XSS 简单预防策略 8.1 对 html 标签进行字符替换: replaceAll("