Gogs 任意用户登录漏洞(CVE-2018-18925)
gogs是一款极易搭建的自助Git服务平台,具有易安装、跨平台、轻量级等特点,使用者众多。
其0.11.66及以前版本中,(go-macaron/session库)没有对sessionid进行校验,攻击者利用恶意sessionid即可读取任意文件,通过控制文件内容来控制session内容,进而登录任意账户。
参考链接:
- https://github.com/gogs/gogs/issues/5469
- https://xz.aliyun.com/t/3168
- https://www.anquanke.com/post/id/163575
漏洞复现
环境启动后,访问http://192.168.44.132:3000
,即可看到安装页面。安装时选择sqlite数据库,并开启注册功能。
安装完成后,需要重启服务:docker-compose restart
,否则session是存储在内存中的。
使用Gob序列化生成session文件:
1 | package main |
然后注册一个普通用户账户,创建项目,并在“版本发布”页面上传刚生成的session文件:
通过这个附件的URL,得知这个文件的文件名:./attachments/f3768c6e-2798-478d-affa-719958a8c94a
。
然后,构造Cookie:i_like_gogits=../attachments/f/3/f3768c6e-2798-478d-affa-719958a8c94a
,访问即可发现已经成功登录id=1的用户(即管理员)。