一、分类:
(1)反射型
URL中的参数可以插入javascript,用户访问时反射如
http://mdsec.net/erro/5/Error.ashx?message=
(2)存储型
也叫二阶XSS,即注入后,只需等等正常用户访问被注入的常规页面即可。
(3)DOM型
更类似于反射型XSS,但是在利用方面还是有区别。
二、XSS攻击的有效载荷
(1)虚拟置换
在站点中注入HTML标记,或者使用脚本在站点中注入精心设计的内容和导航,实际上并没有修改目标WEb服务器的内容
(2)注入木马
在应用程序中注入实际运行的功能。旨在欺骗终端用户执行某种有害操作,随后将它们传送给攻击者。
(3)诱使用户执行操作
(4)利用信任关系
截获以前输入的、浏览器保存在自动完成缓存中的数据;或者一些WEB应用要求加入 浏览器的”可信站点“
三、XSS攻击的传送机制
1、 传送反射型与DOM型
(1)向目标发送伪造的电子邮件,里面有URL
(2)即时消息中向目标提供一个URL
(3)第三方站点生成触发XSS的请求
(4)横幅广告
(5)推荐或反馈功能
2、传送存储型XSS
带内传送:
(1)个人信息字段
(2)文档、上传文件和其他数据的名称
(3)提交给管理员的反馈或问题
(4)向其他 应用程序用户的消息、注释、问题
(5)记录在应用程序日志中,并通过浏览器显示给管理员的任何内容
(6)用户之间共享的上传文件内容
带外传送:
通过其他渠道向应用程序提交漏洞数据的情况。
3、与其他攻击结合
四、查找并利用XSS漏洞
如果过滤了 ——scrpit后加空格
"> ——大小写
"%3e%3cscript>alert(document.cookie)%3c/script%3e ——URL编码
">
%00">"> ——先添加截断字符
1、查找并利用反射型XSS漏洞
(1)确认用户输入的反射
a. 选择任意一个字符串,该 字符串不曾出现在应用程序的任何地方,而其中仅包含字母字符,提交给每一个参数
b. 记下参数值被复制到应用程序响应中的每一个参数
c. 测试所有GET与POST请求
d. 一旦在POST请求中发现XSS,在Burp中更改请求方法为GET请求实施相同的攻击
e. 检测HTTP消息 头内容被应用程序处理的每一种情况,有一种XSS漏洞出现 在错误消息中,Referer与User-Agent消息 头之类的数据项被复制到消息的内容中,可以在消息头中注入XSS以让应用程序在错误消息中解析
(2)测试引入脚本的反射
a. 标签属性值:
举例:
攻击:"> ——闭合标签并添加script
" onfocus="alert(1) ——包含JS事件处理器
b. JS字符串:
举例:
攻击: '; alert(1); var foo=' ——直接在script脚本中闭合与注入
// ——结束输入,将剩下的脚本当做注释处理
c. 包含URL的特性:
举例: Click here ...
攻击: javascript:alert(1);
#"onclick="javascript:alert(1)
PS: 对请求中的任何特殊字符进行URL编码。
(3)探查防御性过滤
主要有3种可能的过滤情况:
a. 应用程序或WAF发现一个攻击签名,完全阻止了输入
b. 应用程序接受了输入,但对攻击字符串进行了某种净化或编码
c. 应用程序把攻击字符串截短至某个固定的最大长度
针对以上三种分别阐述
(4)避开基于签名的过滤
脚本标签: