一、漏洞介绍
XSS 攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为 XSS,
XSS 是一种在 web 应用中的计算机安全漏洞,它允许恶意 web 用户将代码植入到 web 网站里面,供给其它用户访问,当用户访问到有恶意代码的网页
就会产生 xss 攻击。
二、攻击危害
1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号
2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
3、盗窃企业重要的具有商业价值的资料
4、非法转账
5、强制发送电子邮件
6、网站挂马
7、控制受害者机器向其它网站发起攻击
三、xss 防御
XSS 防御的总体思路是:对输入(和 URL 参数)进行过滤,对输出进行html编码。
也就是对提交的所有内容进行过滤,对 url 中的参数进行过滤,过滤掉会导致脚本执行的相关内容;然后对动态输出到,页面的内容进行 html 编码,
使脚本无法在浏览器中执行。
四、xss漏洞类型
4.1 反射型
反射型XSS,非持久化,需要欺骗用户自己去点击链接才能触发XSS代码。
反射型xss攻击的方法,攻击者通过发送邮件或诱导等方法,将包含有xss恶意链接发送给目标用户,当目标用户访问该链接时,服务器将接收该用户的请求
并进行处理,然后服务器把带有xss恶意脚本发送给目标用户的浏览器,浏览器解析这段带有xss代码的恶意脚本后,就会触发xss攻击。
payload:"><script>alert('xss')</script>
4.2 代码分析
在反射型xss代码中,首先判断$_GET['mssage']是否等于kobe,如果不是则在页面中将$_GET['mssage']复制给$html变量中,而且没有任何过滤
再输出到页面中,所以直接输入<script>alert('xss');</script>页面会直接输出xss信息,就会造成xss 攻击。
4.3 存储型
存储型XSS,持久化,代码是存储在服务器中的数据库里,如在个人信息或发表文章等地方,可以插入代码,如果插入的数据没有过滤或过滤不严,那么
这些恶意代码没有经过过滤将储存到数据库中,用户访问该页面的时候,没有进行编码过滤输出到浏览器上,就会触发代码执行,造成xss攻击。
4.4 代码分析
在存储型xss代码分析中,看到留言的insert into语句中,直接插入留言信息,没有任何过滤,输入恶意代码,这个代码将记录在数据中。
输入攻击语句,并保存到数据库
浏览器在访问该页面的时,恶意代码会从数据库字段里取出这条记录,没有经过任何处理就直接输出。
4.5 DOM型
DOM,全称DocumentObjectModel,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容、结构以及样式。
DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞。
在网站页面中有许多页面的元素,当页面到达浏览器时浏览器会为页面创建一个顶级的Documentobject文档对象,接着生成各个子文档对象,每个页面元素
对应一个文档对象,每个文档对象包含属性、方法和事件。可以通过JS脚本对文档对象进行编辑从而修改页面的元素。也就是说,客户端的脚本程序可以通过
DOM来动态修改页面内容,从客户端获取DOM中的数据并在本地执行。基于这个特性,就可以利用JS脚本来实现XSS漏洞的利用。
以下是一些经常出现domxss的关键语句document.referer属性
window.name属性
location属性
innerHTML属性
documen.write属性
4.6 代码分析
DOM型xss程序中,只有html代码,dom通过操作HTML或者css实现HTML 属性、方法、事件,因此程序中没有与服务器进行交互。
点击按钮时,会调用domxss()函数,跟踪domxss函数
加载payload:javascript:alert("xss")
|