Codepurple Logo Codepurple Logo Codepurple Logo
  • Dienstleistungen
  • Blog
  • Über uns
  • Termin vereinbaren
  • de
  • /

  • en
  • Sprache:

  • de
  • /

  • en

Öffentliche .git Ordner

Veröffentlicht am: 2. Mai 2022
Autor: Thomas Federer

Eine Analyse von Codepurple aller .ch und .li Domains auf öffentliche Code-Repositories (Git) zeigte, dass 1053 öffentliche Code Repositories gefunden wurden. In den Code Repositories sind harmlose Dinge wie Templates oder statische HTML-Seiten zu finden, aber auch kompletter Code von Webapplikationen inklusive deren Konfiguration mit Passwörtern für Logins, Datenbanken, Office365 Logins, E-Mail-Konten mit Passwörtern oder Private-Keys um mit Zahlungsanbietern zu kommunizieren. Es wurden sogar Benutzernamen und Passwörter in den Meta-Daten des Repositiories selbst gefunden, welche den Zugriff auf komplette Codeverwaltungen von Firmen ermöglichten.

Public Git

Eine weitere spannende Entdeckung war, dass komplette Code-Repositories auch ohne Directory-Listing heruntergeladen werden können, in dem einfach direkt auf die Dateien in einem .git Ordner zugegriffen wird. So zum Beispiel der direkte Zugriff auf .git/HEAD oder .git/config.

Was ist ein Git Repository

In der Softwareentwicklung ist es heute Standard ein Codeverwaltungssystem einzusetzen. Ein solches System ist Git (https://de.wikipedia.org/wiki/Git).

In einem solchen System ist die gesamte Geschichte des Sourcecodes vorhanden. Man kann jeder Änderung nachvollziehen und zu dieser zurückspringen. Auch sind Meta-Informationen zum Projekt darin gespeichert.

Git Repository

Wie ist es aufgebaut?

Ein Git-Repository kann man sich als Datei-Ordner vorstellen in welchem der Code eines Projektes gespeichert ist. Dabei sieht man den aktuellen Code. Alle Meta-Informationen oder alte Versionen sind in einem versteckten Ordner mit dem Namen .git gespeichert.

Aus den Daten im .git Ordner kann der gesamte Code inklusive jede Änderung gelesen werden.

Was ist das Risiko?

Beim Deployen einer Webapplikation oder Webseite wird oft der Code aus dem Codeverwaltungssystem geladen. Es kann dann durch eine fehlerhafte Konfiguration passieren, dass der versteckte .git Ordner aufrufbar ist. So kann der gesamte Source-Code oft mit Konfigurationsdateien abgerufen werden. Zum Beispiel: https://example.com/.git/

Es kann sein, dass die Dateien im .git Ordner direkt aufgelistet werden. Aber selbst wenn das Auflisten der Dateien auf dem Server gesperrt ist, können direkt auf die Dateien im .git Ordner zugegriffen werden. Oft ist auch der Zugriff auf den .git Ordner möglich, wenn man www weglässt und oder http und https variiert.

Zum Beispiel:
Zugriff via https://www.example.com/.git/ ist nicht möglich. Aber Zugriff via https://example.com/.git ist möglich.

Weshalb ist der direkte Zugriff auf den .git Ordner gefährlich?

Der gesamte Code inklusive alten Versionen ist somit ersichtlich. Wenn ein Angreifer den vollständigen Code vor sich hat ist es viel einfacher Sicherheitslücken zu finden und diese Auszunutzen, als wenn man nur das laufende System von aussen betrachtet.

Oft werden Konfigurationsdateien im Git-Respository gespeichert. Dies können Benutzernamen, Passwörter, Access-Tokens usw. sein. Diese können dann missbraucht werden, um zum Beispiel direkt auf die Datenbank zu verbinden.

In den Meta-Daten eines Git-Repositories können auch Benutzernamen und Passwörter in Klartext vorhanden sein. So kann ein Angreifer direkt auf das Codeverwaltungssystem zugreifen und zum Beispiel alle Projekte einer Firma herunterladen.

Statistik

Codepurple hat alle .ch und .li Domains auf öffentliche Git-Repositories untersucht. Dabei wurden 2’417’079 Domains untersucht.

In manchen Repositories waren nur Templates der Webseite gespeichert. In anderen war der komplette Code der Webseite vorhanden. Auch fand Codepurple diverse Benutzernamen und Passwörter. Diese reichten von E-Mail-Konten über Datenbankverbindungen bis zu Benutzernamen für die komplette Codeverwaltung von Firmen.

  • 1053 ganz oder teilweise öffentlich .git Ordner
  • 161 mit Username in Meta-Daten
  • 12 mit Username und Passwort in den Meta-Daten

Was gilt es zu beachten, damit mein .git Ordner nicht öffentlich ist?

  • .git nicht vom Webserver ausliefern
  • Kein Directory Listing
  • Kein Direkter Zugriff auf Files im .git Ordner
  • Den Benutzernamen und das Passwort nicht im git-Config-File speichern
  • Keine Usernamen und Passwörter im Code, somit auch nicht im Code-Repository
Secure Git

Beispiel Konfigurationen für Webserver

Achtung: Die Konfiguration kann je nach Version und Server abweichen.

Apache2

<DirectoryMatch "^/.*/\.git/">
  Deny from all 
</Directorymatch>

Nginx

location ~ /\.git { 
  deny all; 
} 

In wie weit ist meine Firma betroffen?

Codepurple hat einen umfangreichen Datenstamm und Software für die Analyse zur Verfügung. Gerne Analysieren wir für Sie Ihr Unternehmen: Anfrage senden.

Weitere Blog-Beiträge

Folgende Blog-Beiträge könnten Sie interessieren:

  • security.txt und Kontaktinformationen
  • Sichere APIs?
  • State of the Swiss web Q2 2022

Ein 8-stelliges Passwort mit Nummern, Gross- und Kleinbuchstaben und Sonderzeichen kann in unter einer Stunde geknackt werden.

Quelle: Hive Systems

Haben Sie Fragen oder wünschen Sie einen Termin?

Kathrin Müller freut sich auf Ihre Kontaktaufnahme und organisiert je nach Bedürfnis gerne ein Meeting.

Kontakt

nanio GmbH (Codepurple)
Moosweg 24
5606 Dintikon

+41 79 823 45 30
rhino@codepurple.ch

Folgen Sie uns

Instagram Twitter Linekdin

Impressum| Datenschutz| © Codepurple 2023. Alle Rechte vorbehalten