GateOne CVE-2020-35736 任意文件读取漏洞复现

0x00:简介

GateOne 是一款使用 HTML5 技术编写的网页版 SSH 终端模拟器。基于现代的 HTML5 技术,无需任何浏览器插件、支持多个 SSH 进程、可以嵌入到其他任意应用程序中、支持使用 JavaScript,Python 甚至纯 CSS 编写的插件、支持 SSH 进程副本,打开多个进程而无需重复输入密码、 支持各种服务器端的日志功能,支持 Keberos-based 单点登录甚至活动目录、 支持操作日志记录,具有操作记录回放功能。

0x01:分析

查看文件gateone / core / server.py在第3692行中,您可以找到设置处理程序的位置。

    可以看到_downloads /_没有使用Tornado附带的StaticFileHandler,但是使用的是作者本人编写的方法,该方法可能存在漏洞。

可以在第924行找到get方法的定义:

def get(self, path, include_body=True):
    session_dir = self.settings['session_dir']
    user = self.current_user
    if user and 'session' in user:
        session = user['session']
    else:
        logger.error(_("DownloadHandler: Could not determine use session"))
        return # Something is wrong
    filepath = os.path.join(session_dir, session, 'downloads', path)
    abspath = os.path.abspath(filepath)
    if not os.path.exists(abspath):
        self.set_status(404)
        self.write(self.get_error_html(404))
        return
    if not os.path.isfile(abspath):
        raise tornado.web.HTTPError(403, "%s is not a file", path)

注意关键部分。可以看到该路径被拼写为文件路径,而没有任何过滤。有目录遍历,并且可以读取任何文件。

****0x02:复现****

使用官方docker镜像构建测试环境。

1、拉取docker镜像

docker pull liftoff/gateone

2、运行docker

#Command
docker run [-d/-t] -p [443]:8000 -h [hostname] --name gateone liftoff/gateone gateone
#For example, if 443 is occupied on the server, please use another unused port.
docker run -t -p 443:48620 -h Rats --name gateone liftoff/gateone gateone
安装后,请访问https:// ip:port.如果浏览器可能报告它不安全,请忽略它。

注:仅做本地环境测试,切勿外部测试。违者后果自负。

文章来源:

https://github.com/liftoff/GateOne/issues/747

扫码二维码

获取更多精彩

洛米唯熊

点个在看 你最好看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值