【漏洞复现】Gogs 任意用户登录漏洞分析复现

admin 2022年4月22日00:44:38评论231 views字数 1843阅读6分8秒阅读模式


山东新潮信息

专业|专注|卓越|安全


【漏洞复现】Gogs 任意用户登录漏洞分析复现
【漏洞复现】Gogs 任意用户登录漏洞分析复现
【漏洞复现】Gogs 任意用户登录漏洞分析复现
【漏洞复现】Gogs 任意用户登录漏洞分析复现
【漏洞复现】Gogs 任意用户登录漏洞分析复现
【漏洞复现】Gogs 任意用户登录漏洞分析复现
【漏洞复现】Gogs 任意用户登录漏洞分析复现


声明:Tide安全团队原创文章,转载请声明出处!文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!


一、    漏洞背景

Gogs 是一款类似GitHub的开源文件/代码管理系统(基于Git),Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。

二、    漏洞描述

gogs是一款极易搭建的自助Git服务平台,具有易安装、跨平台、轻量级等特点,使用者众多。其0.11.66及以前版本中,(go-macaron/session库)没有对sessionid进行校验,攻击者利用恶意sessionid即可读取任意文件,通过控制文件内容来控制session内容,进而登录任意账户。

三、    影响版本

影响版本如下:

Gogs 0.11.66及之前的版本

四、    漏洞复现

(1)    利用ubuntu虚拟机docker克隆vulhub上gogs环境

(2)    执行如下命令启动gogs:docker-compose up -d

(3)   环境启动后,访问http://192.168.49.103:3000/install,即可看到安装页面。安装时选择sqlite数据库,并开启注册功能。

 【漏洞复现】Gogs 任意用户登录漏洞分析复现

【漏洞复现】Gogs 任意用户登录漏洞分析复现

(4)使用Gob序列化生成session文件data。

(5)然后注册一个普通用户账户,创建项目,并在“版本发布”页面上传刚生成的session文件。

 【漏洞复现】Gogs 任意用户登录漏洞分析复现

(6)通过这个附件的URL,得知这个文件的文件名:./attachments/2eb7f1a2-b5ec-482e-a297-15b625d24a10。然后,构造Cookie:i_like_gogits=../attachments/2/e/2eb7f1a2-b5ec-482e-a297-15b625d24a10,访问即可发现已经成功登录id=1的用户(即root管理员)

 【漏洞复现】Gogs 任意用户登录漏洞分析复现

五、    漏洞分析利用

首先, 对于每个用户, 我们都可以创建仓库, 通过release功能可以上传任意内容可控的文件, 从而为我们伪造session文件提供了条件.

通过explore功能, 我们能找到很多用户的仓库, 进入某用户的用户资料页面, 我们可以得到构造该用户session的所有需要的资料(uid, username).

 【漏洞复现】Gogs 任意用户登录漏洞分析复现

通过上方file.go的代码, 我们发现, session文件的内容为Gob编码方式, 借鉴P牛写的生成session的payload。

 【漏洞复现】Gogs 任意用户登录漏洞分析复现

由此, 我们可以生成一段session, 通过每个用户均可使用的release上传功能, 我们将我们伪造的session上传至服务器。

默认配置的gogs,release中文件存放的目录结构是attachments/fid[0]/fid[1]/fid。session存放的目录结构是sessions/sid[0]/sid[1]/sid。此外sessions与attachments文件夹均存放在相同的data文件夹下。

 【漏洞复现】Gogs 任意用户登录漏洞分析复现

因为gogs会将session分段,构造成最终的路径后再进行读取, 而attachments与session在同一文件夹下,修改session为我们刚刚上传的文件的路径,即../attachments/1/7/17f4120b-1a0d-416a-b0b0-def4342ded5b,读取session的函数将路径解析为sessions/././../attachments/1/7/17f4120b-1a0d-416a-b0b0-def4342ded5b也就是我们上传的那个文件,最终完成任意用户登陆。

六、    修复建议

Gogs可至Github下载编译develop分支,在该分支中此漏洞已经修复,或者升级至最新版本的Gogs。




E




N




D






【漏洞复现】Gogs 任意用户登录漏洞分析复现


guān




zhù







men





Tide安全团队正式成立于2019年1月,是新潮信息旗下以互联网攻防技术研究为目标的安全团队,目前聚集了十多位专业的安全攻防技术研究人员,专注于网络攻防、Web安全、移动终端、安全开发、IoT/物联网/工控安全等方向。

想了解更多Tide安全团队,请关注团队官网: http://www.TideSec.net 或长按二维码关注公众号:

【漏洞复现】Gogs 任意用户登录漏洞分析复现




原文始发于微信公众号(白帽子):【漏洞复现】Gogs 任意用户登录漏洞分析复现

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月22日00:44:38
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【漏洞复现】Gogs 任意用户登录漏洞分析复现https://cn-sec.com/archives/930975.html

发表评论

匿名网友 填写信息