跨站脚本漏洞,即XSS发生在当应用程序发送给浏览器的页面中包含用户提供的数据,而这些数据没有经过适当的验证或转义(Escape)或没有使用安全的JavaScript API。
1、定义
跨站脚本攻击(Cross Site Scripting),缩写为XSS(为了避免与样式CSS混淆,缩写为XSS),恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的
2、原理
攻击者利用客户端给网站提交的数据中插入恶意的Javascript代码,并且这些恶意的Javascript代码将会成为应用代码中的一部分了,那么攻击者就可以进行开攻击啦,主要原因是网站对客户端输入的数据过于信任造成的。
攻击者对含有漏洞的服务器可以发起XSS攻击(注入JS代码),诱使受害者打开受到攻击的服务器URL,受害者在Web浏览器中打开URL,恶意脚本执行
3、危害
3.1、获得各类帐号,如系统登录帐号、QQ微信登录账号、支付帐号、管理员帐号等
3.2、能够对公司或企业的敏感隐私数据进行增、删、改、查、读等操作
3.3、盗窃重要的具有商业价值的资料
3.4、非法转账
3.5、强制发送含有木马或恶意的电子邮件
3.6、网站挂马
3.7、控制受害者电脑,使其成为靶机,并向其它网站发起攻击
4、修复
4.1、将重要的cookie标记为http only, 则JavaScript中的document.cookie语句就不能获取到cookie了
4.2、表单数据规定值的类型,例如:年龄应为只能为int、name只能为字母数字组合等
4.3、对输入的数据进行Html Encode 处理
4.4、过滤或移除特殊的Html标签, 例如: <script>、<iframe>、< for <、> for >、" for
4.5、过滤JavaScript事件的标签。例如 "οnclick="、"onfocus" 等
5、测试脚本
5.1、最简单的脚本:<script>alert(/xss/)</script>
5.2、双写绕过:<sc<script>ript>alert(/xss/)</script>
5.3、大小写混淆绕过:<Script>Alert(/xss/)</sCript>
5.4、img、body等标签绕过:<img src=1 οnerrοr=alert(/xss/)>
5.5、iframe绕过:<iframe src=1 οnmοuseοver=alert(/xss/) y=2018 /><iframe>
5.6、盗取Cookie:<script>alert(documen.cookie)</script>