毛病介绍
XSS 攻击全称跨站脚本攻击,是为反面层叠样式表(Cascading Style Sheets, CSS) 的缩写混淆,故将跨站脚本攻击缩写为 XSS,XSS 是一种在 web 应用中的计算机安全毛病,它允许恶意 web 用户将代码植入到 web 网站里面,供给其它用户访问,当用户访问到有恶意代码的网页就会产生 XSS 攻击。
攻击危害
XSS 攻击的危害主要有:
- 盗取各类用户帐号,如呆板登录帐号、用户网银帐号、各类管理员帐号
- 控制企业数据,包罗读取、篡改、添加、删除企业敏感数据的能力
- 盗窃企业重要的具有商业价值的资料
- 强制发送电子邮件
- 非法转账
- 网站挂马
- 控制受害者呆板向其它网站发起攻击
防御方法
XSS 防御的总体思路是:对输入(和 URL 参数)举行过滤,对输出举行编码。也就是对提交的所有内容举行过滤,对 url 中的参数举行过滤,过滤掉会导致脚本实行的相关内容,然后对动态输出到页面的内容举行 html 编码,使脚本无法在欣赏器中实行。
1、反射型 XSS
反射型 XSS,非长期化,必要诱骗用户本身去点击链接才能触发 XSS 代码。
反射型 xss 攻击的方法,攻击者通过发送邮件或诱导等方法,将包含有 xss 恶意链接发送给目标用户,当目标用户访问该链接时,服务器将接收该用户的哀求并举行处理,然后服务器把带有 xss 恶意脚本发送给目标用户的欣赏器,欣赏器剖析这段带有 xss 代码的恶意脚本后,就会触发 xss 攻击。
代码分析
起首判断 $_GET['mssage'] 是否等于 kobe,假如不是则将 $_GET['mssage'] 复制给$html 变量中,而且没有任何过滤并输出到页面中,所以直接输入 页面会直接输出 xss 信息,造成 xss 攻击
2、存储型 XSS
存储型 XSS,长期化,恶意代码存储在服务器中的数据库里。
存储型 xss 攻击的方法,在个人信息或发表文章等地方,可以插入代码,假如插入的数据没有过滤或过滤不严,那么这些恶意代码就能直接储存到数据库中,用户访问该页面的时候,没有举行编码过滤直接输出到欣赏器上,就会触发代码实行,造成 xss 攻击。
代码分析
在存储型 xss 代码中,看到留言的 inster into 语句中,直接插入留言信息,没有任何过滤,输入恶意代码,这个代码将存储在数据库中
进入数据库实行查询命令
欣赏器在访问该页面的时候,恶意代码会从数据库字段里取出这条记载,没有经过任何处理就直接输出
3、DOM型 XSS
DOM,全称 Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本可以或许动态访问和更新文档的内容、布局以及样式。
DOM 型 XSS 其实是一种特殊范例的反射型 XSS,它是基于 DOM 文档对象模型的一种毛病。
在网站中有很多页面的元素,当页面到达时,欣赏器会为页面创建一个顶级的 Document object 文档对象,接着天生各个子文档对象,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件。可以通过 JS 脚本对文档对象举行编辑从而修改页面的元素,即客户端的脚本程序可以通过 DOM 来动态修改页面内容,从客户端获取 DOM 中的数据并在本地实行。基于这个特性,就可以使用 JS 脚本来实现 XSS 毛病的使用。
以下是一些经常出现 dom 型 xss 的关键语句
document.referer 属性
window.name 属性
location 属性
innerHTML 属性
documen.write 属性
代码分析
DOM 型 xss 程序中,只有 html 代码,dom 通过操纵 HTML 或者 css 实现 HTML 属性、方法、事件,因此程序中没有与服务器举行交互
点击按钮时,会调用 domxss()函数,跟踪 domxss 函数- 1 function domxss(){
- 2 var str = document.getElementById("text").value;
- 3 document.getElementById("dom").innerHTML = "<a target="_blank" href='https://www.cnblogs.com/"+str+"'>what do you see?</a>";
- 4 }
复制代码 获取 id text 文本的值,修改 id 为 dom 的 html 值,输入 ' > 闭合前面的单引号即可
4、XSS 测试语句
在网站输入一些标签如< >输入后检察网页源代码是否举行过滤,假如没过滤则很大大概存在 xss 毛病。
常用的测试语句
1
1
举行闭合
">xx
(9)7 位的 UTF-8 的 Unicode 编码是没有分号的(计算器)

(53)STYLE background
(54)BASE
(55)EMBED 标签,你可以嵌入 FLASH ,其中包涵 XSS
(56)在 flash 中使用 ActionScrpt 可以混进你 XSS 的代码
a="get";
b="URL(\"";
c="javascript:";
d="alert('XSS');\")";
eval_r(a+b+c+d);
(57)XML namespace.HTC 文件必须和你的 XSS 载体在一台服务器上 |