什么是跨站点脚本(XSS)?对于攻击者和维护者来说,这是一个低调的果实
Posted 安全文库
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是跨站点脚本(XSS)?对于攻击者和维护者来说,这是一个低调的果实相关的知识,希望对你有一定的参考价值。
2005年10月4日,无论如何,在世界某个地方恍然大悟。睡眼惺My的MySpace用户从沉睡中醒来,登录世界主导的社交媒体平台,渴望与新朋友交往。人们喜欢Samy Kamkar。因此,对于朋友的渴望是Samy他在他的MySpace个人资料中删除了跨站点脚本(XSS)漏洞。
现在被称为Samy蠕虫,他的javascript自动与访客交朋友,并弹出一条消息,宣称“samy是我的英雄!” 当MySpace拔掉插头时,Samy在24小时内结交了一百万朋友。
现在告诉并重新围绕营火对年轻人的反对,Kamkar先生的传奇lulz是网络应用程序的脆弱和未能消除用户输入的遗产。
什么是XSS?
最基本的是,XSS攻击涉及攻击者将恶意代码输入到Web表单或Web应用程序URL中,以欺骗应用程序执行不应该执行的操作。假设一个Web应用程序表单要求您输入您的名字,而是用glee输入:
<script> alert ;(“我是一个反映的XSS攻击!” )</ script>
您单击回车并看到一条弹出消息,显示“我是一个反映的XSS攻击!” 现在你知道城堡的大门是敞开的,守卫在树荫下打盹。
当然,2018年很少有网络应用程序容易受到攻击,但随着攻击者和防御者之间的军备竞赛升级,攻击者发现了Web应用程序装甲中的新漏洞。成功的XSS攻击可能会给您和您的企业带来严重和不愉快的后果。
对于规范定义,让我们引用经文。和我一起吃OWASP十大的神圣话语:
只要应用程序在新网页中包含不受信任的数据而没有正确的验证或转义,或者使用可以创建html或JavaScript的浏览器API使用用户提供的数据更新现有网页,就会出现XSS漏洞。XSS允许攻击者在受害者的浏览器中执行脚本,这些脚本可能会劫持用户会话,破坏网站或将用户重定向到恶意站点。
根据OWASP的说法,Kamkar先生是一个脚本小孩,有一些乐趣,他的意图显然没有恶意,但同样的XSS漏洞仍然困扰着所有部署的网络应用程序的三分之二以上,使其成为第二常见的攻击之后SQL注入。
“跨站点脚本”这个术语在过去的15到20年间已经发生了变化,以至于Mitre现在更喜欢不那么简洁,但更精确的是“网页生成过程中输入的不当中和”。伙计们,中和了那个输入。以极端的偏见中和它。
在我之后重复咒语:不要相信用户输入。不要相信用户输入。不要相信用户输入。
你可能找不到必杀技,但你会为低技能的攻击者烧焦地球。XSS是一个众所周知的攻击载体,在互联网时代是古老的。如果你没有为这些攻击辩护,那么你就没有尽职尽责。
XSS的类型
与高卢一样,朱利叶斯凯撒将其分为三个部分,XSS攻击也由三个有些重叠的区域组成:反映XSS(非持久性),存储XSS(持久性)和基于文档对象模型(DOM)的XSS。
反射的XSS通常用作网络钓鱼方案的一部分,它最容易利用和防范。上面的<script>是反映XSS的基本示例:攻击者将恶意内容注入HTTP请求,然后将结果“反映”回用户。
当然,攻击者不太可能想要利用自己(这是弗洛伊德的一些缩小头脑的东西),但是可以欺骗受害者点击这样一个链接的攻击者可以劫持他们的会话。因此,反映的XSS通常存在于网络钓鱼攻击中。
例如,攻击者可能会制作利用易受攻击的Web应用程序的恶意URL,然后使用网络钓鱼或其他社交工程技术欺骗Web应用程序的合法用户单击恶意链接。然后,Web应用程序将恶意代码反映给受害者,然后受害者可以在受害者的Web浏览器中执行恶意代码。
当攻击者欺骗Web应用程序将恶意代码存储在Web应用程序的数据库中时,就会发生存储的XSS(或持久性)攻击。一旦存储在服务器上,该恶意代码就可以攻击系统本身或向许多甚至所有Web应用程序的用户提供恶意代码。一个常见的例子是在博客的评论部分发布恶意代码(当博客仍然是一件事时)。
<script> alert ;(“我是博客评论中的持久性XSS攻击!” )</ script>
访问该博客的任何人都将成为该恶意代码的受害者。这就是持久性XSS是最危险的跨站点脚本攻击的原因。为什么攻击一个用户可以攻击它们?聪明的歹徒和间谍寻求规模经济。
第三种和最新的(如果是2005年是“新的”)XSS攻击是基于DOM的。与反射或存储的XSS不同,基于DOM的XSS攻击客户端代码,通常是JavaScript - 而不是Web应用程序服务器端 - 在受害者的浏览器中执行恶意代码。
信任问题:跨站点脚本预防
记住口头禅:不要相信用户输入。您的Web应用程序应该对用户输入存在信任问题,并且不太可能发生变化。好消息是,XSS是一个oooooold攻击媒介,你需要的防御工具已经成熟且易于使用。使用它们。
白名单可信输入。黑名单很脆弱,最终会失败。确定什么构成您的Web应用程序的安全输入,拒绝或逃避其余的。“第一条规则是否认所有人,”[他们强调] OWASP写道。“规则#0的原因是HTML中存在许多奇怪的上下文,因此转义规则列表变得非常复杂。”
这对Javascript来说是双倍的。“最重要的是,永远不要接受来自不受信任来源的实际JavaScript代码然后运行它,”OWASP强调说。“例如,一个名为'callback'的参数包含一个JavaScript代码片段。没有任何转义可以解决这个问题。”
在OWASP十大XSS预防小抄远远超过我们可以在这里深,你应该阅读整个事情。请记住定期对您的应用进行测试,以确保它不会受到XSS攻击。
XSS和CSRF有什么区别?
跨站点脚本(XSS)和跨站点请求伪造(CSRF)是针对受害者浏览器的相关攻击。主要区别在于CSRF利用用户的身份验证会话(可能是他们登录到他们的银行帐户),并且XSS不需要经过身份验证的会话才能生效。
假设您同时登录了Twitter和网上银行,并点击了如下所示的Twitter链接:
http://www.yourbank.com/sendmoney,do?from=you&to=attacker&ountount = 5000
根据您的银行管理会话令牌的方式以及您正在使用的浏览器,您可能会变得更穷。
XSS是一种更危险的攻击媒介,但防御XSS和CSRF非常重要。您可以在OWASP CSRF预防备忘单上阅读有关CSRF防御安全措施的更多信息。
当XSS攻击时
对于希望利用Web应用程序的攻击者而言,跨站点脚本(XSS)是一个不容错过的成果,但通过执行尽职调查可以轻松缓解这种情况。Samy蠕虫是一个善良的黑客,不会伤害任何人。间谍和歹徒每天都会使用同一类漏洞,并且有恶意。Samy蠕虫病毒灭绝十多年后,未能降低XSS攻击的风险开始显得过于严重疏忽。
安全文库
点击关注
以上是关于什么是跨站点脚本(XSS)?对于攻击者和维护者来说,这是一个低调的果实的主要内容,如果未能解决你的问题,请参考以下文章