跨站脚本攻击,英文全称是Cross Site Script,本来缩写是CSS,但是为了和层叠样式表(Cascainding style sheet,CSS)有所区别,所以在安全领域叫做“XSS”。
XSS攻击,通常指黑客通过“HTML注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。在一开始,这种攻击的演示安全是跨域的,所以叫做“跨站脚本”。但是发展到今天,由于JavaScript的强大功能以及网站前端应用的复杂化,是否跨域已经不再重要。但是由于历史原因,XSS这个名字却一直保留下来。
假设一个用户把用户输入 的参数直接输出到页面上:
可以尝试将上面的代码在社区进行提交,是提交不上去的。
报错:
原因应该社区针对用户提交的数据做了安全策略。
在正常情况下,用户向param提交的数据会展示到页面中,比如提交:
查看页面源代码:
如果此时提交一段HTML代码:
发现alert(/adds/)在当前页面执行了。
查看源代码:
用户输入的Script脚本,已经被写入页面了。
XSS类型:
1、反射型XSS
反射型XSS只是简单地把用户输入的数据“反射”给浏览器。也就是说,黑客往往需要诱使用户“点击”一个恶意链接,才能攻击成功。反射型XSS也叫做“非持久型XSS”(Non-persistent XSS)。
2、存储型XSS
存储型XSS会把用户输入的数据“存储”在服务器端。这种XSS具有很强的稳定性。 比较常见的场景就是,黑客写下一篇包含有恶意JavaScript代码的博客文章,文章发表后,所有访问该博客文章的用户,都会在他们的浏览器中执行这段恶意的JavaScript代码。黑客把恶意的脚本保存到服务器端,所以这种XSS攻击就叫做“存储型XSS”。 存储型XSS通常也叫做“持久型XSS”(Persistent XSS),因为从效果上来说,它存在的时间是比较长的。
3、DOM Based XSS
这种类型的XSS并非按照“数据是否保存在服务器端”来划分,DOM Based XSS从效果上来说也是反射型XSS。单独划分出来,是因为DOM Based XSS的形成原因比较特殊,发现它的安全专家门专门提出了这种类型的XSS。出于历史原因,也就单独把它作为一个分类。
通过修改页面的DOM节点形成的XSS,称之为DOM Based XSS。
看如下代码:
点击“write”按钮后,会在当前页面插入一个超链接,其地址为文本框的内容:
在这里,“write”按钮的onclick事件调用了test()函数。而在test()函数中,修改了页面的DOM节点,通过innerHTML把一段用户数据当作HTML写入到页面中,这就造成了DOM base XSS。
构造如下数据:
输入后,页面代码就变成了:
首先用一个单引号闭合掉href的第一个单引号,然后插入一个onclick事件,最后再用注释符“//”注释掉第二个单引号。
点击这个新生成的链接,脚本将被执行:
实际上,这里还有另外一种利用方法--除了构造一个新事件外,还可以选择闭合掉<a>标签,并插入一个新的HTML标签。尝试如下输入:
页面代码变成了:
脚本被执行:
更换里面的xss为adds试下:
二、VMware导出报错
1、VMware上的虚拟机想导出为ova文件,但导出时提示导出失败。
2、查看虚拟本配置,原因是关联了光驱。
取消当前的勾选,连接到“使用物理驱动器”。
3、再次导出成功。
三、虚拟机登录异常
1、报错“引用的帐号已锁定,且可能无法登录”。
2、查看VDC是否有锁定用户
3、排查发现是Windows界面不能登录,VDI可以登录。
怀疑是windows禁用了用户。
使用虚拟机之前做的快照进行恢复。