0

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

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

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

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

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

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

4

3 回答 3

2

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

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

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

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

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

于 2013-05-17T18:08:56.367 回答
1

我知道可以通过 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 间接注入。注入的图像可能会泄露隐藏在引荐来源网址中的秘密。注入的元标记或 iframe 可以重定向到您网站的网络钓鱼版本。

易受HTTP 响应标头拆分影响的系统可能会被注入响应标头(如重定向 URL 或 Set-Cookie 指令)的 HTML 和脚本破坏。

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

于 2013-05-17T15:19:23.017 回答
1

XSS 是关于 javascript 的。

但是,要注入您的恶意 javascript 代码,您必须使用可能位于服务器或客户端的页面代码漏洞。

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

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

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

于 2013-05-17T14:49:04.077 回答