Git Shell Bypass, weniger ist mehr

Wir waren schon immer ein Fans von Wargames. Nicht der Film (gut, ebenfalls der Film) Ich beziehe mich jedoch auf Hacking Wargames. Es gibt jedoch eine Reihe von Stilen, aber normalerweise haben Sie irgendwo Zugriff auf ein vorläufiges Shell-Konto, was Level00 ist, sowie Sie müssen einen Fehler in dem System ausnutzen, um den Umgang mit den Berechtigungen von Level1 sowie so gut wie so weiter zu behandeln. Fast immer gibt es ein Niveau, in dem Sie eine legitime Binäre (mit einigen schattigen Berechtigungen) nutzen müssen, die mehr als das, was der Routine-Individuum denkt.

In der Situation von CVE-2017-8386 ist weniger mehr.

[TIMO Schmid] Details Genau, wie die Git-Shell, eine eingeschränkte Schale, die als Upstream-Peer in einer Git-Remote-Sitzung über einen SSH-Tunnel verwendet werden soll, misshandelt werden, um beliebige Datenlese, Verzeichnislistung sowie etwas etwas zu erreichen eingeschränkte Daten schreiben. Das git-Shell-Fundamental-Konzept besteht darin, die aktivierten Befehle in einer SSH-Sitzung in die von GIT benötigte SSH-Sitzung einzuschränken (Git-Empfangspaket, Git-Upload-Pack, Git-Upload-Archiv). Der Forscher erkannte, dass er Parameter auf diese Befehle übergeben könnte, wie die Flag-Help:

1.
2.
3
4.
5.
6.
7.
$ ssh git @ remoteserver & quot; git-empfangs-pack ‘–help’ & quot;

Git-Empfangspaket (1) Git-Handbuch Git-Recome-Pack (1)

NAME
Git-Empfangspaket – Holen Sie sich, was in das Repository geschoben wird
[…]

Was die Flagge macht, ist der Git-Befehl, der die Guy-Seite von Git öffnet, die an einem Pager-Programm weitergegeben wird, normalerweise weniger. Sowie dabei wird es interessant. Je weniger Befehl, wenn Sie interaktiv laufen, können Sie eine Reihe von Dingen durchführen, in der Sie erwarten, dass Sie nach Text suchen, auf eine Zeilennummer gehen, nach unten scrollen, sowie so weiter. So können Sie auch eine neue Daten öffnen (: e), speichern Sie den Eingang den Eingabe in ein Daten (en) sowie die Execute-Befehle (!). Um es interaktiv zu machen, müssen Sie die Zuteilung einer PTY in SSH so zwingen, dass Sie dies tun:

1.
2.
3
4.
5.
6.
7.
8.
9.
$ ssh -t git @ remoteserver & quot; git-empfangs-pack ‘–help’ & quot;

Git-Empfangspaket (1) Git-Handbuch Git-Recome-Pack (1)

NAME
Git-Empfangspaket – Holen Sie sich, was in das Repository geschoben wird

Manuelle Seite GIT-Empfangs-Pack (1) Zeile 1 (Drücken Sie H nach Assist oder Q, um zu beenden)

Drücken Sie H nach Unterstützung sowie Spaß haben. Ein Vorbehalt ist, dass übliche Installationen die Code-Ausführung nicht wirklich beliebige Befehle ausführen wird, da die vorliegende laufende Anmeldeschale die Git-Shell ist, die auf nur einige weiße aufgeführte Befehle beschränkt ist. Es gibt jedoch spezifische Konfigurationen, in denen dies passieren kann, wie beispielsweise Bash oder SH als Login-Shell erhalten sowie die Einzelperson in Methoden einschränken, die sie nur mit Git verwenden können (z. B. in freigegebenen Umgebungen ohne Root-Zugriff). Sie können ein solches Beispiel hier sehen.

Die schnellste Lösung scheint es zu sein, die serverseitige No-PTY-Flagge in der SSHD-Konfiguration zuzulassen. Dadurch vermeidet Clients, dass Clients eine PTY-Datei anfordern, so weniger wird nicht in einem interaktiven Modus ausgeführt.

1.
2.
3
4.
5.
6.
$ Kerl weniger.

Weniger (1) Allgemeine Befehle Handbuch weniger (1)

NAME
weniger – Gegenteil von mehr

Ironisch, nicht wahr?

Back to top