反映跨站脚本的可能攻击向量是什么?

时间:2010-08-20 18:42:11

标签: security xss

维基百科提供information about one of the most common scenarios用于利用反映的跨站点脚本攻击 - 使用某种程度的社交工程来诱使毫无戒心的用户点击恶意链接:

  
      
  1. Alice经常访问由Bob主持的特定网站。鲍勃的   网站允许Alice用a登录   用户名/密码对和商店   敏感数据,例如计费   信息。
  2.   
  3. Mallory观察到Bob的网站包含反映的XSS   漏洞。
  4.   
  5. Mallory制作了一个利用漏洞的URL,并向Alice发送了一个   电子邮件,诱使她点击链接   对于虚假借口下的URL。   此URL将指向Bob的网站,   但是会包含马洛里的恶意   代码,网站将反映。
  6.   
  7. Alice登录Bob时访问了Mallory提供的URL   网站。
  8.   
  9. 嵌入在URL中的恶意脚本在Alice的浏览器中执行,   好像它直接来自鲍勃的   服务器(这是实际的XSS   漏洞)。可以使用该脚本   将Alice的会话cookie发送给   马洛里。马洛里然后可以使用   会话cookie窃取敏感   爱丽丝可获得的信息   (身份验证凭据,结算   没有爱丽丝知识的信息等。
  10.   

现在,当网站恰好是页面驱动的应用程序时,这通常是非常好的示例 - 通过让用户向应用程序提交恶意负载来利用漏洞(更重要的是,通过发布GET登录后请求)反映在响应中。

还有更有趣的攻击向量,尤其是当应用程序使用大量AJAX并且大多数请求是通过HTTP POST进行时要考虑的吗?

修改

如果我不清楚,我想知道适用于反映的XSS攻击的各种类型的攻击媒介,特别是当应用程序的客户端层以不同方式实现时。基于页面的应用程序将具有涉及用户发出的HTTP GET请求的攻击向量,但了解这对于胖客户端应用程序(尤其是使用发出HTTP POST请求的XMLHttpRequest对象的应用程序)的影响将会很有趣。客户端渲染中使用的不同机制显然需要研究不同的攻击向量。在某些情况下,可能没有任何适用的攻击媒介;表达的问题是引起这样的回应。

3 个答案:

答案 0 :(得分:3)

是的,实际上反射XSS攻击有一些变化。最值得注意的是Samy Worm。简而言之,Samy使用XSS将XHR发送到MySpace.com以读取CSRF令牌并伪造POST请求。实际上,这是一种通用攻击模式,可用于攻击使用httponly cookies的网站。随着httponly cookie的使用变得越来越流行,这种攻击模式也将如此受欢迎。

另一个xss有效负载是XSS Shell。这为攻击者提供了一个浏览器的交互式通道。

XSS用于传递“Drive-By-Download”攻击。

Xss也可用于fake the news。经常发现xss对news sources,这是一个相当严重的问题。

编辑:您可能也对Apache基金会got owned如何使用xss和tinyurl感兴趣。 Here是我写的一个利用Samy风格攻击以获得CSRF的漏洞。

答案 1 :(得分:3)

benlbroussard已经触及了这一点,但我想重申它,因为它的重要性。胖客户端,瘦客户端,POST,GET,PUT;这些都不重要。 XSS漏洞基于站点错误地将某些输入呈现给某人。

如果您正在寻找严格反映的攻击,则有效负载不应存储在目标应用中的任何位置。在这种情况下,我认为你是正确的,胖客户会趋向于更具抵抗力,因为GET是发起反映XSS攻击的最简单方法。

关于更多攻击向量,关于胖客户端架构的一个有趣的事情是实体编码。瘦客户端可以实体编码所有内容并使用它完成,具有很大的好处。胖客户端实体应该将响应编码为初始GET,但是带有JavaScript的回复的异步请求不能(完全)编码并且是有效的JS。这种来回增加了不编码应该是的东西的机会,这是创建XSS向量的重要一步。

有意义吗?

卡尔

答案 2 :(得分:2)

当页面显示恶意用户输入时,会发生反射XSS。问题是“那里有什么攻击媒介?”因此,“页面接收的用户输入是什么?”是同义词。

有些消息来源:

  • GET请求的查询字符串,可以来自:
    • 电子邮件中的网址
    • 来自黑客或恶意网站的重定向(通过js,301响应或元标记)
  • POST请求的正文可以来自:
    • 来自任何域的AJAX POST请求(同源策略不会停止请求,只是解析响应)
    • 使用method =“POST”和action =“XSSed_site.com”的任何表单。表格可以通过js发布,也可以通过点击按钮来发布,这可以通过点击来完成。
  • 其他形式的输入,例如:
    • 外部js文件,例如受攻击页面正在使用的表格分类器或库
    • 受攻击页面上显示的服务器到服务器通信
    • 攻击页面上显示的可被攻击者更改的任何其他数据

我意识到“其他形式的输入”部分看起来更像是存储的XSS漏洞,但每个应用程序都是唯一的,有些可能会将用户输入转换为外部部分如何组成页面(因此反映出来)。

来自网络钓鱼邮件的GET请求中的查询字符串肯定不是反映XSS的唯一向量(不过很好)。