Git adalah sistem kontrol versi terdistribusi sumber terbuka yang paling populer. Jika Anda atau organisasi Anda menggunakan git untuk kode atau repositori, Anda harus mempertimbangkan paparan folder .git mungkin berisiko terhadap aset Anda. Beberapa situs web menghosting repositori kontrol versi mereka (misalnya, .git/ ) dalam produksi. Peretas dapat menggunakan alat untuk mengunduh/memulihkan repositori untuk mendapatkan akses ke kode sumber situs web Anda.
Apa itu folder .git?
Folder .git adalah tempat git menyimpan semua metadatanya. Folder ini berisi informasi tentang semua komit, cabang, file, dan semua yang terkait dengan repositori git Anda.
Git adalah penyimpanan data nilai kunci sederhana. Direktori .git terlihat seperti ini:
config
description
HEAD
index
hooks/
info/
logs/
objects/
refs/
Sebagai seorang peretas, mengapa Anda harus mengetahui folder git yang terbuka? Eksposur .git dapat membayar dengan baik atau tidak, tergantung pada aset yang ditemukan. Tapi tetap menarik karena:
- Menganalisis kode sumber dapat mengungkap kerentanan lain yang lebih kritis.
- Siapa pun dapat menggunakan kode sumber Anda untuk niat jahat, menyebabkan kerugian finansial/reputasi Anda
- Menemukan file yang berisi informasi sensitif seperti kredensial, token, titik akhir baru, dll
- Mudah dideteksi :P
Folder .git terbuka
Untuk memeriksa apakah folder .git aplikasi terbuka, buka direktori root, project.com , dan tambahkan /.git ke URL. Itu dapat menghasilkan hasil ini:
- 404 Kesalahan: Ini berarti direktori .git aplikasi tidak tersedia untuk umum.
- Kesalahan 403: Direktori .git tersedia di server, tetapi Anda tidak dapat mengakses root folder secara langsung.
- Tanpa Kesalahan: Server merespons dengan pohon dokumen dari direktori .git, dan Anda dapat langsung menelusuri konten folder dan mengambil informasi apa pun.
Jika folder .git terbuka, Anda dapat dengan mudah mengakses konfigurasi yang akan terlihat seperti ini:
Token Akses Pribadi GitHub
Mulai 13 November 2020, GitHub tidak lagi menerima kata sandi akun saat mengautentikasi dengan REST API dan akan memerlukan autentikasi berbasis token (misalnya, akses pribadi, OAuth, atau token pemasangan Aplikasi GitHub) untuk semua operasi API yang diautentikasi di GitHub.com.
Perubahan ini telah memengaruhi akses git baris perintah reguler, dan pengembang harus mengonfigurasi klien GIT lokal dengan nama pengguna dan PAT (Personal Access Tokens / Token Akses Pribadi).
Cara yang tepat untuk mengonfigurasi adalah menggunakan Git Credential Manager dengan perintah berikut:
git config — global credential.helper store
Tapi satu cara mudah untuk menangani konfigurasi adalah menambahkan nama pengguna dan token dengan URL repositori menggunakan perintah ini:
git remote set-url origin https://<USERNAME>:<MYTOKEN>@github.com/username/project.git
Exploitasi
Produk memiliki folder .git mereka diekspos dari server API backend mereka yang juga konfigurasi PAT-nya dilakukan dengan salah mengekspos token sensitif.
Saya membuat folder git kosong secara lokal dan menyalin konfigurasi ke dalamnya. Sebuah `git pull` sederhana mengambil semua cabang dan kode. Repositori bersifat pribadi dan mengambil semua kode dan cabangnya, termasuk cabang produksi, merupakan kerentanan yang parah.
Bagaimana cara memperbaiki Kerentanan Paparan Kode Sumber .git?
Untuk memperbaiki kerentanan ini, hapus folder git dari server web Anda atau pastikan Anda menolak semua akses ke folder .git
Apache
<DirectoryMatch “^/.*/\.git/”>
Order deny,allow
Deny from all
</DirectoryMatch>
Nginx
Tambahkan ini di entri pertama di server-block Anda di file nginx.conf.
location ~ /.git/ {
deny all;
}
Lighttpd
Tambahkan ini ke lighttpd.conf.
server.modules += ( "mod_access" )
Setelah itu, kita dapat memblokir akses ke .git folder tersebut
$HTTP["url"] =~ "^/\.git/" {
url.access-deny = ("")
}
Saya harap artikel ini bermanfaat bagi Anda!