指攻击者利用网站程序对用户的输入输出过滤不足,导致恶意代码在页面执行,对受害者造成cookie资料窃取、会话劫持、钓鱼欺骗等危害;
1.网络钓鱼,盗取各类用户的账号,如机器登录帐号、用户网银帐号、各类管理员帐号;
2.窃取用户Cookie,获取用户隐私,或者利用用户身份进一步执行操作
3.劫持用户(浏览器)会话,从而执行任意操作,例如进行非法转账、强制发表日志等
4.强制弹出广告页面,刷流量等
5..进行恶意操作,例如任意篡改页面信息,删除文章等,传播跨站脚本蠕虫,网页挂马等
6.进行基于大量的客户端攻击,如DDOS攻击
7.结合其它漏洞,如CSRF漏洞。
8.进一步渗透网站
9.获取客户端信息,例如用户的浏览历史、真实IP、开放端口、盗窃企业重要的具有商业价值的资料等;
10.控制受害者机器向其他网站发起攻击;
11传播跨站脚本蠕虫等;
xss攻击可以分成两种类型:
1.非持久型攻击
2.持久型攻击
非持久型xss攻击:顾名思义,非持久型xss攻击是一次性的,仅对当次的页面访问产生影响。非持久型xss攻击要求用户访问一个被攻击者篡改后的链接,用户访问该链接时,被植入的攻击脚本被用户游览器执行,从而达到攻击目的。
持久型xss攻击:持久型xss,会把攻击者的数据存储在服务器端,攻击行为将伴随着攻击数据一直存在。
也可以分成三类:
反射型:经过后端,不经过数据库
存储型:经过后端,经过数据库
DOM:不经过后端,DOM—based XSS漏洞是基于文档对象模型Document Objeet Model,DOM)的一种漏洞,
Dom - xss是通过url传入参数去控制触发的。
使用方法:
它通过给别人发送带有恶意脚本代码参数的URL,当URL地址被 打开时,特有的恶意代码参数被HTML解析、执行。
它的特点是非持久化,即不存入数据库。。
缺点:
存储型XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种XSS比较危险,容易造成蠕虫,盗窃cookie;
归属于反射型,DOM型XSS是基于DOM文档对象模型的一种漏洞,所以,受客户端浏览器的脚本代码所影响。
客户端的脚本程序可以通过DOM动态地检査和修改页面内容,它不依赖于服务器端的数据,而从客户端获得DOM中的数据(如从URL中提取数据)并在本地执行。
另一方面,测览器用户可以操纵DOM中的一些对象,例如URL、 location等。用户在客户端输入的数据如果包含了恶意 JavaScript脚本,而这些脚本没有经过适当的过滤和消毒,那么应用程序就可能受到基于DOM的XSS攻击。
伪静态页面是可以产生DOM型XSS的。假设一个名为domXSS1.html的网页,内容如下:
var temp = document.URL;//获取url
var index = document.URL.indexOf("a=")+2;
var par = temp.substring(index);//截取url中a=后所有字符a的内容
document.write(decodeURI(par));//将获取的字符进行url解码
输入http://www.any.com/xss/domXSS1.html?a=test,页面上只输出test。页面如下:
输入domXSS1.html?a=,应该出现弹窗。
数据交互(即输入/输出)的地方最容易产生跨站脚本,因此,我们可以着重对网站的输入框、URL参数处进行·测试。当然,所有来自cookie、post表单、HTTP头的内部都可能会产生xss。
反射型XSS通常出现在网页的URL中,必须用户点击带有特定参数的连接,才能引起。Payload在响应页面中。
存储型和反射型漏洞挖掘,主要步骤先在页面中执行命令,然后在通过查看页面源代码,找到正确的变换姿势,最终触发弹框。
接着分析其中的函数,最终找到出现该漏洞的原因,。即先利用黑盒测试找出跨站脚本漏洞,再利用白盒技术分析一下该漏洞的原因。
反射型常用测试方法:
一般是存在于URL中,也可对整个输入(特别强调的是,整个HTTP请求都是输入,数据库取来的数据其实也是输入。HTTP请求包括GET、POST参数,COOKIE,URL,头部的REFERER等等(但这些参数的数值必须在返回页面中出现))中每个地方都可以如下操作,
1. 自己构造一个唯一的串,例如:myxsstestxxxx
2. 将某个输入项(比如某个参数)替换为上面的串
3. 查看HTTP相应中是否有这个串,并记录下来
4. 根据HTML上下文决定,用哪种类型串来尝试,尝试攻击串,然后重新提交请求
5. 如果能够找到相应的攻击串说明漏洞是存在的 这里的关键在于第四步,因为服务器端可能会做一些限制,比如encode或者长度限制,测试的时候需要想办法看看是否能绕过限制。
发掘基于DOM的跨站脚本漏洞,主要关注两方面:脏数据的输入和脏数据的输出。
脏数据的输入
着重检查用户的输入源,eg:可能触发DOM XSS的属性,
比如:
windows.name属性
document.referer属性
location 属性
from:
document.write(decodeURI(document.referrer));//url解码上一次网址
页面的访问网址应带有?XSSXSSXSSXSS第一次访问页面的结果是页面中还有一个Demo超级链接,该链接指向页面本身。点击该链接,此时浏览器弹出一个对话框。
转换HTML标签
• 直接嵌入html:
• 元素标签事件
• 图片标签
• 其他标签