gogs - 命令执行漏洞复现
正文
internal/db/repo_editor.go#L490-L495
本地创建一个文件名为 config
然后再 gogs 的 web 页面新建一个 repo,然后本地随便初始化一个 git 同步上去
然后上传文件,上传的时候抓包,修改 tree_path=/.git/
漏洞形成的原因是因为没有对 tree_path 进行验证,导致可以目录穿越,覆盖到 repo 的 .git 文件夹

参考链接
https://github.com/gogs/gogs
https://huntr.dev/bounties/b4928cfe-4110-462f-a180-6d5673797902/
https://github.com/gogs/gogs/blob/3e353717540950a1459b3da7f28cc50df4a52119/internal/db/repo_editor.go#L450