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