目录
一、XSS示例
1.1、示例1:
2010年, Apache Foundation被攻击者利用其问题追踪应用程序中的漏洞、通过反射型XSS攻击攻破。
1、攻击者发布一个使用重定向服务进行模糊处理的链接, 该链接指向一个利用上述XSS漏洞获取登录用户的会话令牌的URL。如果管理员单击该链接, 他的会话将被攻破, 攻击者将获得对应用程序的管理访问权限。
2、攻击者修改某个项目的设置,将该项目的上传文件夹更改为应用程序的Web根目录中的可执行目录。
3、攻击者向此文件夹上传一个木马登录表单,从而获取特权用户的用户名和密码。通过这种方法, 攻击者确定一些在基础架构的其他系统中重复使用的密码, 并完全攻破这些系统, 将攻击范围扩展到易受攻击的Web应用程序之外
1.2、示例2:
2005年, 发现社交网络站点MySpace易于受到存储型XSS攻击。虽然MySpace的应用程序实施了过滤, 防止用户在他们的用户资料页面嵌入JavaScript脚本, 但一位用户找到了一种避开这些过滤的方法, 并在用户资料页面中插入了JavaScript脚本。
1、如果一名用户查看他的用户资料, 这段脚本就会执行,导致受害者的浏览器执行各种操作。这就造成了两个严重后果:把他加为受害者的好友,并把上述脚本复制到受害者自己的用户资料页面中, 因此任何查看受害者用户资料的用户也会成为这次攻击的受害者。
2、一个基于XSS的蠕虫在因特网上迅速扩散,几小时内收到了近百万个好友申请。MySpace被迫关闭应用程序, 从所有用户的资料中删除恶意脚本并修复反XSS过滤机制中的缺陷。
1.3、示例3:
当收件人查阅电子邮件时, 邮件内容在浏览器中显示,Web邮件应用程序的这种行为本身就存在存储型XSS攻击风险。电子邮件中可能包含HTML格式的内容,因此应用程序会立即将第三方HTML复制到向用户显示的页面中。2009年,一家Web邮件提供商悬赏、征询能够侵入其CEO电子邮件的黑客。黑客在该Web邮件应用程序中发现一个存储型XSS漏洞,如果收件人查看恶意电子邮件,黑客就可以执行任意Javascript,向该CEO发送了一份恶意电子邮件, 攻破了他在应用程序上的会话
二、xss攻击有效载荷
2.1、虚拟置换
1、这种攻击需要在一个Web应用程序页面注入恶程数据, 从而向应用程序用户传送误导性信息。它包括简单向站点中注入HTML标记,或者使用脚本(有时保存在外部服务器上)在站点中注入精心设计的内容和导航。这种攻击被称为虚拟置换,因为攻击者实际上并没有修改保存在目标Web服务器上的内容,而是利用应用程序处理并显示用户提交的输入方面的缺陷实现置换。
2、除造成无关紧要的损害外, 这种攻击也可用于严重的犯罪活动中。一个专门设计的过换, 如果以可信的方式传送给适当的接受者,可能会被新闻媒体报导, 对人们的行为、股票价格等造成重大影响, 从而帮助攻击者从中获得经济利益,
2.2、注入木马功能
1、这种攻击造成的后果远比虚拟置换严重. 它在易受攻击的应用程序中注入实际运行的功能,旨在欺骗终端用户执行某种有害操作(如输入敏感数据),随后将它们传送给攻击者。
2、在一个明显的攻击中,攻击者注入的功能向用户显示一个木马登录表单,要求他们向攻击者控制的服务器提交他们自己的证书。如果由攻击者技巧熟练,这种攻击还允许用户无缝登录到真正的应用程序中,确保他们不会发觉访问过程中的任何反常情况。攻击者就可以自由使用受害者的证书实现自己的目的。这种类型的有效载荷非常适于用在钓鱼攻击中, 向用户传送一个经过专门设计、连接可信应用程序的URL,并要求他们正常登录以访问这个URL。另一种明显的攻击是以某种有吸引力的条件为诱饵, 要求用户输入他们的私密信息
3、由于这些攻击中的URL指向真实应用程序的可信域名,如果在必要时使用有效的SSL证书,它们就比纯粹的钓鱼Web站点更有可能说服受害者提交敏感信息,后者通常位于另一个域中,而且只是克隆目标Web站点的内容
2.3、诱使用户执行操作
1、如果攻击者劫持受害者的会话, 那么他就可以作为该用户使用应用程序,并代表这名用户执行任何操作。但这种执行任意操作的方法并不总能达到想要的目的。它要求攻击者监控他们自己的服务器,看其是否收到被攻破的用户的会话令牌,而且它还要求他们代表每一名用户执行相关操作(如果要向许多用户实施攻击,这种方法并不可行。而且,它在应用程序的日志中留下相当明显的痕迹,用户在调查过程中利用它可迅速确定执行未授权操作的计算机)
2、如果攻击者想要代表每位被攻破的用户执行一组特殊的操作, 就可以采用另一种劫持会话的方法,即利用攻击有效载荷脚本执行操作。如果攻击者想要执行某个需要管理权限的操作,如修改他控制的一个账户的权限,这种方法特别有用。由于用户众多,要劫持每名用户的会话并确定其是否为管理员,需要精力。更加有效的方法是,诱使每个被攻破的用户尝试升级攻击者账户的权限,大多数尝试都会失败,但如果一个管理用户被攻破,攻击者就能够成功提升他的权限。
3、如果攻击者的主要目标为应用程序,并且希望在攻击时尽可能地保持隐秘,就可以利用这种类型的XSS攻击有效载荷让其他用户执行他选择的、针对应用程序的恶意操作。如攻击者可以促使其他用户利用一个SQL注入漏洞在数据库的用户账户表中添加一个新的管理员用户,攻击者就可以控制这个新账户,通过它执行恶意操作,但任何对应用程序日志的调查结论却将怀疑对象指向这名新建的用户
2.4、利用信任关系
一种重要的信任关系:浏览器信任由发布cookie的Web站点提交的JavaScript。有时在XSS攻击中还可以利用其他一些信任关系
1、如果应用程序采用激活自动完成功能的表单, 由应用程序提交的JavaScript就可以截获任何以前输入的、用户浏览器保存在自动完成缓存中的数据。通过示例化相关表单, 等待浏览器自动完成它的内容,然后查询表单字段值, 上述JavaScript脚本就能够窃取这些数据并将其传送至攻击者的服务器。这种攻击比注入木马功能更加强大, 因为它不需要用户执行任何操作就可以截获敏感数据
2、一些Web应用程序推荐或要求用户把其域名添加到浏览器的”可信站点” 区域内。这种要求几乎总会造成不利影响,并意味着攻击者可以利用任何XSS类型的漏洞在受害用户的计算机上执行任意代码。如果一个站点在浏览器的可信站点区域内运行, 就可以进行一系列操作,如注入代码使用户的计算机上启动Windows计算器程序
3、Web应用程序通常采用包含强大方法的ActiveX控件,一些应用程序在该控件内核实调用的Web页面确实属于正确的Web站点,力求防止第三方滥用这种控件。在这种情况下, 通过XSS攻击仍然可以滥用这个控件, 因为这时调用的代码可以通过控件实施信任检查
2.5、扩大客户端攻击范圈
攻击者可以采用各种方式直接攻击访问一个Web站点的用户。所有这些攻击都可以通过易受攻击的应用程序中的一个跨站脚本漏洞传送, 当用户偶然访问的任何恶意站点也可以直接传送它们。
三、XSS攻击的传送机制
3.1、传送反射型与基干DOM的XSS攻击
除了通过电子邮件向随机用户大量发送专门设计的URL这种明显的钓鱼向量外, 攻击者还可以尝试使用以下机制传送反射型或基于DOM的XSS攻击
1、在有针对性的攻击中, 攻击者可以向个体目标用户或少数几名用户发送一封伪造的电子邮件。如可以向管理员发送一封明显由已知用户送出的电子邮件,抱怨某个特殊的URL造成错误。如果攻击者想要攻破某个特殊用户的会话(而非截取随机用户的会话),实施合理、可靠的针对性攻击往往是最有效的传送机制(这类攻击称为“鱼叉式钓鱼”)
2、可以在即时消息中向目标用户提供一个URL。
3、第三方Web站点上的内容与代码可用于生成触发XSS漏洞的请求。各种常见的应用程序允许用户发布数量有限的HTML标记、这些标记将按原样向其他用户显示。如果可以使用GET方法触发XSS漏洞, 攻击者就可以在第三方站点上发布一个指向某恶意URL的IMG标签, 任何查看以上第三方内容的用户将在不知情的情况下请求该恶意URL。
或攻击者可以创建自己的Web站点, 在其中包含诱使用户访问的有趣内容, 但也可能含有一些脚本, 导致用户的浏览器向易受攻击的应用程序提出包含XSS有效载荷的请求。如果某用户登录以上易受攻击的应用程序, 并且碰巧浏览了攻击者的站点, 该用户访问以上易受攻击的应用程序的会话将被攻破
建立适当的Web站点后, 攻击者可以使用搜索引擎操纵技巧生成某些用户提交的访问,如将相关关键字放入站点内容中并使用相关表达式将其链接到相关站点。但这种传送机制与钓鱼攻击无关, 因为攻击者的站点并未试图模仿它所针对的站点
这种传送机制使得攻击者可利用只通过POST请求触发的反射型与基于DOM的XSS漏洞。但利用这些漏洞,攻击者明显不能通过向受害用户发送一个简单的URL来传送一次攻击。某个恶意Web站点可能包含一个HTML表单, 它使用POST方法并以易受攻击的应用程序作为它的目标URL,其页面上的JavaScript或导航控件可用于提交表单, 成功利用漏洞
4、在另一种利用第三方Web站点的攻击中, 一些攻击者付费购买许多链接至一个URL的横幅广告, 该URL中包含一个针对某易受攻击的应用程序的XSS有效载荷。如果一名用户登录这个易受攻击的应用程序,并单击广告, 那么他登录该应用程序的会话就会被攻破。因为许多提供商使用关键字将广告分配给与其有关的页面, 有时就会出现: 一个攻击特定应用程序的广告恰巧被分配在这个应用程序的页面中。这不仅提高了攻击的可估性, 而且还可以确保在攻击者实施攻击时,单击广告的用户正在使用那个易受攻击的应用程序。此外,由于目标URL现在为“本站点' URL,该攻击能够避开用于防范XSS的基于浏览器的机制。另外由于许多横幅广告提供商按点击率收费,这种技巧使得攻击者能够“买进” 大量用户会话
5、许多应用程序执行一种“推荐给朋友” 或向站点管理员发送反馈的功能。这种功能通常允许用户生成一封电子邮件,其内容与收件人均可自由设置。攻击者能够利用这种功能,通过一封实际源自自己服务器的电子邮件传送XSS攻击, 提高邮件被技术熟练的用户与反恶意软件的软件接受的可能性
3.2、传送存储型XSS攻击
存储型XSS攻击共有两种传送机制:带内与带外传送机制
1、带内传送机制适用于大多数情况,这时漏洞数据通过主Web界面提交给应用程序。用户控制的数据最终显示给其他用户的常见位置包含:个人伯息字段, 如姓名、地址、电子邮件、电话等;文档、上传文件及其他数据的名称;提交给应用程序管理员的反馈或问题;向其他应用程序用户传送的悄息、注释、问题等;记录在应用程序日志中, 并通过浏览器显示给竹理员的任何内容, 如URL ,用户名、HTTP、Referer、User-Agent等;在用户之间共享的上传文件内容。在这些情况下,只需向应用程序页面提交XSS有效载荷, 然后等待受害者查行恶意代码, 就可以传送XSS有效载荷
2、带外传送机制适用于通过其他渠道向应用程序提交漏洞数据的情况。应用程序通过这种渠道接收数据,并最终在主Web界面生成的HTML页面中显示它。前面描述的针对Web邮件应用程序的攻击就是这种传送机制的典型示例。这种攻击向一个SMTP服务器传送恶它数据, 并最终在一条HTML格式的电子邮件消息中向用户显示这些数据
3.3、链接XSS与其他攻击
1、XSS漏洞有时可与其他漏洞链接在一起,造成破坏性的后果。如用户昵称中存在一个存储型XSS漏洞。这个数据的唯一用途是在用户登录后显示一条个性化欢迎消息。该昵称从不向其他应用程序用户显示, 因此最初似乎没有任何攻击向量会致使用户在编辑昵称时造成问题。在其他各点都相同的情况下, 这种漏洞属于风险极低的漏洞。但该应用程序还存在另一个漏洞,由于访问控制存在缺陷, 任何用户都可以编辑其他用户的昵称。同样这个问题本身并不严重,一般攻击者不会对修改其他用户的昵称感兴趣,然而, 如果将这两个低风险的漏洞链接在一起, 攻击者就可以完全控制应用程序。
2、攻击者需设计一个自动攻击, 在每个应用程序用户的昵称中注入一段脚本。每次用户登录应用程序, 这段脚本就会执行, 并将该用户的会话令牌传送到攻击者控制的服务器中。应用程序的一些用户为管理员, 他们经常登录, 能够创建新用户并修改其他用户的权限,攻击者只需等待一名管理员登录, 劫持管理员的会话, 然后升级自己的账户, 获得管理权限。因此这两个漏洞同时出现会给应用程序的安全选成极大的风险。