我目前正在尝试通过PCI的合规性来符合我客户的网站之一,但测试公司正在夸大我不了解的漏洞!

测试公司的(删除站点)的详细信息如下:

这里的问题是通常与电子商务应用程序相关联的跨站点脚本漏洞。其中一项测试在您的网站URL末尾的GET请求中附加了无害脚本。它被标记为跨站点脚本漏洞,因为用户(我们的扫描仪)输入的同一脚本是由标题中的服务器返回的。在这种情况下,该脚本已在标题中返回,因此我们的扫描仪标记了漏洞。

这是我从终端进行的测试以复制以下内容:

get/?oscsid =%22%3E%3ciframe%20SRC = foo%3E%3C/iframe%3E HTTP/1.0主机:(删除)

HTTP/1.1 302 Found
Connection: close
Date: Tue, 11 Jan 2011 23:33:19 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Location: http://www.(removed).co.uk/index.aspx?osCsid="><iframe src=foo></iframe>
Set-Cookie: ASP.NET_SessionId=bc3wq445qgovuk45ox5qdh55; path=/; HttpOnly
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 203

<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="http://www.(removed).co.uk/index.aspx?osCsid=&quot;>&lt;iframe src=foo>&lt;/iframe>">here</a>.</h2>
</body></html>

解决此问题的解决方案是对这些类型的请求进行消毒输入,确保可以触发可执行脚本的字符不会在标题或页面上返回。

首先,我无法获得测试仪的结果,它只会返回一个不包括位置的200个标头,也不会返回对象移动的页面。其次,我不确定(在IIS 6上)如何阻止其返回带有查询字符串的标头!最后,为什么标题中的代码很重要,肯定不会从HTTP标头中执行代码?

有帮助吗?

解决方案 2

事实证明,我有一个响应。对HTTPS访问的任何页面的重新归还,而这些页面不需要安全,这是重定向的一部分返回位置。将其更改为:

Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", Request.Url.AbsoluteUri.Replace("https:", "http:"));
Response.End();

修复了问题

其他提示

要求: GET /?osCsid=%22%3E%3Ciframe%20src=foo%3E%3C/iframe%3E HTTP/1.0 Host:(removed)

<iframe src=foo></iframe> 是这里的问题。

响应文本:

 <html><head><title>Object moved</title></head><body>
 <h2>Object moved to <a href="http://www.(removed).co.uk/index.aspx?osCsid=&quot;>&lt;iframe src=foo>&lt;/iframe>">here</a>.</h2>
 </body></html>

响应链接是:

  http://www.(removed).co.uk/index.aspx?osCsid=&quot;>&lt;iframe src=foo>&lt;/iframe>

其中包含来自请求字符串的内容。

基本上,有人可以向其他人发送一个链接,其中您的OSCSID包含允许以不同方式渲染页面的文本。您需要确保Oscsid对可能像这样的事情进行消毒或过滤器。例如,我可以提供一个字符串,使我可以加载我想要的任何JavaScript,或使页面呈现完全不同。


附带说明,它试图将您的浏览器转发到不存在的页面。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top