XSS的实际例子?

时间:2011-04-06 00:47:01

标签: security xss

我非常理解XSS在理论上如何运作,但是我缺乏知识和想象力来看看攻击者如何实际使用被盗的cookie。

他们会在浏览器中手动设置吗?如果是这样,网站不会拒绝它没有设置的cookie吗?攻击者是否编写自定义脚本来手动发送他们想要的任何恶意HTTP请求并首先设置恶意cookie?

好奇......

3 个答案:

答案 0 :(得分:1)

XSS不只是窃取cookie。

也就是说,许多站点和应用程序在cookie变量(例如Java中的JSESSIONID)中存储对服务器端会话的引用。如果使用XSS来存储此值,攻击者可能会伪造您的会话并将其接管,假装是您。这有时称为跨站点请求伪造。想象一下,如果您没有点击在线银行会话中的“注销”按钮,则被盗的cookie值允许攻击者从他的计算机恢复会话,从您的帐户转出资金。

在某些情况下,他们会注入XSS将您转发到看似有效网站的网站,但该网站本身就是伪造的。然后,当您认为自己仍在合法网站上时,此网站可能会搜索您的个人详细信息或信用卡号码。

某些XSS攻击可能只是令人讨厌,消耗大量资源,导致浏览器崩溃,或者只是弹出垃圾邮件广告等。

XSS还可用于从当前浏览器窗口中抓取其他信息,并将其传输到攻击者可以访问的位置。想象一下具有XSS注入的数据元素,但在同一屏幕上还有您的帐号。

查看owasp.org了解更多信息。他们的前十名对任何Web开发人员都至关重要。我告诉我的开发人员,如果你编写了一个应用程序,你可能已经编写了一些漏洞。知识就是力量。记住并理解OWASP前10名,你将比平均水平好。

答案 1 :(得分:1)

这根本不是关于XSS的。您所指的主题称为会话固定会话劫持

If so, wouldn't a website reject a cookie it didn't set? 

HTTP是无状态的。它不记得它给哪些人的cookie。

会话以不同的运行时(例如PHP与JSP)不同地实现,但一般原则是相同的。会话数据存储在服务器上,并由唯一的,难以猜测的密钥标识。如果请求中不包含该密钥,则在初始请求时与客户端共享此密钥。

有时密钥会作为cookie传输,这很方便,因为客户端通常会自动发送cookie。但是会话ID也可以以其他方式传递,例如在查询字符串中。例如,您看到许多网站都有这样的网址:

  

http://jksiusjkakek.com/path/to/app?SESSIONID=1jk98s9sji29sk2lui2

这通常不是一件好事,因为这意味着在创建的任何书签或发送给其他人的链接中捕获会话ID,使会话固定更加容易。

  

攻击者是否编写自定义脚本来手动发送他们想要的任何恶意HTTP请求并首先设置恶意cookie?

如果站点在URL中传递了会话ID,就像我上面所示,那么很容易:攻击者只是将会话ID复制/粘贴到URL字符串中。

如果站点将会话ID作为cookie传递,则攻击者需要在自己的浏览器上手动设置cookie。最简单的方法是打开你的cookie首选项窗口并手动将会话ID复制/粘贴到一个新的cookie中......

虽然我确信真正的坏人有更有效的方式:)

答案 2 :(得分:0)

除了cookie窃取,会话劫持等(已经相当广泛地介绍)之外,XSS实际上现在可以在很多方面使用,特别是在持久性XSS方面(最简单的术语是XSS)由服务器保存并由服务器提供给用户而无需攻击者干预)。您可以将整个页面的内容替换为针对纯文本密码的网络钓鱼,您可以传播Web蠕虫,您可以使用几乎任何Web应用程序的功能,例如发送消息,发布帖子......这也可以用于从恶意软件传播到简单的恶作剧的各种方法。最后,HTML5中的新创新将使持久XSS更加危险,您实际上可以完全劫持有问题的网站,包括url bar,因此用户实际上不会离开您的控件,您可以记录用户所做的任何事情(以及资源来源共享甚至用户发送的所有内容)很容易上升到很少甚至没有怀疑,甚至可以使用该特定网站的浏览器窗口完成密钥记录。认为谷歌分析,但恶意......

这些仅仅是XSS不仅仅是关于cookie和会话的几个例子,现在它很快就会出现(不幸的是)更广泛和更广泛的恶意使用可能性。