XSS -是否只能通过使用JavaScript实现?



我知道在SO上有很多关于跨站脚本的问题,并试图阅读投票最多的问题。在阅读了一些网页后,我仍然不确定这种攻击类型可以使用的所有可能性。我问的不是如何净化输入,而是人们可以期待什么。

在SO和其他页面给出的大多数示例中,有两种方法,其中最简单的(例如;这是PHPMaster)似乎插入了一些<script>代码用于窃取cookie等。

用户Baba在这里提出的另一个方法是插入完整的<form>代码结构,但是它似乎在用户提交表单之前不应该工作,但是可能会使用一些JavaScript事件,如... onmouseover='form.submit()'...

我能够检查的所有网络示例都是基于使用一些JavaScript代码的方法。

是否有可能使用其他方法,比如——以某种方式——更改HTML,甚至更改服务器端脚本?

我知道一个人可以通过SQL注入或黑客攻击服务器来获得这个,但我的意思是只有通过操纵(错误处理)GET, POST请求——或者其他一些?

跨站脚本不仅仅是将JavaScript代码插入到网页中。它是一个通用术语,指的是在易受攻击的网页上下文中被浏览器解释的任何代码注入,参见CWE-79:

在页面生成过程中,应用程序不会阻止数据包含可由web浏览器执行的内容,如JavaScript、HTML标签、HTML属性、鼠标事件、Flash、ActiveX等。

例如,攻击者可以将自己的登录表单注入到现有的登录页面中,从而将凭据重定向到他的站点。这也被称为XSS。

然而,注入JavaScript通常更容易、更有前途,因为它既可以控制文档,也可以控制受害浏览器。使用JavaScript,攻击者可以读取cookie,从而窃取受害者的会话cookie来劫持受害者的会话。在某些情况下,攻击者甚至可以在受害者的机器上执行任意命令。

XSS的攻击向量多种多样,但它们都有一个共同点,即由于一些处理不当的输入,它们可能成为可能。这既可以通过GET或POST提供的参数,也可以通过HTTP请求中包含的任何其他信息,例如cookie或任何其他HTTP报头字段。有些使用单个注射点,有些则分为多个注射点;有些是直接的,有些是间接的;有些是自动触发的,有些需要特定的事件;等。

我知道一个人可以通过SQL注入或黑客攻击服务器来获得这个,但我的意思是只有通过操纵(错误处理)GET, POST请求——或者其他一些?

GET参数和POST主体是通过HTTP请求攻击web应用程序的主要载体,但还有其他载体。如果你不小心上传文件,那么我可能会上传一个木马。如果你天真地将上传的文件托管在与你的网站相同的域,那么我可以上传JS或HTML,并让它以同源特权运行。请求标头也是攻击者可能操纵的输入,但我不知道是否有成功的攻击者滥用它们。

代码注入是一类攻击,包括XSS、SQL注入、Shell注入等。

任何时候由攻击者控制的GET或POST参数被转换成代码或编程语言符号,您就有代码注入漏洞的风险。

如果一个GET或POST参数被天真地插入到一个SQL字符串中,那么你就有SQL注入的风险。

如果将GET或POST参数(或文件上传中的文件名之类的头)传递给shell,则有shell注入和文件包含的风险。

如果您的应用程序使用服务器端语言的等效eval和一个不可信的参数,那么您就有服务器端脚本注入的风险。

您需要怀疑所有输入,将它们视为纯文本字符串,并且在用另一种语言组合字符串时,通过转义将纯文本字符串转换为目标语言的子字符串。过滤可以在这里提供深度防御。


XSS -是唯一可能的使用JavaScript?

。可以在IE中注入VBScript。Javascript可以通过url和CSS间接注入。注入的图像会泄露隐藏在引用URL中的秘密。注入的元标签或iframe可以重定向到您网站的钓鱼版本。

容易受到HTTP响应头拆分的系统可以被HTML &将脚本注入到响应头中,如重定向url或Set-Cookie指令。

HTML嵌入了如此多的语言,因此您需要非常小心地包含来自不受信任来源的HTML片段。如果您必须在站点中包含外部HTML,请使用白名单清理程序。

XSS是关于javascript。

然而,要注入恶意javascript代码,您必须使用可能在服务器或客户端上的页面代码的漏洞。

您可以使用CSP(内容安全策略)在现代浏览器中防止XSS。

在XSS Cheat Sheet中也有一个XSS技巧列表。然而,这些技巧大多不适用于现代浏览器。

Webkit不会执行javascript,如果它也是请求的一部分。例如,demo.php?x=<script>alert("xss")</script>不会显示一个警告框,即使它的脚本标签被注入到dom。相反,会抛出以下错误:"拒绝执行JavaScript脚本。在请求中找到的脚本源代码。"

最新更新