问题描述
缺少输入验证和输出编码将会允许 JavaScript 注入,从而导致反射跨站点脚本 (XSS)。
反射跨站点脚本可用于向 Microsoft System Center 2016 身份验证页面注入任意 JavaScript。 可以拦截以下 GET 请求并修改 SpaceID,以便在 Web 控制台的左侧导航窗格中注入任意字符串。
GET/OperationsManager/InternalPages/NavigationTree.aspx?SpaceId=1002&ViewId=Favorites_Overview HTTP/1.1
下面是任意字符串的示例:
abc%3E%3C","00000000-0000-0000-0000-000000000000");alert(1);//%3E
恶意 JavaScript 一旦注入,就可以修改页面的当前行为并传递:特洛伊木马程序、强制恶意重定向、内容欺骗、键盘记录器、内容泄漏、VIEWSTATE 和验证器令牌泄漏(击败反 CSRF 控件)等。
攻击由以下步骤构成
-
攻击者使用 XSS 有效负载生成 System Center 的特定已验证 GET 请求,并诱使受害者访问特定 URL 或诱使用户访问触发特定请求的仿冒欺诈。
-
经过身份验证的受害者加载/重新加载主页。
注意: 攻击适用于任何 viewID 值以及具有 SpaceID 查询字符串参数的每个请求。
测试用例
预期结果: 无效的 SpaceID 错误或空窗格,并且没有执行随机 JavaScript
结果: 执行任意 JavaScript。
解决方案
实施严格的输入验证。 只接受整数作为 SpaceID,因此针对输入的数据类型检查足以修复该漏洞。
已添加检查以确保 SpaceID 仅为支持的值(1001 和 1002),否则该树中的数据为空。
参考
请参阅 CVE-2020-1331 中的安全指南公告。
安全分类
反射跨站点脚本,内容欺骗