作者:LoRexxar’@知道创宇404实验室
2019年4月15号,gitea曾爆出过一个漏洞,恰逢当时对这个漏洞比较好奇就着手去研究了一下,漏洞的描述是这样的:
models/repo_mirror.go in Gitea before 1.7.6 and 1.8.x before 1.8-RC3 mishandles mirror repo URL settings, leading to remote code execution.
在和朋友@hammer的一同研究下,成功控制了git config的内容,但是在从git config到RCE的过程遇到了困难,就暂时搁置了,在过了几个月之后,偶然得到@Lz1y和@x1nGuang两位大佬的启发,成功复现了这个漏洞,下面我们就来仔细研究下这个问题。
分析补丁
首先根据cve的信息,确定漏洞1.7.6和1.8.0-rc3上修复
. https://github.com/go-gitea/gitea/releases/tag/v1.7.6
. https://github.com/go-gitea/gitea/releases/tag/v1.8.0-rc3
根据漏洞文件为repo_mirror.go这个信息锁定更新的commit,commit主要为 #6593和#6595
. https://github.com/go-gitea/gitea/pull/6595/commits/52af826a7aa1df6ab538d881db236698cb367cd7
根据patch可以大致锁定问题的关键点
/models/repo_mirror.go
当仓库为mirror仓库时,se