我们最近对我们的应用程序有了一个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...
答案 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攻击。阅读该页面并查看是否适用。