NFsec Logo

Grabienie rozproszonych systemów zarządzania wersjami dla zabawy i zysku

17/12/2012 w Bezpieczeństwo Brak komentarzy.  (artykuł nr 386, ilość słów: 405)

T

aki tytuł swojej prezentacji na DEFCON 19 przyjął Adam Baldwin. Opierała się ona na błędzie w postaci braku blokady dostępu do plików zawierających metadane systemów DVCS (ang. Distributed Version Control Systems), czyli po prostu plików pochodzących z rozproszonych systemów kontroli wersji takich jak: .git, .bzr (bazaar), .hg (mercurial), czy .svn (subversion). Błąd ten wynika najczęściej z faktu, że programiści używają tego rodzaju rozwiązań do wdrażania aplikacji na serwery środowisk produkcyjnych, które także pełnią rolę publicznych serwerów WWW.

Pierwszym krokiem do “ograbienia” repozytorium jest jego identyfikacja. Przykłady adresów URL, po których można zidentyfikować poszczególne systemy DVCS:

  • git – http://www.pl/.git/HEAD
  • bazzar – http://www.pl/.bzr/README
  • mercurial – http://www.pl/.hg/requires
  • subversion – http://www.pl/.svn/entries

Drugim krokiem jest próba wyciągnięcia jak największej ilości wrażliwych danych, w których mogą znajdować się różnego rodzaju pliki konfiguracyjne, dane do baz danych, klucze SSH, API itp.. Typową ścieżką w tego rodzaju postępowaniu jest:

  • Sprawdzenie, czy katalog systemu kontroli wersji umożliwia listowanie plików – jeśli serwer umożliwia listowanie plików wewnątrz katalogu, który nie zawiera plików index.(html|php) – jesteśmy w stanie skopiować (prawie) całe repozytorium.
  • Pobranie plików, których nazwy oraz ścieżki są przewidywalne i charakterystyczne dla danej platformy.
  • Wylistowanie i pobranie plików z repozytorium.
  • Pobranie plików, do których znajdują się odwołania w innych plikach.
  • Próba przywrócenia repozytorium jako lokalnej kopii.

Przykład kompromitacji serwera, z publicznie dostępnym repozytorium .git oraz włączonym listowaniem plików:

$ mkdir clone
$ cd clone
$ wget --mirror --include-directories=/.git http://www.strona.pl/.git
$ cd www.strona.pl
$ git reset --hard
HEAD is not at [ ... ]
$ ls
dump config index.php robots.txt

Możemy również skorzystać z automatów DVCS-Pillage napisanych w bashu przez wcześniej wspomnianego Adama Baldwina lub skryptu w Perlu. Bardzo poważnie należy podejść do tematu zabezpieczenia dostępu do tego rodzaju zasobów ponieważ istnieje bardzo wiele automatów (nmap, metasploit, w3af), jak i prostych zapytań do Google, które bardzo szybko identyfikują tego rodzaju podatności. Przykład jednej z metod zabezpieczenia w serwerze Apache przed różnego rodzaju skanerami:

RedirectMatch 404 /\\.(svn|git|hg|bzr|cvs)(/.*|$)

Więcej informacji: Pillaging DVCS Repos For Fun And Profit, Using “Git Clone” to get Pwn3D

Kategorie K a t e g o r i e : Bezpieczeństwo

Tagi T a g i : , , , , , , , , , , ,

Komentowanie tego wpisu jest zablokowane.