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

Javascript ColdFusion MX用户代理跨站点脚本漏洞,javascript,html,coldfusion,Javascript,Html,Coldfusion,我们最近在应用程序上进行了webinspect。我们发现了一个用户代理跨站点脚本漏洞问题,在下面的GET请求中,我们可以看到恶意脚本“警报(097531)” 已插入到用户代理变量中,我们不确定在运行webinspect扫描时该脚本如何插入到用户代理字段中。请您建议我们如何限制某些入侵者将恶意脚本插入用户代理变量。和某个url,该url指向文件夹中不存在的badfile.cfm。如何限制url,使其不会命中某个坏文件。 请查找以下请求和响应参数: 请求: GET /test/badfile

我们最近在应用程序上进行了webinspect。我们发现了一个用户代理跨站点脚本漏洞问题,在下面的GET请求中,我们可以看到恶意脚本“警报(097531)” 已插入到用户代理变量中,我们不确定在运行webinspect扫描时该脚本如何插入到用户代理字段中。请您建议我们如何限制某些入侵者将恶意脚本插入用户代理变量。和某个url,该url指向文件夹中不存在的badfile.cfm。如何限制url,使其不会命中某个坏文件。 请查找以下请求和响应参数:

请求:

    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
GET/test/badfile123.cfm HTTP/1.1
用户代理:警报(097531)
主持人:ebizweb2.stage.att.com
推荐人:https://www.exdomain.com/page.CFM?
CAT=TRADSEARCH
接受:*/*
Pragma:没有缓存
答复:

    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...
未找到HTTP/1.1 404 日期:2014年3月12日星期三17:52:54 GMT 服务器:Apache/2.2.26(Win32)mod_ssl/2.2.26 OpenSSL/1.0.1e mod_jk/1.2.32 连接:关闭 内容类型:text/html;字符集=UTF-8 内容长度:2758 …截断…font style=“COLOR:black;font:8pt/11pt verdana”> 警报(098531)
首先也是最重要的一点,看看是否可以升级到ColdFusion的最新版本。XSS攻击只是冰山一角。您可能(而且很可能)容易受到攻击,CF 10和11有新的功能来解决这些问题

目前,如果可以,您需要实现(ESAPI)

来自谷歌代码repo的ESAPI-1.4.5a.jar文件。您不能使用2.1版本,因为CF6不会在最新版本的Java上运行。该文件通过修补程序包含在CF 8和9中

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

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

您可以阅读并获得所有可用编码器的列表

您还可以关注一下,我将在不久的将来添加一堆与这些函数相关的文档


但是,因为这看起来像是您的头被攻击了,所以这可能是一次攻击,而不是XSS攻击。阅读该页面,看看它是否适用。

您网站上的某些内容正在输出CGI.HTTP_USER_代理,但没有正确编码。在输出任何用户派生的变量时,都需要使用and/or之类的函数(实际上,对于所有变量,都需要使用and/or函数,但在安全方面,这取决于用户可以控制什么)。在这个具体的例子中,404错误页面似乎就是这样做的,它可能由CF控制,也可能不由CF控制,但不要只检查/更改一个文件)?