代码之家  ›  专栏  ›  技术社区  ›  okutane

是否可以通过内部带有jsp代码的html注释进行xss攻击?

  •  2
  • okutane  · 技术社区  · 15 年前

    下面的代码是否真的在某些jsp页面上添加了xss漏洞?

    <!--    <%=paramName%>=<%=request.getParameter(paramName)%><BR>  -->
    

    它看起来像一个“遗留调试”,肯定应该从代码中删除,但它有多危险?

    2 回复  |  直到 15 年前
        1
  •  5
  •   rook    15 年前

    是的,你看到的是一个反射式xss攻击。这很危险,因为它允许攻击者劫持经过身份验证的会话。如果您的系统上运行此代码,攻击者将能够访问其他人的帐户,而无需知道他们的用户名/密码。

    XSS漏洞也可用于绕过 CSRF protection . 这是因为xss允许攻击者使用xmlhttprequest读取csrf令牌的值。xss也可以用来欺骗referer检查。

    这里是手动测试xss的简单方法,这里我将跳出html注释来执行javascript。

    http://localhost/xss_vuln.jsp?paramName='--><script>alert(document.cookie)</script><!--' 
    

    这是免费的 xss scanner ,您应该测试您编写的所有应用程序。

        2
  •  1
  •   Community CDub    8 年前

    jsp解析器将html注释处理为 模板文本 . 它不会忽略它的内容。HTML注释只被HTML解析器/解释器(WebBrowsers!)忽略。。您应该使用jsp注释来防止jsp解析器处理特定的代码片段。

    <%--    <%=paramName%>=<%=request.getParameter(paramName)%><BR>  --%>
    

    注意 <%-- --%> 风格与 <!-- --> HTML注释样式。jsp解析器不会解析它们,但是 移除 它们来自输出。因此在生成的html输出中看不到它们。

    XSS的风险就在这里,因为你不能逃脱 用户控制 输入这里。请求参数完全由endser控制。例如,最终用户可以通过 --><script>alert('xss')</script><!-- 作为参数值,它将被执行。这就为 XSS CSRF 攻击。例如,恶意脚本可以通过ajax请求将所有cookie发送到恶意服务器。然后,攻击者只需复制cookie值即可作为自己登录。

    你应该用 JSTL c:out 标签或 fn:escapeXml 函数来转义用户控制的输入。我之前已经详细回答过好几次了 here . 关于csrf的更多解释可以在我的答案中找到 here .