有什么推荐的解决方法吗?(我们恰好使用的是ACF9。)
(另外,如果你有一个针对CF的漏洞利用示例,我会很感激。)
严重程度
高
配置
脚本(XSS.script)
此页面容易受到各种Unicode转换问题的攻击,例如最佳匹配映射、过长字节序列、不良格式序列。
最佳匹配映射是指将字符X转换为完全不同的字符Y。通常情况下,在Unicode和其他编码之间转码时会出现最佳匹配映射。
过长字节序列(非最短形式)- UTF-8允许使用不同的表示来表示字符,这些表示也可以更短。出于安全原因,UTF-8解码器不能接受比编码字符所需字节更长的UTF-8序列。例如,字符U+000A(换行符)只能以0x0A的形式从UTF-8流中接受,而不能以以下五种可能的过长形式之一出现:
0xC0 0x8A
0xE0 0x80 0x8A
0xF0 0x80 0x80 0x8A
0xF8 0x80 0x80 0x80 0x8A
0xFC 0x80 0x80 0x80 0x80 0x8A
根据UNICODE 3.0的要求,以及Unicode技术报告#36中所述,如果前导字节后跟无效的后继字节,则不应将其消耗掉。
当发生最佳匹配映射时会产生软件漏洞。例如,字符可以被操纵以绕过字符串处理过滤器,如跨站点脚本(XSS)或SQL注入过滤器、WAF和IDS设备。过长的UTF-8序列可能被滥用以绕过仅查找最短可能编码的UTF-8子字符串测试。
确定这些Unicode转换问题的来源并加以解决。请参考下面的网络参考资料获取更多信息。
Unix/Linux UTF-8 和 Unicode 常见问题解答
/mysite-portal/
详情
URL 编码的 POST 输入 linkServID 设置为 acu5955%EF%BC%9Cs1%EF%B9%A5s2%CA%BAs3%CA%B9uca5955
问题列表:
Unicode字符U+02B9修饰字母PRIME(编码为%CA%B9)被转换为U+0027撇号(')
Unicode字符U+02B9修饰字母PRIME(编码为%CA%B9)被转换为U+0027撇号(')...(行被截断)
请求头
GET
/mysite-portal/?display=login&status=failed&rememberMe=0&contentid=&LinkServID=acu5955%1 Cs1es2%BAs3%B9uca5955&returnURL=https://stage-cms.mysite.com/mysite-portal/ HTTP/1.1 Referer: https://stage-cms.mysite.com:443/
连接:保持活动状态
接受编码:gzip,deflate
用户代理:Mozilla/5.0(兼容;MSIE 9.0;Windows NT 6.1;WOW64; Trident/5.0)
接受:*/*
主机:stage-cms.mysite.com