Berburu Direktori dan File Sensitif dengan DirBuster
Mungkin
anda akan terkejut bila mengetahui bahwa ada banyak website yang
berhasil dihack/dideface hanya karena sebuah kesalahan “konyol”. Tidak
dibutuhkan keahlian programming, SQL atau jurus njelimet lainnya, cuma
membuka sebuah direktori yang berisi file-file sensitif, maka sebuah
website akan bertekuk lutut. Ya benar, ini adalah fakta yang seringkali
terjadi.
Direktori Sensitif
Semua
direktori atau file yang mengandung informasi berguna buat hacker untuk
mendeface website anda, maka direktori itu termasuk sensitif. Beberapa
direktori atau file yang tergolong sensitif antara lain:
- Backup
Hal
yang biasanya dibackup adalah database dan source script webnya.
Bayangkan apa yang terjadi bila hacker berhasil mendapatkan seluruh
file php dan “database dump” dalam satu file zip? Kalau anda berpikir
itu tidak mungkin terjadi, anda salah besar, karena saya sering
menemukan file backup berekstensi zip, tar.gz, atau sql berserakan di
websitenya.
- Halaman Login
Ada
banyak macam halaman login, umumnya adalah halaman login untuk
mengelola isi website, yaitu CMS Administrator. Selain CMS, halaman
login yang lain adalah phpMyAdmin, cpanel, Tomcat Admin Page, AXIS2
Admin Page dll. Tomcat dan AXIS2 adalah Java based webserver dan web
service platform.
Kenapa
halaman login termasuk sensitif? Karena dengan mengetahui URL untuk
menjadi Administrator website, seorang hacker bisa melakukan serangan
SQL Injection, password guessing, dictionary attack dan brute force
attack untuk membuat dirinya menjadi seorang administrator di website
anda. Celakanya banyak website yang halaman login adminnya tidak
menggunakan password yang kuat, bahkan menggunakan password default.
- Log file
Log
file biasanya dipakai untuk tujuan debugging atau penelusuran
kesalahan oleh web developer. Karena itu tidak heran bila dalam log
file banyak mengandung informasi sensitif yang bisa dimanfaatkan
hacker. File log ini berbeda-beda tergantung dari web aplikasi yang
dipakai karena web developer punya kebebasan untuk membuat atau tidak
membuat file log.
Salah
satu contoh log file yang biasa ditemukan di web adalah WS_FTP.LOG,
file ini dibuat oleh program WS_FTP, yaitu FTP Client. Setiap kali
memakai program ini untuk upload ke web anda, WS_FTP akan otomatis
memasukkan file WS_FTP.LOG ke dalam folder website anda. Dalam file
WS_FTP.LOG ini seorang hacker bisa mendapatkan banyak informasi
sensitif: antara lain IP address web server anda (banyak web yang
menyembunyikan IP address sebenarnya dibalik NAT), full path lokasi
document root web anda, username account hosting anda (bila dalam full
path mengandung nama seperti /home/username/…./).
WS_FTP.LOG
juga bisa membocorkan isi sebuah direktori bila anda sudah mematikan
fitur “Directory Indexing” atau membuat file index.html kosong. Seorang
hacker yang tidak bisa melihat isi direktori karena directory index
dimatikan atau ada file index.html kosong, bisa mencoba membuka
WS_FTP.LOG di direktori itu. Bila ternyata file WS_FTP.LOG ada, maka
file log itu akan membocorkan isi file dalam direktori tersebut.
Pesan
error di atas umumnya dijumpai pada direktori yang ada, tapi directory
indexing tidak diaktifkan, sehingga anda harus menebak nama file yang
ada di direktori tersebut. Bila directory indexing diaktifkan, maka
anda akan menemukan halaman dengan title “Index of /”. - Versi Lama
Terkadang
ketika sebuah website diupdate ke versi baru, file-file script lama
disimpan dalam satu direktori bernama oldversion, version1 dan versi
barunya dalam direktori /new/ atau /ver2/ atau /beta/. Menemukan
beragam versi suatu web adalah kesempatan emas untuk menemukan celah
keamanan karena biasanya web versi terbarunya memang tidak mengandung
kelemahan, namun bila kita berhasil menemukan versi lamanya, akan
ditemukan banyak celah keamanan.
Saya
pernah menemukan sebuah website yang securitynya bagus, saya tidak
menemukan vulnerability di sana, namun ternyata dia lupa membuang versi
lama dari web tersebut. Namun ternyata web versi lama yang mengandung
banyak bug dari SQL injection sampai local file injection masih bisa
diakses di direktori lain. Walaupun web versi terbaru securitynya
bagus, namun jadi tidak berarti apa-apa karena hacker bisa menyerang
dari web versi lamanya.
Berburu Direktori dan File Sensitif
Nama direktori atau file bisa ditemukan dengan 2 cara:
- Crawling
Crawling
ini adalah cara yang dipakai oleh search engine untuk mendapatkan isi
website anda. Ini adalah cara yang “sopan”, karena kita hanya mencari
apa yang memang disediakan oleh pemilik webnya. Search engine crawling
akan mengikuti direktori apa yang boleh dan apa yang tidak boleh
diambil dalam file /robots.txt. Jadi bila ada direktori sensitif yang
bisa di-search di Google, maka itu terjadi karena di suatu situs ada
pointer ke obyek itu berupa link. Bila di seluruh jagat internet ini
tidak ada satupun link ke direktori itu, maka tidak mungkin direktori
itu muncul di Google.
Kita
bisa memanfaatkan Google Hacking untuk mencari direktori sensitif
yang sengaja atau tidak sengaja ter-index oleh Google. Kita juga bisa
membuat script atau memakai program semacam wget untuk melakukan
crawling website (tidak memanfaatkan Google index). Menjalankan
crawler sendiri terkadang diperlukan bila kita ingin melakukan crawling
direktori yang search engine dilarang untuk masuk (diblacklist di
/robots.txt).
- Guessing
- Pure Brute Force Attack
- Dictionary Attack
Cara
ini adalah cara yang paling kasar. Kita mencoba semua kemungkinan kata
yang muncul dari huruf , angka dan karakter lain sebagai nama direktori
atau nama file. Contoh: request /aa/, lalu /ab/, lalu /ac/, lalu /ad/,
demikian seterusnya sampai semua kemungkinan yang ada dicoba. Cara ini
membutuhkan waktu yang sangat lama, jadi kurang efektif. Tapi
kelebihannya adalah tidak ada direktori yang lolos, karena semua
kemungkinan akan dicoba.
Ini
adalah cara yang lebih sopan dibanding pure brute force. Kita
menggunakan kamus, yaitu kumpulan nama yang akan kita pakai untuk
request ke web server. Efektif tidaknya cara ini tergantung dari
bagaimana kualitas kamus yang dipakai. Semakin baik kualitas kamusnya,
semakin besar kemungkinan berhasil mendapatkan direktori sensitif.
Kamus yang baik adalah kamus berisi kata yang memang benar-benar pernah
dipakai untuk nama direktori, jadi bukan nama fiktif atau karangan.
Dalam artikel ini saya akan menggunakan tools gratisan, DirBuster
yang dibuat oleh OWASP (Open Web Application Security Project), sebuah
kelompok non-profit yang berfokus pada keamanan web. Seperti yang
sudah saya katakan sebelumnya, kekuatan tools semacam ini tergantung
pada kualtias kamus yang dimilikinya.
DirBuster
memiliki kamus yang sangat lengkap, bukan nama fiktif yang tidak
pernah dipakai, tapi memang benar-benar nama yang pernah dipakai
sebagai nama direktori. Kumpulan nama ini didapatkan dari internet
dengan cara melakukan crawling terhadap situs-situs internet lalu
mengelompokkannya. Kumpulan nama yang dipakai minimal 3 situs berbeda
ditaruh di file dengan akhiran small.txt, kumpulan nama yang dipakai
minimal 2 situs berbeda ditaruh di file dengan akhiran medium.txt, dan
semua nama yang ditemukan ditaruh dalam file berakhiran big.txt.
Bila
anda membutuhkan daftar nama direktori saja untuk dipakai di program
lain, anda juga bisa mendownload kamusnya saja tanpa harus mendownload
DirBuster.
Tools ini sangat mudah digunakan, jadi silakan saja langsung download DirBuster. Sebelumnya pastikan dulu komputer anda sudah terinstall Java, karena tools ini dibuat dengan Java.
Scanning Type
Ada
dua jenis scanning yang bisa dilakukan, pure brute force atau
dictionary based attack. Bila anda memilih memakai teknik pure brute
force, maka anda harus menentukan character set (kumpulan karakter)
yang akan dijadikan nama direktori dan tentukan juga panjang minimal
dan maksimalnya. Semakin besar populasi dari character set yang anda
pilih dan semakin panjang max length yang anda pilih, semakin besar
kumpulan kata yang dihasilkan, itu artinya dibutuhkan waktu yang
semakin lama untuk mencoba semuanya. Gambar di bawah ini adalah
screenshot ketika memilih pure brute force.
Bila
memilih list based brute force, maka kita harus memilih file berisi
daftar nama direktori. DirBuster sudah menyediakan banyak dictionary
yang bisa dipilih sesuai kebutuhan:
- directory-list-2.3-small.txt (87650 words) : Minimal dipakai di 3 situs berbeda.
- directory-list-2.3-medium.txt (220546 words) : Minimal dipakai di 2 situs berbeda.
- directory-list-2.3-big.txt (1273819 words) : Minimal pernah dipakai.
- directory-list-lowercase-2.3-small.txt (81629 words) : Versi case insensitive dari directory-list-2.3-small.txt
- directory-list-lowercase-2.3-medium.txt (207629 words) : Versi case insensitive dari directory-list-2.3-medium.txt
- directory-list-lowercase-2.3-big.txt (1185240 words) : Versi case insensitive dari directory-list-2.3-big.txt
- directory-list-1.0.txt (141694 words) : Daftar awalnya, tidak terurut
- apache-user-enum-1.0.txt (8916 usernames) : Dipakai untuk user enumeration, mendapatkan valid username di sebuah server
- apache-user-enum-2.0.txt (10341 usernames) : Dipakai untuk user enumeration
Dalam
list yang disediakan DirBuster juga menyediakan daftar username yang
dipakai untuk user enumeration, yaitu mendapatkan nama user yang valid
di sebuah server. Dalam web server Apache yang mengaktifkan
mod_userdir, bisa dilakukan user enumeration dengan cara menggunakan
~namauser sebagai nama direktori.
Gambar di bawah ini adalah screenshot ketika kita memilih menggunakan dictionary attack.
Starting Options
Pilihan
lain yang harus dipilih adalah starting options, yaitu di mana titik
mulainya DirBuster mencari direktori. Pilihannya adalah standard start
point, atau URL Fuzz. Standard start point adalah pilihan yang paling
banyak digunakan karena pilihan ini berarti kita meminta DirBuster
untuk menggunakan nama direktori sebagai titik awal.
Pilihan
yang ada ketika kita memilih Standard Start Point adalah checkbox
Brute Force Dirs yang bisa dimatikan bila kita tidak ingin ingin
membrute Direktori. Brute Force Files bisa dimatikan bila kita tidak
ingin mencari file. Dua pilihan tersebut bisa diatur sesuai kebutuhan,
apakah ingin mencari direktori dan nama file, atau direktori saja, atau
nama file saja.
Pilihan
File extention bisa diisi dengan ekstensi file yang ingin dicari,
misalnya bisa kita isi dengan php, zip, gz, tar.gz. Namun bila kita
tidak ingin menggunakan ekstensi, kita bisa centang pilihan Use Blank
Extention.
Pilihan Be
Recursive digunakan untuk membuat DirBuster melakukan pencarian secara
mendalam (Deep First Search), yaitu mencari subdirektori dalam sebuah
direktori, mencari sub-subdirektori dalam subdirektori dan seterusnya
sampai kedalaman tertentu.Ada kalanya kita harus membrute force nama direktori yang merupakan bagian dari parameter URL. Dalam kasus seperti itu kita bisa memakai pilihan URL Fuzz. Salah satu contoh kasusnya adalah ketika kita ingin melakukan scanning melalui sebuah web based proxy seperti PHPProxy
Ketika kita ingin scanning website internal dengan IP address private dari website public yang sudah berhasil kita susupi, kita bisa gunakan PHProxy. URL PHProxy biasanya berbentuk http://somewebsite/myproxy/?q=http://situstarget/{dir}. Dalam kasus seperti ini, pilihan URL Fuzz bisa sangat berguna. Gambar di bawah ini menunjukkan skenario tersebut. Setelah seorang hacker berhasil menguasai web server public, dia akan mengupload web based proxy seperti PHProxy. Dengan proxy tersebut hacker bisa melebarkan serangannya ke arah dalam dengan menyerang web server internal yang tidak bisa dijangkau dari internet.
Walaupun tools ini sangat sederhana, tapi jangan remehkan keampuhannya. Silakan coba saja sendiri, mungkin nanti anda akan terkejut melihat banyaknya webmaster yang sembrono menaruh file/direktori sensitif di websitenya.
Tidak ada komentar:
Posting Komentar