2

我了解在GET帖子上使用 XSS 窃取信息的情况,工作流程如下:

  1. 黑客从 Web 应用程序中识别出具有通过查询字符串参数注入 XSS 漏洞的页面。
  2. 黑客编写了一个附加了 XSS 注入查询字符串的 url。
  3. 黑客将 URL 发送给受害者,例如通过电子邮件。
  4. 受害者收到邮件并点击 url(假设受害者对安全的了解较少)。
  5. 打开的网页已注入 XSS,对页面的任何进一步操作都可能导致安全问题。

这是可能的,因为单击 url 链接将以 GET 模式打开网页。所以,我想知道该页面对于POST请求是否存在 XSS 漏洞,这会是一个安全问题吗?我想不出一个“合理的”攻击工作流程。

4

3 回答 3

5

所以,我想知道该页面对于 POST 请求是否存在 XSS 漏洞,这会是一个安全问题吗?

当然会。为什么嵌入外部代码的方法很重要?确实发生是问题,而不是如何发生。

我想不出一个“合理的”攻击工作流程。

考虑一个简单的 HTML 表单,它在服务器端验证失败后预先填充了先前的用户输入。

如果这个预填充允许 XSS(基本上意味着,在 HTML 上下文中输出之前转义所有数据被忽略)——那么我可以很容易地在我自己的页面中设置一个表单,让它的action属性指向你的表单处理地址,然后传递我喜欢通过隐藏字段的任何数据——并且用户必须通过一个简单的提交按钮将该数据发送到您的服务器,该按钮的格式可能看起来就像一个正常的链接,并且只说“单击此处转到 example.com”。用户希望它像任何其他链接一样“正常”地打开一个页面——但实际上它发送的值会触发再次显示带有预填充字段的表单。

等等,XSS 攻击成功执行。

(所有这些都是在目标站点没有针对“外国”表单数据的额外安全性的前提下。)

于 2013-04-02T14:08:22.100 回答
2

攻击者还可以构建一个包含自动提交表单的“data:”URL:

data:text/html;base64,PGh0bWw+CiAgPGJvZHkgb25sb2FkPSJkb2N1bWVudC5mb3Jtc1swXS5zdWJtaXQoKSI+CiAgICA8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iaHR0cDovL2xvY2FsaG9zdCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImVybnN0IiB2YWx1ZT0iPHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4iPgogICAgPC9mb3JtPgo8L2h0bWw+

这相当于导航到包含此标记的页面:

<html> <body onload="document.forms[0].submit()"> <form method="post" action="..."> <input type="hidden" name="ernst" value=" <script>alert('XSS')</script>"> </form> </html>

于 2013-04-02T17:13:14.250 回答
0

刚刚在为客户执行渗透测试时遇到了这个确切的问题。在报告时,我们通常会尝试使用 GET 请求来展示概念证明漏洞利用,因为这更容易。还要记住,某些服务器可能允许您将 POST 更改为 GET 请求。一些服务器还将接受 URL 中的 POST 参数值。在我最近的经验中,服务器只接受作为 POST 的请求,并将输入输入到表单字段中。阻止 XSS 攻击的唯一因素是他们有跨站请求伪造预防(通过 ViewState)。所以,在这种情况下,它只是一个反射故障。仍然不是很好,但也没有那么糟糕。您应该始终使用入口和出口过滤,并且永远不要信任用户可控制的数据。

于 2015-03-17T16:48:32.253 回答