千家信息网

Gogs任意用户登录漏洞实例分析

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要为大家分析了Gogs任意用户登录漏洞实例分析的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习"Gogs任意用
千家信息网最后更新 2025年01月20日Gogs任意用户登录漏洞实例分析

这篇文章主要为大家分析了Gogs任意用户登录漏洞实例分析的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习"Gogs任意用户登录漏洞实例分析"的知识吧。

一、 漏洞背景

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数据库,并开启注册功能。

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

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

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

五、 漏洞分析利用

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

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

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

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

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

因为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。

关于"Gogs任意用户登录漏洞实例分析"就介绍到这了,更多相关内容可以搜索以前的文章,希望能够帮助大家答疑解惑,请多多支持网站!

文件 用户 漏洞 内容 版本 分析 登录 功能 生成 实例 实例分析 平台 文件夹 路径 页面 支持 服务 仓库 代码 分支 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 计算机软件开发安防资质 成都智能家居软件开发 如何查询所有数据库中的总数 电脑有网但连不上游戏服务器 刀片机服务器改装 软件开发试用期工作内容总结 无线网络技术中范围最小 服务器永久保留日志如何设计架构 2022年网络安全宣传周 记计算机网络技术基础知识 查询按钮怎么连接数据库查看 高科技互联网公司龙头股 怎样做好电子商务网络安全 分布式数据库sql审核平台 饺子云服务器正忙 上海飞鹰网络技术有限公司 社区网络安全讲稿 潮流软件开发过程价钱 饥荒服务器加mod教程 inux服务器设计 服务器显示屏出现广告怎么办 怎么在服务器上安装微信 为什么网络安全还是重要 广西华为服务器价格 数据库数据输出 华为服务器raid多少比较好 社交软件开发思维导图 网络技术考试字母大小写 上海慧毓见互联网科技有限公司 虹口区大型软件开发售后保障
0