Gitlab Wiki页面存储xss漏洞

漏洞摘要
我在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);)
参考下图:

Gitlab Wiki页面存储xss漏洞


8、点击“Create page”按钮 。
9、在创建的页面中单击“XSS”链接 。
单击创建页面中的“ XSS”链接后,将出现弹框 。
Gitlab Wiki页面存储xss漏洞


详细说明:
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攻击 。
◆ ◆ ◆◆ ◆
【Gitlab Wiki页面存储xss漏洞】了解更多的网络安全攻略联系我们(微信):kinnah333

    推荐阅读