溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

clone如何實(shí)現(xiàn)任意代碼執(zhí)行

發(fā)布時間:2021-12-22 20:32:46 來源:億速云 閱讀:117 作者:柒染 欄目:網(wǎng)絡(luò)安全

clone如何實(shí)現(xiàn)任意代碼執(zhí)行,針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

0x00 概述

今日git 和git for window相繼發(fā)布最新版本Git 2.17.1、Git for Windows 2.17.1,主要用于解決git一個嚴(yán)重漏洞:CVE-2018-11235。

該漏洞允許在運(yùn)行'git clone --recurse-submodules'(或已棄用的gi tclone --recursive)時實(shí)現(xiàn)任意代碼的執(zhí)行。惡意倉庫可以包含指向倉庫外部的.git modules子模塊配置文件。當(dāng)git克隆這樣一個倉庫時,就被誘騙執(zhí)行克隆子模塊內(nèi)(非.git目錄)的hook,實(shí)現(xiàn)任意代碼執(zhí)行。

0x01 bug詳解

當(dāng)Git倉庫包含子模塊時,為了編譯項(xiàng)目管理,子模塊的倉庫結(jié)構(gòu)與.git文件夾內(nèi)的父級倉庫結(jié)構(gòu)可以存在一起。子模塊的倉庫結(jié)構(gòu)通常存儲在與子模塊名稱相同的文件夾中,但此文件夾的名稱可由父倉庫中的文件配置。

問題版本的git允許配置中包含不一定屬于.git目錄的路徑。導(dǎo)致攻擊者可以精心設(shè)計創(chuàng)建一個擁有另一個Git倉庫的父倉庫,作為該父倉庫內(nèi)的一個文件夾。然后,該倉庫可以作為子模塊添加到父倉庫。該子模塊的位置可以配置非.git文件夾,指向父倉庫本身內(nèi)的簽入倉庫。

當(dāng)遞歸clone這個父倉庫時,Git會檢查已配置的子模塊,然后查找存儲該子模塊庫的位置。它將遵循父倉庫本省得配置,檢入倉庫。該倉庫將用于檢出子模塊,由于沒有過濾導(dǎo)致該檢入倉庫中的任何hook腳本將運(yùn)行。

因此,攻擊者可以將這個倉庫配置一個惡意的post-checkout腳本捆綁在一起,它們的代碼倉庫遞歸clone會立即執(zhí)行。

0x11漏洞影響

0x1101 Git托管商

由于,實(shí)際中大多數(shù)人依賴托管服務(wù)提供商(比如Github)來存儲代碼,因此通過服務(wù)托管商簡單地阻止倉庫來阻止此漏洞擴(kuò)散。據(jù)悉目前Visual Studio Team Services、GitLab和Github都是會主動阻止任何試圖在.git目錄之外設(shè)置git子模塊的倉庫。

0x1102 Git客戶端

阻止托管提供程序中的惡意倉庫會關(guān)閉攻擊媒介源,但是不排除有其他的托管商以及其他惡意利用的途徑(比如假冒個github站點(diǎn))。所以建議盡快升級git客戶端。

0x12漏洞檢測

漏洞的檢查也非常簡單,你可以通過如下腳本來檢驗(yàn)?zāi)愕膅it是否存在問題:

新建一個臨時目錄運(yùn)行它:

mkdir chongchongtemp && cd chongchongtemp

git init test && \

  cd test && \

  git update-index --add --cacheinfo 120000,e69de29bb2d1d6434b8b29ae775ad8c2e48c5391,.gitmodules

error: Invalid path '.gitmodules'

fatal: git update-index: --cacheinfo cannot add .gitmodules

注意:該命令不會克隆任何倉庫,沒有執(zhí)行任何危險的指令。

如果顯示為:

error: Invalid path '.gitmodules'

fatal: git update-index: --cacheinfo cannot add .gitmodules

則你的版本不受該漏洞的影響。

如果你的git無任何提示,并且創(chuàng)建一個空倉庫,那么你的版本有問題。

0x13漏洞解決

windows:

從gitforwindows獲取最新版本的Git for Windows(2.17.1版)。

macOS

蘋果通過用Xcode發(fā)布Git,但是沒有有定期更新機(jī)制。因此,你需要使用第三方包管理來進(jìn)行版本升級版。建議使用Homebrew管理器。

如果你還未安裝Homebrew,通過一下命令安裝:

 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

然后,你可以使用Homebrew來安裝和升級git:

brew install git

brew update git

Linux(Debian,Ubuntu)

如果你使用的發(fā)行版為Ubuntu或Debian,可能很快就會有更新包發(fā)布,請注意更新。

Redhat,CentOS:

sudo yum update git

Debian,Ubuntu:

sudo apt-get update git

關(guān)于clone如何實(shí)現(xiàn)任意代碼執(zhí)行問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI