漏洞摘要

我在Wiki页面找到了一个存储xss

重现步骤:

 1、登录到GitLab。
 2、打开有权编辑Wiki页面的’Project’页面。
 3、打开Wiki页面。
 4、点击’New page’按钮。
 5、用’javascript:’填写’Page slug’表单。
 6、点击’Createpage’按钮。
 7、填写每个表格,如下所示:
Title: javascript:

Format:Markdown

Content: [XSS](.alert(1);)
 参考下图:

了解更多的网络安全攻略联系我们(微信):kinnah333

8、点击“Create page”按钮。
9、在创建的页面中单击“XSS”链接。

单击创建页面中的“ XSS”链接后,将出现弹框。

{1}

详细说明:

GitLab应用程序转换Markdown字符串’.alert(1);’到href属性’javascript:alert(1);.’
此外,特定于Wiki的Markdown字符串’.’在这里应该转换’javascript:’

如何防范:

危险的href属性’javascript:alert(1);’应该被过滤。相反,应该呈现安全的HTTP / HTTPS链接。

附加信息:

1、 在上述情况下,另一个特定于Wiki的Markdown字符串’..’也将转换为javascript:

2、 使用标题字符串(例如javascript:STRING_EXPECTED_REMOVING)也会发生此漏洞

例如,如果使用伪装的Title字符串JavaScript::SubClassName.function_name创建了Wiki页面,则Gitlab在此类页面中应用程序将转换Wiki特定的Markdown字符串’.’到JavaScript:

3、 攻击者可以通过将Title字符串javascript:替换为其他方案来使用各种方案。(如data:, vbscript:等)。

此漏洞影响GitLab的enterprise 11.9.4-ee版本。

GitLab环境信息:

sudogitlab-rake gitlab:env:info的输出结果:System informationSystem:    Proxy:      noCurrent User:   gitUsing RVM:  noRuby Version:  2.5.3p105Gem Version:   2.7.6Bundler Version:1.16.6Rake Version:  12.3.2Redis Version: 3.2.12Git Version:   2.18.1Sidekiq Version:5.2.5Go Version: unknown
GitLab informationVersion: 11.9.4-eeRevision: 55be7f0Directory: /opt/gitlab/embedded/service/gitlab-railsDB Adapter: postgresqlDB Version: 9.6.11URL: http://gitlab.example.comHTTP Clone URL:http://gitlab.example.com/some-group/some-project.gitSSH Clone URL: git@gitlab.example.com:some-group/some-project.gitElasticsearch: noGeo: noUsing LDAP: noUsing Omniauth: yesOmniauth Providers:
GitLab ShellVersion: 8.7.1Repository storage paths:- default: /var/opt/gitlab/git-data/repositoriesGitLab Shell path: /opt/gitlab/embedded/service/gitlab-shellGit: /opt/gitlab/embedded/bin/git

漏洞影响:

如果使用此漏洞在公共项目中发布一个wiki页面(对所有人可见),可能会导致部分用户遭受xss攻击。

◆ ◆ ◆  ◆ ◆

了解更多的网络安全攻略联系我们(微信):kinnah333


文章TAG: