`
wjf2255
  • 浏览: 886 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

gitbucket1.8版本 关于readme.md的XSS漏洞

阅读更多

       最近在利用gitbucket用作项目开发中的代码托管工具。简单介绍一下gitbucket:gitbucket是一个仿github界面的代码托管工具。使用scala语言开发,利用jgit开源工具管理和操作git命令,内置了一个轻量级的内存数据库h2数据库(轻量到就一个jar包)。这个项目更新的比较快,目前最近的版本已经到1.11。

       在使用1.8版本时,遇到一个XSS漏洞:创建一个项目(不需要太正式),创建README.md文件。README.md文件中添加xss攻击语句:"><script>alert(1)</script><"并上传项目。当用户访问上传的项目时,浏览器将会解析javascript命令:alert(1)。

       为了避免被XSS攻击,我们需要在gitbucket把README.md文件的内容传递给用户的浏览器前,将README.md的内容转成html的内容,比如将“"”转成“&quot;”等。

       读取README.md的程序文件文件是app/RepositoryViewerController.fileList。fileList方法中有获取README.md文件内容的方法:

StringUtil.convertFromByteArray(JGitUtil.getContent(Git.open(getRepositoryDir(repository.owner, repository.name)), file.id, true).get)

 添加上转义方法:

 

 

StringUtil.convertFromByteArray(JGitUtil.getContent(Git.open(getRepositoryDir(repository.owner, repository.name)), file.id, true).get)
              .replace("&", "&amp;").replace(">", "&gt;").replace("<", "&lt;").replace("\"", "&quot;")

 再次访问之前的项目,README.md显示"><script>alert(1)</script><",而不会执行这段javascript。

 

珍爱安全,远离XSS

 

    

 

 

0
2
分享到:
评论

相关推荐

    开源的readme.md编写工具

    4. 完成编写后,将`README.md`文件提交到版本控制系统(如Git)中,与项目代码一起管理。 总的来说, Typora作为一款开源的Markdown编辑器,不仅在Windows平台上表现出色,而且具有丰富的功能和良好的用户体验,是...

    README.md编写教程(基本语法)

    README.md编写教程(基本语法) Markdown是一种纯文本格式的标记语言。通过简单的标记语法,它可以使普通文本内容具有一定的格式。

    README.md:README.md模板和示例

    # README.md:一份详尽的指南 在软件开发和开源项目中,`README.md` 文件是项目的重要组成部分,它提供了项目的基本信息、安装指南、使用方法、贡献方式等关键信息。`README.md` 使用Markdown语言编写,使得内容既...

    从Readmemd文件创建美观简单的HTML页面

    const readmeContent = fs.readFileSync('Readme.md', 'utf8'); const htmlContent = marked(readmeContent); // 将生成的HTML写入新的文件 fs.writeFileSync('index.html', htmlContent); ``` 虽然这会生成一个...

    README.md文件

    这是一个用于微信小程序开发的md文件,希望可以帮助大家。

    README.md

    README.md

    matlab README.md

    readme,matlab处理文件

    README.md.bak

    README.md

    README.md文档

    spark入门联系wordcount等相关操作文档~ Spark is a fast and general cluster computing system for Big Data. It provides high-level APIs in Scala, Java, Python, and R, and an optimized engine that ...

    cron00:每天00:00使用Python每天生成ReadMe.MD

    标题 "cron00:每天00:00使用Python每天生成ReadMe.MD" 提到的是一个使用Python脚本在每天凌晨00:00自动创建或更新名为 "ReadMe.md" 的文件的任务。这个任务可能涉及到定时任务调度、文本处理和版本控制等多个方面。 ...

    readme_styles:Github项目的最小README.rst和README.md模板

    `readme_styles`项目提供了GitHub项目的最小化`README.rst`(reStructuredText)和`README.md`(Markdown)模板,帮助开发者快速构建专业且规范的项目介绍文档。 首先,我们来详细了解一下`README`文件的重要性。`...

    README.md-的基本语法使用的小步骤

    markdown的基本语法使用 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题

    摆弄:从您的Readme.md文件创建漂亮而简单HTML页面

    从您的Readme.md文件创建漂亮而简单HTML页面 :hammer_and_wrench: 没有配置 ‍:laptop_computer: 代码突出显示 :hundred_points: 表情符号支持 :sparkles: 创建静态文件(仅JS是棱镜) :rainbow_flag_selector:...

    README.md database coding

    在“README.md database coding”的文档中,虽然没有直接提及数据库的具体实现细节,但从标题及描述中我们可以推测这是一份关于使用PHP语言进行数据库操作的文档。PHP 是一种广泛应用于 Web 开发中的服务器端脚本...

    readme-cli:生成README.md文件的cli

    生成README.md文件的cli 用法 请确保您已安装( npx默认情况下,由于NPM运5.2.0 ) 在项目的根目录运行以下命令并回答问题: npx @mxttwoods/readme-cli 对所有问题使用默认值( -y ): npx @mxttwoods/readme...

    一些关于目标检测的脚本的改进思路代码,详细请看readme.md.zip

    但根据一般实践,`readme.md`可能会提供关于代码库的简要概述,包括所使用的框架(如TensorFlow、PyTorch等)、实现的目标检测算法(如YOLO、Faster R-CNN、Mask R-CNN等)以及代码结构和功能。 `objectdetection_...

    asterisk-1.8.10.1.tar.gz

    当我们谈论"asterisk-1.8.10.1.tar.gz"时,我们实际上在讨论的是Asterisk的一个特定版本,即1.8.10.1,它被封装在一个名为tar.gz的压缩文件中。 首先,我们要理解tar.gz文件的含义。这是一种常见的Linux/Unix系统中...

    md-list:github、码云项目README.md增加目录侧栏导航

    提供个目录列表安装使用配合Tampermonkey食用最佳Tip: Internet Explorer 8 及更早 IE 版本不支持,本项目是基于Chrome开发调试,其他浏览器可能会存在些问题,请见谅插件功能项目README.md增加目录侧栏导航功能:...

    ReadMe-Generator:我使用简单的NodeJS应用程序来构建readme.md文件

    “自述生成器,我使用简单的NodeJS应用程序来构建readme.md文件”表明该项目的核心功能是生成`readme.md`文件,通过Node.js实现。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许开发者使用JavaScript...

Global site tag (gtag.js) - Google Analytics