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 SensitifSemua 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.
- 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.
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
Setelah membaca artikel di atas.
Apa komentar anda ??