CVE-2020-27955 - Git 大文件存储/Git LFS (git-lfs) - 远程代码执行 (RCE)
2022-10-9 12:4:17 Author: Ots安全(查看原文) 阅读量:23 收藏

技术分析

Git 大文件存储或 Git LFS 是一个开源扩展,用于在 git 存储库之外存储大文件。Git LFS 将大文件存储在远程服务器上,同时将指向该文件的指针存储在 repo 中。

Git LFS (git-lfs) 版本 <= 2.12 有一个漏洞,如果受害者克隆使用 git-lfs 的攻击者存储库,远程攻击者可以在受害者的 Windows 系统上执行任意代码。

当通过以下 ExecCommand() 函数生成新的 git 进程时,Git LFS 没有指定 git 二进制文件的完整路径:

subprocess/subprocess_windows.go:

    func ExecCommand(name string, arg ...string) *Cmd {        cmd := exec.Command(name, arg...)        cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}        cmd.Env = fetchEnvironment()        return newCmd(cmd)    }

如果攻击者在存储库被克隆时将恶意可执行文件放置在存储库中(必须命名为 git.bat、git.exe 或 git.cmd),则执行恶意文件而不是位于受信任的原始 git 二进制文件小路。

这可能导致特权访问并接管被欺骗克隆恶意存储库的 Windows 主机。绝对值得打补丁,尽管由于所需的用户交互级别(他们必须执行克隆)我会说可利用性评级相当低,尽管 CVSS 得分为 9.8

Metasploit 模块

https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/windows/http/git_lfs_rce.rb

更多参考

https://github.com/git-lfs/git-lfs/security/advisories/GHSA-4g4p-42wc-9f3m


文章来源: http://mp.weixin.qq.com/s?__biz=MzAxMjYyMzkwOA==&mid=2247495616&idx=2&sn=77116dd14da8c2cfff4171db06b8789e&chksm=9bada68bacda2f9d4e7f2a996b40df02e2e404c9bffd74d20429c9eaf1b561c1eb1541185225#rd
如有侵权请联系:admin#unsafe.sh