ColdFusion MX用户代理跨站点脚本漏洞

时间:2014-05-14 09:10:32

标签: javascript html coldfusion

我们最近对我们的应用程序有了一个webinspect。我们遇到了User-Agent跨站点脚本漏洞问题,在下面的GET请求中我们可以看到恶意脚本“alert(097531)” 插入到User-Agent变量中,我们不确定在运行webinspect扫描时该脚本如何插入用户代理字段。你可以建议我们如何限制一些入侵者将恶意脚本插入用户代理变量。和一些url命中文件夹中不存在的badfile.cfm。我如何限制网址,以便它不会打到一些坏文件。 请找到以下请求和响应参数:

请求:

    GET /test/badfile123.cfm HTTP/1.1
    User-Agent: <script>alert(097531)</script>
    Host: ebizweb2.stage.att.com
    Referer: https://www.exdomain.com/page.CFM?
    CAT=TRADSEARCH
    Accept: */*
    Pragma: no-cache

响应:

    HTTP/1.1 404 Not Found
    Date: Wed, 12 Mar 2014 17:52:54 GMT
    Server: Apache/2.2.26 (Win32) mod_ssl/2.2.26 OpenSSL/1.0.1e mod_jk/1.2.32
    Connection: close
    Content-Type: text/html;charset=UTF-8
    Content-Length: 2758
    ...TRUNCATED...font style="COLOR: black; FONT: 8pt/11pt verdana">
    <script>alert(098531)</script></td>
    </tr>
    <tr>
    <t...TRUNCATED...

1 个答案:

答案 0 :(得分:0)

首先,看看您是否可以升级到最新版本的ColdFusion。 XSS攻击是冰山一角。有一个considerable amount of other attacks您可能(并且很可能是)易受攻击,CF 10和11具有解决它们的新功能。

目前,如果可以,您需要实施OWASP Enterprise Security API(ESAPI)。

Download来自Google Code repo的ESAPI-1.4.5a.jar文件。您不能使用2.1版本,因为CF 6不能在最新版本的Java上运行。此文件通过修补程序包含在CF 8和9中。

在application.cfm(或.cfc)中,设置

<cfset application.xssEncoder = createObject("java", "org.owasp.esapi.ESAPI").encoder() />

现在,您可以使用HTMLEditFormat()JSStringFormat(),而不是application.xssEncoder.encodeForHTML()application.xssEncoder.encodeForJavaScript()。这些函数提供比旧的本机CF函数更高级别的编码。事实上,ColdFusion 11已弃用HTMLEditFormat()

您可以阅读Java Docs并获取所有可用编码器的列表。

您还可以关注this project,我将在不久的将来添加一堆与这些功能相关的文档。

HOWEVER ,因为看起来您的HEADER受到了攻击,它可能是CRLF attack而不是XSS攻击。阅读该页面并查看是否适用。