Sekitar akhir Mei 2010 lalu, SpyroZone mendapati banyak halaman website Pemerintah Kabupaten Sidoarjo (www.sidoarjokab.go.id) yang menampilkan pesan deface. Celahnya sendiri sudah ada sejak awal 2007. Saat itu sidoarjokab.go.id menggunakan jasa Solusindo Hosting sebelum beralih ke PT. Data Utama Dinamika. Salah satu celah pada website ini sudah banyak dibicarakan di forum-forum underground (meski “hanya” sekedar info untuk melihat /etc/passwd) sejak awal tahun 2009. Yang membuat SpyroZone lebih prihatin, belum ada tindakan dari Administrator untuk melakukan perbaikan.
SpyroZone kemudian memulai explorasi mencari jalan termudah bagi Attacker untuk masuk, celah-celah apa saja yang ada pada website tersebut, lalu melaporkannya kepada Admin dengan meninggalkan solusi pada file yang vulnerable di server Pemerintah Kabupaten Sidoarjo.
Beberapa solusi yang
SpyroZone sarankan telah diimplementasikan walaupun belum menyeluruh. Berikut catatan perjalanan
SpyroZone dalam mencari celah pada website Pemerintah Kabupaten Sidoarjo yang dimanfaatkan oleh Attacker untuk melakukan pengrusakan dan menanam backdoor. Selamat menikmati
DEFACED by…
Semua pesan deface yang SpyroZone jumpai meninggalkan nama dan alamat website yang sama. Berikut ini adalah salah satu tampilan halaman website Pemerintah Kabupaten Sidoarjo yang diubah tampilannya oleh Attacker:
Pesan deface pada website Pemkab. Sidoarjo yang ditinggalkan Attacker
Ada total 74 halaman yang diubah tampilannya oleh Jester:
- http://www.sidoarjokab.go.id/domain/perpus/daftar_buku/buku_2006/index.php
- http://www.sidoarjokab.go.id/ekonom/sembako/index.php
- http://www.sidoarjokab.go.id/interaktif/agenda/index.php
- http://www.sidoarjokab.go.id/interaktif/guestbook/harian/index.php
- http://www.sidoarjokab.go.id/interaktif/guestbook/harian/index2.php
- http://www.sidoarjokab.go.id/interaktif/guestbook/harian/indexi.php
- http://www.sidoarjokab.go.id/interaktif/guestbook/index.php
- http://www.sidoarjokab.go.id/interaktif/new/index.htm
- http://www.sidoarjokab.go.id/interaktif/new/index.php
- http://www.sidoarjokab.go.id/interaktif/new/index-news.php
- http://www.sidoarjokab.go.id/interaktif/poling/index.php
- http://www.sidoarjokab.go.id/other/baz/main.php
- http://www.sidoarjokab.go.id/other/baz/main-bgBAZ2008.html
- http://www.sidoarjokab.go.id/other/BlockGrand/default-menus.htm
- http://www.sidoarjokab.go.id/other/BlockGrand/index-main.htm
- http://www.sidoarjokab.go.id/other/dekranas/guest/index.php
- http://www.sidoarjokab.go.id/other/warintek/index-.php
- http://www.sidoarjokab.go.id/sub/bagianap/indexing.htm
- http://www.sidoarjokab.go.id/sub/bkd/Berita/index.php
- http://www.sidoarjokab.go.id/sub/bkd/Berita/index_asli.php
- http://www.sidoarjokab.go.id/sub/bkd/Berita/index2.php
- http://www.sidoarjokab.go.id/sub/bkd/Berita/templates/index.htm
- http://www.sidoarjokab.go.id/sub/bkd/Berita/templates/main_access_denied.html
- http://www.sidoarjokab.go.id/sub/bkd/Berita/templates/main_footer.html
- http://www.sidoarjokab.go.id/sub/bkd/Berita/templates/main_footer2.html
- http://www.sidoarjokab.go.id/sub/bkd/Berita/templates/main_forumgroup.html
- http://www.sidoarjokab.go.id/sub/bkd/Berita/templates/main_forums.html
- http://www.sidoarjokab.go.id/sub/bkd/Berita/templates/main_forums_cell.html
- http://www.sidoarjokab.go.id/sub/bkd/Berita/templates/main_forums_list.html
- http://www.sidoarjokab.go.id/sub/bkd/Berita/templates/main_header.html
- http://www.sidoarjokab.go.id/sub/bkd/Berita/templates/main_last_discuss_cell.html
- http://www.sidoarjokab.go.id/sub/bkd/Berita/templates/main_last_discussions.html
- http://www.sidoarjokab.go.id/sub/bkd/Berita/templates/main_post_area.html
- http://www.sidoarjokab.go.id/sub/bkd/Berita/templates/main_post_closed.html
- http://www.sidoarjokab.go.id/sub/bkd/Berita/templates/main_post_form.html
- http://www.sidoarjokab.go.id/sub/bkd/Berita/templates/main_posthold.html
- http://www.sidoarjokab.go.id/sub/bkd/Berita/templates/main_posts.html
- http://www.sidoarjokab.go.id/sub/bkd/Berita/templates/main_posts_cell.html
- http://www.sidoarjokab.go.id/sub/bkd/Berita/templates/main_topics.html
- http://www.sidoarjokab.go.id/sub/bkd/Berita/templates/main_topics_cell.html
- http://www.sidoarjokab.go.id/sub/bkd/Berita/templates/main_topics_write.html
- http://www.sidoarjokab.go.id/sub/bkd/Berita/templates/main_user_info.html
- http://www.sidoarjokab.go.id/sub/bkd/Berita/templates/main_user_info_cell.html
- http://www.sidoarjokab.go.id/sub/bkd/Berita/templates/main_warning.html
- http://www.sidoarjokab.go.id/sub/bkd/forum/index2.php
- http://www.sidoarjokab.go.id/sub/bkd/forum/templates/main_access_denied.html
- http://www.sidoarjokab.go.id/sub/bkd/forum/templates/main_footer.html
- http://www.sidoarjokab.go.id/sub/bkd/forum/templates/main_footer2.html
- http://www.sidoarjokab.go.id/sub/bkd/forum/templates/main_forumgroup.html
- http://www.sidoarjokab.go.id/sub/bkd/forum/templates/main_forums.html
- http://www.sidoarjokab.go.id/sub/bkd/forum/templates/main_forums_cell.html
- http://www.sidoarjokab.go.id/sub/bkd/forum/templates/main_forums_list.html
- http://www.sidoarjokab.go.id/sub/bkd/forum/templates/main_header.html
- http://www.sidoarjokab.go.id/sub/bkd/forum/templates/main_last_discuss_cell.html
- http://www.sidoarjokab.go.id/sub/bkd/forum/templates/main_last_discussions.html
- http://www.sidoarjokab.go.id/sub/bkd/forum/templates/main_post_area.html
- http://www.sidoarjokab.go.id/sub/bkd/forum/templates/main_post_closed.html
- http://www.sidoarjokab.go.id/sub/bkd/forum/templates/main_post_form.html
- http://www.sidoarjokab.go.id/sub/bkd/forum/templates/main_posthold.html
- http://www.sidoarjokab.go.id/sub/bkd/forum/templates/main_posts.html
- http://www.sidoarjokab.go.id/sub/bkd/forum/templates/main_posts_cell.html
- http://www.sidoarjokab.go.id/sub/bkd/forum/templates/main_topics.html
- http://www.sidoarjokab.go.id/sub/bkd/forum/templates/main_topics_cell.html
- http://www.sidoarjokab.go.id/sub/bkd/forum/templates/main_user_info.html
- http://www.sidoarjokab.go.id/sub/bkd/forum/templates/main_user_info_cell.html
- http://www.sidoarjokab.go.id/sub/bkd/forum/templates/main_warning.html
- http://www.sidoarjokab.go.id/sub/candi/default.htm
- http://www.sidoarjokab.go.id/sub/gedangan/default.htm
- http://www.sidoarjokab.go.id/sub/index.php
- http://www.sidoarjokab.go.id/sub/krian/index.html
- http://www.sidoarjokab.go.id/sub/main.php
- http://www.sidoarjokab.go.id/sub/prambon/default.htm
- http://www.sidoarjokab.go.id/sub/rsd/index.php
- http://www.sidoarjokab.go.id/sub/tulangan/default.htm
Hingga kini halaman tersebut belum dibenahi oleh Admin. Mengenai defacernya sendiri, banyak yang menyebut si Jester & Ghost61 ini berasal dari Turki (http://www.google.co.id/search?q=Ghost61+Jester).
Bagaimana cara mereka masuk? dimana letak celah keamanannya? tidak usah tanya si Jester, Ghost 61, apalagi tanya Galileo, cukup lanjutkan membaca artikel ini
HTML Injection
Celah pertama yang SpyroZone bahas ini pasti sudah sering Anda temui. Target exploitasi celah ini adalah layanan Buku Tamu sidoarjokab.go.id. SpyroZone memasukkan code HTML berupa tag
pada form Buku Tamu:
Injeksi code HTML pada Buku Tamu
Hasilnya, input SpyroZone tidak disanitasi sehingga identitas dan komentar SpyroZone tampil dalam ukuran heading 1:
Hasil Injeksi code HTML pada Buku Tamu
SpyroZone kemudian mencoba memasukkan code JavaScript pada Buku Tamu:
Injeksi code JavaScript pada Buku Tamu
Dan ternyata, code JavaScript SpyroZone dieksekusi:
Hasil Injeksi code JavaScript pada Buku Tamu
Bisa Anda bayangkan jika ada orang jahat yang menanam code JavaScript berbahaya yang dapat mencuri informasi sensitif user (cookies, csrf, etc..) di halaman ini. Dari sini kita bisa melihat adanya 2 celah keamanan pada Buku Tamu: Tidak ada captha untuk melindungi buku tamu dari SPAMMER;
Tidak adanya sanitasi input dan output untuk mencegah orang jahat menginjeksikan malicious script;
LOCAL File Inclussion (LFI)
SpyroZone memulai mencari kelemahan lain yang lebih serius. SpyroZone menjumpai pemandangan menarik pada struktur URL website Pemerintah kabupaten Sidoarjo. Perhatikan struktur URL halaman “Informasi Kabupaten Sidoarjo” berikut:
http://www.sidoarjokab.go.id/main.php?content=selayang/geografis.html
Struktur URL Website Pemerintah Kabupaten Sidoarjo
main.php melewatkan path menuju file geografis.html yang terletak pada folder selayang/ melalui parameter content. Kira-kira difilter nggak yach parameternya? atau semua yang dimasukkan melalui parameter content ditangkap dan diinclude apa adanya? SpyroZone mencoba melakukan include file /etc/passwd dengan memasukkan ../../../../../../../../../etc/paswd pada parameter content:
http://www.sidoarjokab.go.id/main.php?content=/etc/paswd
http://www.sidoarjokab.go.id/main.php?content=../../../../../../../../../etc/paswd
Dan hasilnya..
Meng-include /etc/passwd melalui parameter content
Sesuai dengan yang
SpyroZone harapkan
Isi file /etc/passwd yang berisi daftar user pada server ditampilkan pada area content ^^” Dari hasil penelusuran
SpyroZone, ada7 file yang memiliki celah ini:
- http://www.sidoarjokab.go.id/main.php?content=[evil code]
- http://www.sidoarjokab.go.id/domain/dishub/index.php?content=[evil code]
- http://www.sidoarjokab.go.id/other/SdaAngka/index.php?data=[evil code]
- http://perijinan.sidoarjokab.go.id/main-content.php?load=[evil code]
- http://www.sidoarjokab.go.id/other/p3a/index.php?lok=[evil code]
- http://www.sidoarjokab.go.id/other/baz/index.php?content=[evil code]
- http://www.sidoarjokab.go.id/other/warintek/index.php?cont=[evil code]
Lalu sekarang bagaimana? apa yang bisa kita lakukan dengan daftar user tersebut? Kita inject dengan shell sederhana yang digenerate melalui error log? atau.. bagimana?
Sudahlah, biarkan saja dulu. Mari kita tinggalkan celah ini dan mencari celah keamanan lain yang lebih menarik
INSUFFICIENT Authentication
SpyroZone menelusuri setiap halaman web sidoarjokab.go.id untuk mencari struktur URL menarik lainnya. Kali ini SpyroZone mengamati struktur URL berita:
Struktur URL berita sidoarjokab.go.id
Ada lokasi yang menarik perhatian SpyroZone disana, yaitu directory /inter/ dan directory /inter/news/. Ada apa di kedua lokasi tersebut? SpyroZone memulai dengan mengunjungi directory paling ujung, yaitu /inter/news/
File-file "mencurigakan"
SpyroZone langsung disuguhi daftar file yang mengundang rasa penasaran
SpyroZone —>
idih.. dari tadi isinya penasaran melulu ya.. ^^” Hmm.. kira-kira apa yach yang tampil kalau
SpyroZone akses file-file tersebut..? Coba aja ah..
SpyroZone mencoba mengakses file
frm-vers_child.php Form untuk input berita tidak dilindungi session
Wew!
SpyroZone merasa sangat bahagia saat menyadari bahwa file tersebut adalah form untuk menginputkan berita dan tidak dilindungi dengan session
Yang lebih menyenangkan lagi, ada fasilitas file upload yang sepertinya tidak difilter
Untuk memastikan dugaan
SpyroZone ,
SpyroZone mengupload Web Shell menggunakan fasilitas file upload tersebut. Setelah proses upload selesai,
SpyroZone memeriksa folder
upload/Web Shell berhasil diupload
YEY!!! file
SpyroZone berhasil diupload!
tuch, ada
spyrozone.net.php Dengan semangat 45,
SpyroZone memanggil file tersebut:
Web Shell gagal dijalankan
Yaah… gagal nich… T_T
Tapi.. Tunggu dulu…!
SpyroZone teringat dengan celah LFI yang sudah ditemukan tadi
SpyroZone mencoba memanggil spyrozone.net.php dengan memanfaatkancelah LFI tadi:
Memanfaatkan LFI untuk menjalankan Web Shell
Yey! Web Shell
SpyroZone tampil dengan indahnya
Sekarang,
SpyroZone bisa menjelajahi webserver dan menjalankan perintah-perintah shell melalui Web Shell. Biasanya, attacker hanya memiliki kendali penuh atas suatu file pada directory yang memiliki file permission 777 saja. namun dalam kasus ini, kesalahan konfigurasi pada server menyebabkan attacker dengan mudah bisa melakukan pembuatan file baru, edit, dan menghapus file apapun yang diinginkan
Setelah melakukan penelusuran kembali, SpyroZone menemukan lokasi lain yang bisa dijadikan sebagai jalan bagi attacker untuk menanam web shell:
http://www.sidoarjokab.go.id/sub/bappeda/files/index.php
File Explorer
SpyroZone menemukan file explorer lengkap dengan fungsi crete directory, upload file, delete dan download. Kemungkinan besar file ini ditujukan bagi pengelola area download BAPPEDA. namun, seperti yang Anda lihat, halaman ini tidak dilindungi dengan session sehingga memungkinkan orang jahat untuk menanam web shell.
UNENCRYPTED stored password
SpyroZone mendapati file konfigurasi koneksi database terletak pada directory inter/config.inc
File konfigurasi koneksi database
Setelah melihat isi file tersebut menggunakan perintah
cat,
SpyroZone kemudian mengintip tabel yang berisi username dan password pengelola CMS. Ternyata, Admin membiarkan password-password tersebut “telanjang” —>
idih.. lagi-lagi kata-kata favorit Anda muncul Daftar username dan password pengguna CMS
Kini SpyroZone bisa masuk ke halaman Administrator dengan akun yang SpyroZone dapatkan:
Halaman Administrator sidoarjokab.go.id
Btw.. karena file koneksi databasenya disimpan dalam extensi .inc, SpyroZone jadi penasaran. Kira-kira, apakah akses menuju file .inc melalui browser sudah dicegah? SpyroZone mencoba mengakses file config.inc melalui browser:
Akses terhadap file .inc melalui browser
Wah.. lagi-lagi celah keamanan. File config.inc menampilkan isi file apa adanya. Siapapun yang mengakses file tersebut bisa melihat username, password dan nama database website sidoarjokab.go.id
INSECURE Web Host
Pemerintah Kabupaten Sidoarjo menggunakan jasa web hosting dari PT. Data Utama Dinamika.
SpyroZone agak terdiam saat mengakses halaman /administrator/ website perusahaan tersebut:
http://www.datautama.net.id/administrator/
Bukan form login yang
SpyroZone hadapi, tapi sebuah halaman yang berisi pesan Deface
Pesan Deface pada Website PT. Data Utama Dinamika
Wah, pesan Defacenya sama persis dengan pesan Deface pada Website Pemerintah kabupaten Sidoarjo. Pesan-pesan Deface lainnya ada di setiap sub directory website tersebut.
SpyroZone menelusuri directory-directory yang ada pada Robots.txt datautama.net.id
User-agent: *
Disallow: /administrator/
Disallow: /cache/
Disallow: /components/
Disallow: /editor/
Disallow: /help/
Disallow: /images/
Disallow: /includes/
Disallow: /language/
Disallow: /mambots/
Disallow: /media/
Disallow: /modules/
Disallow: /templates/
Disallow: /installation/
Sepertinya sebelum beralih ke Flash, Data Utama Dinamika menggunakan Joomla
Dari sini
SpyroZone mulai punya dugaan lain. Jangan-jangan si Jester & Ghost61 ini mengambil alih webserver PT. Data Utama Dinamika terlebih dahulu sebelum memasuki portal sidoarjokab.go.id
Hmm.. entahlah, yang jelas, ini bisa menjadi kabar baik bagi Si Pembuat CMS
Ternyata Anda bukan satu-satunya orang yang lalai dalam kasus ini ^^” penyedia hostingnya ajah sudah dimasuki Attacker, jadi wajar jika client-clientnya mengalami nasib serupa ^^”
Solusi
Sambil menunggu Admin melakukan perbaikan pada sistem mereka, SpyroZone mencoba membantu Admin untuk menutup beberapa celah keamanan yang telah SpyroZone bahas. Mudah-mudahan bisa mempersingkat kerja Administrator dalam melakukan pemeriksaan menyeluruh terhadap sistem mereka.
1. Mencegah HTML Injection
Sanitasi untuk mencegah HTML Injection bisa dilakukan pada input maupun output, atau pada keduanya agar lebih aman. Kali ini
SpyroZone langsung memberi solusi pada output buku tamu saja. Berikut adalah potongan code asli Buku Tamu sidoarjokab.go.id
01 | while ( $rv_guest = mysql_fetch_array( $qv_guest )) {?>
|
02 | |
"21%" valign= "top" >Nama | "2%" valign= "top" >: | "77%" > |
Terlihat pada baris ke 3,5,7,9,11,13, semua informasi ditampilkan apa adanya.
SpyroZone menambahkan
htmlspecialchars() pada code tersebut sehingga menjadi demikian:
01 | while ( $rv_guest = mysql_fetch_array( $qv_guest )) {?>
|
02 |
|
"21%" valign= "top" >Nama | "2%" valign= "top" >: | "77%" > |
03 | $rv_guest [1],ENT_QUOTES)?>
|
05 | $rv_guest [0],ENT_QUOTES))?>
|
07 | $rv_guest [2],ENT_QUOTES)?>
|
09 | $rv_guest [3],ENT_QUOTES)?>
|
11 | $rv_guest [4],ENT_QUOTES)?>
|
13 | nl2br (htmlspecialchars( $rv_guest [5],ENT_QUOTES))?>
|
Kini, jika ada orang iseng yang mencoba menginjeksikan script berbahaya, maka script tersebut akan tampil apa adanya:
Halaman buku tamu setelah diamankan
2. Sanitasi Input Untuk mencegah LFI
Untuk melindungi Website Pemerintah Kabupaten Sidoarjo,
SpyroZone menyisipkan code yang berfungsi untuk melakukan filtering terhadap nilai yang dilewatkan melalui parameter
content:
07 | $secured_by_spyrokid = $_REQUEST [ "content" ]; |
08 | $up_dir = strrpos ( $secured_by_spyrokid , ".." ); |
10 | $root_dir = substr ( $secured_by_spyrokid , 0,1); |
19 | $content = $secured_by_spyrokid ; |
Filter diatas SpyroZone sesuaikan dengan kondisi website Pemerintah Kabupaten Sidoarjo agar tidak merusak halaman lain. Jika ada Attacker yang mencoba memanipulasi URL untuk memeriksa adanya celah LFI, maka attacker akan dilempar ke halaman utama website Pemerintah Kabupaten Sidoarjo.
3. Mencegah Directory View
Andai saja directory view dinonaktifkan, Attacker mungkin tidak akan pernah tau adanya form input dan edit berita yang tidak diproteksi dengan session. Cara mendisable directory view cukup mudah, yaitu dengan menambahkan code berikut pada .htaccess
IndexIgnore *
Sekarang, Attacker tidak akan bisa melihat adanya file-file sensitif tersebut:
Disable Directory View
4. Mencegah Akses terhadap File .inc
Untuk mencegah akses agar file-file konfigurasi koneksi database yang disimpan pada file .inc diintip oleh orang lain melalui browser, tambahkan code berikut pada .htaccess
Order Allow,Deny
Deny from All
Jika ada orang iseng yang mencoba mengakses file .inc melalui browser, maka akses menuju file tersebut akan ditolak:
Akses terhadap file .inc melalui browser ditolak
5. Enkripsi Informasi Sensitif Pada Database
Jangan menyimpan password user pada database dalam keadaan telanjang tanpa enkripsi. Tujuan dari enkripsi adalah untuk menyembunyikan password sebenarnya agar attacker tidak bisa memanfaatkan password tersebut sekalipun jika suatu ketika isi tabel user bocor.
6. Pintar Memilih Web Hosting
SpyroZone tidak bermaksud menyarankan Pemerintah kabupaten Sidoarjo untuk pindah layanan hosting, lho ^^” Di balik celah-celah keamanan dan kelalaian pada layanan PT. Data Utama Dinamika, perusahaan tersebut pasti memiliki banyak sekali keunggulan
(tapi
SpyroZone kurang tau dimana keunggulannya, karena kebetulan
SpyroZone bukan client mereka ^^)
SpyroZone hanya menyarankan untuk kita semua agar pintar memilih Web Hosting. Percuma bukan jika kita mendapat layanan dengan harga murah dan fitur berlimpah jika perusahaan tersebut memiliki reputasi yang buruk dalam keamanan ^^” Jadikan faktor keamanan sebagai faktor utama sebelum Anda memutuskan untuk mempercayakan data-data penting Anda pada suatu perusahaan
7. Perlindungan Lainnya
PENUTUP
Saat ini, celah-celah yang ada pada pembahasan ini sudah ditutup sesuai dengan solusi yang telah SpyroZone bahas. besar kemungkinan masih banyak celah lain pada portal Pemkab Sidoarjo yang belum masuk pada pembahasan SpyroZone. Anda menemukan celah baru? silahkan mengirimkan celah baru yang Anda temukan ke email SpyroZone. SpyroZone akan menambahkan celah keamanan tersebut pada artikel ini
beserta solusi untuk Administrator dengan mencantumkan kredit kepada Anda
Source : http://www.spyrozone.net
No comments:
Post a Comment