Professional Documents
Culture Documents
ARTIKEL
dan
Disusun oleh :
Halga Tamici
23206013
Pendahuluan
Search engine sekarang sudah merupakan istilah yang sering dipakai oleh para
professional IT. Sistem pencarian data ini telah banyak berkembang selama bertahun-
tahun dan telah banyak membantu para profesional IT dan non-IT untuk melaksanakan
tugasnya. Sistem querying ini membuat penggunaan database semakin luas.
Sekarang sistem database berkembang menjadi tren yg menggunakan isi data yg
tidak terstruktur sebagai database (seperti dokumen yang tersedia pada world wide
web). Walau ini dapat memanggil satu set dokumen yang tersedia pada web dengan
waktu t untuk tiap database, ini juga penting mengetahui beberapa fitur yang membuat
relasional DBMS atau object DBMS atau spatial DBMS yang berguna tersedia pada web.
Kenyataannya, terdapat sangat kecil dukungan untuk indexing dan querying pada web.
Querying web hampir sama dengan menggunakan web search engine (seperti: Alta
Vista, Lycos, Infoseek, Yahoo, dll).
Akhir-akhir ini, terdapat usaha untuk membangun bahasa query untuk query
web. Kebanyakan bahasa ini menggunakan gabungan path query dan content query.
Path query memberikan user ke nol pada bagian spesifik dari web; content query
memberikan user spesifikasi tipe halaman yang ingin untuk mendapatkan jawaban pada
query. Path query ditemukan oleh Shneiderman dan Thomas. Salah satu bahasa query
pertama untuk meng-query web disebut WebLog, merupakan pekerjaan Lakshmanan
dan grupnya. WebLog merupakan bahasa yang berbasis pemograman logika yang
memberikan user untuk menulis query logika dengan gabungan browsing dan querying.
WebSQL
Membangun kontribusi terpenting menjadi WebLog memerlukan usaha yang
lebih. Pada artikel ini akan memfokuskan pada pekerjaan WebSQL, yang dikembangkan
pada University of Toronto oleh Mendelzon dan grupnya. Pendekatan mereka (hampir
mirip dengan usulan Lakshmanan dan grupnya) adalah untuk berfikir seluruh web terdiri
dari 2 hubungan: hubungan dokumen dan hubungan anchor. Perlu diketahui bahwa
kedua hubungan ini sebenarnya bukan gagasan, melainkan abstraksi relasional dari
web. Abstraksi seperti ini membuat query web menggunakan abstraksi relasional
sebagai pernyataan paradigma, dengan dibawah implementasi non relasional.
Ketika mempertimbangkan hubungan dokumen, harus pertama memilih sebuah
skema. Pertama, masukkan attribute yang disebut url, yang memspisifikasi URL dari
halaman web yang diuraikan. Tambahan, identifikasi satu set {p1, ... , pn} dari properties
yang pelihara sejauh halaman web tersebut bersangkutan. Set properties ini dapat
memasukkan field seperti judul (judul field dari halaman web), panjang, dan tipe
(gambar, teks, video, dll).
Hubungan anchor memodelkan konektifitas web. Hubungan ini mempunyai
skema
(Base, Label, HREF)
Demikian, contohnya, tuple...
( http://www.place1.com, itb, http://www.itb.ac.id )
Memberitahukan bahwa halaman web pada http://www.place1.com mempunyai link
berlabelkan “itb” ke halaman web http://www.itb.ac.id.
Kasus SQL
Meng-query web sekarang dapat menggunakan secara langsung dengan
beberapa kontruksi spesial. Asumsi wita ingin mencari semua site yang menyebutkan
“kuliah teknologi informasi di itb”. Untuk melakukannya, dapat membangun query
berikut ini:
SELECT d.url
FROM document d
WHERE d.MENTIONS “kuliah teknologi informasi di itb”
Query ini mengasumsikan adanya predikat spesial boolean yang disebut MENTIONS,
dimana memiliki arti yang berdasarkan intuisi. Ini mudah mengimplementasikan query
ini pada search engine komersial tertinggi pada web.
Sekarang asumsi menginginkan untukmendapatkan query sebelum untuk
mencari semua halaman web yang diatur oleh kampus itb yang menyebutkan “kuliah
teknologi informasi di itb”. Asumsi halaman web utama kampus ini berlokasi pada
http://www.itb.ac.id, dapat mengekspresikan query ini seperti berikut ini:
SELECT d.url
FROM document d SUCH THAT http://www.itb.ac.id Æ D
WHERE d.MENTIONS “kuliah teknologi informasi di itb”
Query ini membuat penggunaan SUCH THAT membangun sehingga dapat membatasi
perhatian ke halaman web yang mempunyai http://www.itb.ac.id sebagai prefix.
Terakhir, asumsi menginginkan mencari semua dokumen pada web yang
berisikan link ke home page “kuliah teknologi informasi di itb”, dimana berlokasi pada
http://www.itb.ac.id. Ini dapat dilakukan dengan sebagai berikut:
SELECT d.url
FROM anchor d
WHERE d.HREF = http://www.itb.ac.id
Ketiga contoh diatas memperlihatkan overview dari WebSQL. Pada hal ini,
WebSQL telah membuat sedikit tetapi penting memulai menuju pengembangan teknik
query web. Ketiga contoh tersebut merupakan pengertian paling sederhana. Namun,
peningkatan presisi hasil tergantung pada proses MENTIONS.
Untuk optimasinya terdapat berbagai kondisi yang dapat dicari pada kalimat
“kuliah teknologi informasi di itb”. Misalkan pencarian dokumen yang memiliki setiap
katanya.
SELECT d.url
FROM document d
WHERE d.content like “kuliah” and d.content like “teknologi” and
d.content like “informasi” and d.content like “di” and
d.content like “itb”
Sehingga hasil yang pencarian mendekati yang diinginkan. Selain itu dapat pula
menggunakan istilah lain dengan maksud yang sama, maka presisi akan semakin baik.
Untuk mempertinggi nilai presisi dapat menggunakan tabel frekuensi. Tabel ini
akan memetakan jumalah kata-kata yang sering muncul atau dominan pada beberapa
dokumen.
Masih terdapat beberapa teknik lain untuk meningkatkan optimasi selain pada
metode data yang dicari. DBMS dapat memperlengkap database pencarian dengan
menggunakan 8-tuple, SMDS-SQL, hybrid multimedia-SQL(HM-SQL), dll.
Referensi:
- Solin, Daniel.Building a Simple Search Engine with PHP. O’Reilly
Artikel pada http://www.onlamp.com
- Subrahmanian. Principles of Multimedia Database Systems. Morgan Kaufman
Publishier
- Halsall, Fred. Multimedia Communications. Addison-Wesley
Masalah "SQL injection" dan Solusinya
Pendahuluan
Setelah banyaknya bug-bug yang bertebaran di internet dari unicode hingga
yang baru-baru ini menggemparkan jagad maya yaitu RPC Dcom, sekarang muncul lagi
satu lubang keamanan yang membahayakan sebuah websites. SQL Injection atau dikenal
juga dengan SQL insertion adalah sebuah teknik yang digunakan untuk mengeksploitasi
database pada suatu websites dengan memaksa keluarnya error page situs itu yang ada
error pages itu terdapat info tentang struktur database website yang dieksploitasi. SQL
sendiri merupakan bahasa pemrograman database yang sering dipakai para web
developer maupun admin sebuah situs untuk menampung ataupun menaruh data-data
baru dari suatu input yang masuk seperti input member login, search engine, dan lain
sebagainya.
Sebenarnya SQL injection sendiri bukanlah hal baru, dari dulu teknik ini sudah
dikenal dalam dunia hacking sebagai salah satu teknik web hacking, namun baru
muncul lagi sekarang karena sifatnya yang dapat merusak database dari suatu situs.
Teknik yang digunakan dalam SQL Injection adalah dengan jalan menginput perintah-
perintah standar dalam SQL (DDL, DML, DCL) seperti CREATE, INSERT, UPDATE, DROP,
ALTER, UNION, SELECT dan perintah-perintah lainnya yang tak asing lagi bagi anda yang
sudah mengenal SQL secara mendalam maupun yang baru saja belajar. Dari berbagai
jenis SQL dari MySQL, PostgreSQL, Nuke SQL, dan MS-SQL, yang paling rentan terhadap
SQL Injection adalah MS-SQL.
Gambar 2. Hasil input string itu membuat kita dapat akses admin
Jadi kalau diuraikan logikanya adalah bahwa SQL-nya menganggap 1=1 sebagai
true sehingga kolom itu di-bypass lalu kolom password-nya diabaikan karena setelah
1=1 terdapat mark SQL ( -- ), sehingga password itupun diabaikan. Lalu apakah hanya
itu string-nya dalam menginjeksi sebuah situs? Tentu saja tidak. Inti dari injeksi dalam
langkah awalnya adalah memaksa keluar sebuah error page yang berisi informasi
struktur database situs itu dan kalau kita ingin melihatnya kita harus men-debug-nya.
Jadi yang kita masukkan adalah string debugging SQL code, yaitu ' having 1=1-- , ini
adalah string yang harus dimasukkan kalau kita ingin melihat error page dari situs
sasaran.
Mencari Target
Situs web MS-SQL dengan ASP adalah situs yang paling rentan terhadap
serangan ini. Jadi bagaimana jika kita ingin mencari target yang menggunakan bahasa
scripting ASP yang dapat kita serang? Seperti biasa buka www.google.com nah, di kolom
keywordnya masukkan allinurl:.co.nz/admin.asp. Keyword ini dapat anda modifikasi ke
berbagai bentuk tapi intinya allinurl: harus dimasukkan karena Google akan mencari
semua URL dalam sebuah situs yang mempunyai direktori /admin.asp.
Bisa saja anda ganti dengan allinurl:.co.id atau net atau org, or.id, sampai
allinurl:.fr/admin.asp semua tergantung kreativitas anda dalam mencari target
menggunakan Google, dan yang terpenting dari semua itu adalah anda harus tahu di
mana harus menginput string SQL tadi, misalnya di member login, user login, dan
bahkan dapat pula di search product.
Setelah itu akan keluar sebuah error page dari situs itu yang memberi informasi
tentang struktur database situs itu. Dari hasil informasi yang kita dapat ini, kita dapat
melakukan serangan berikutnya. Apabila browser kita adalah Internet Explorer, ada
sebagian situs yang tidak menampilkan error-nya, ini dikarenakan opsi Show Friendly
HTTP Error Messages diaktifkan. Untuk itu kita perlu menonaktifkannya dengan cara
menghilangkan tanda centang di kotaknya. Opsi ini dapat anda temukan di Tools >
Internet Option > Advanced cari opsinya di bagian Browsing lalu hilangkan tanda
centangnya dan klik tombol Apply. Sesudah itu apabila anda menemui error page yang
berisi HTTP 500 error - internal server error- sebelum men-set opsi tadi, anda cukup
menekan tombol Refresh, lalu terlihatlah sudah error-nya. Setelah kita tahu struktur
database-nya, dengan pengetahuan dasar dari belajar SQL kita dapat menghancurkan
database itu dengan perintah ' drop database [nama_database] atau drop table
[nama_table], namun bukan ini yang kita cari dalam SQL Injection karena kita tidak
dapat apa-apa dari string tadi.
3. Anda harus mendaftar dulu untuk menjadi anggota supaya bisa mengirim SMS.
Isikan data diri anda; semuanya boleh palsu kecuali nomor handphone. Dalam
contoh ini kita buat userID dengan nama yamakasi. Sebelumnya anda dapat menguji
apakah situs ini memakai SQL. Cara mengujinya dapat pada input box login dengan
string yang telah dibahas di atas.
4. Setelah itu anda klik OK, dan account anda telah terbentuk.
5. Proses penyerangan akan dimulai, anda masuk ke members direktory yang URL-nya
adalah www.yepcell.com/members.asp lalu masukan debuging code ' having 1=1-
di kolom username dan masukan sembarang password di kolom password.
6. Nah, keluar error page-nya, disitu dijelaskan:
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC SQL Server Driver][SQL Server]Column 'YepCell_membersDB.UserID'
is invalid in the select list because it is not contained in an aggregate function and
there is no GROUP BY clause. nah kita tahu bahwa ada table Yepcell_membersDB dan
ada field UserID, ini adalah informasi berharga. untuk itu siapa tahu ada lagi filed
lainnya, jadi kita masukan string ' GROUP BY YepCell_membersDB –
9. Nah, error... Tapi jangan khawatir tidak semua berjalan mulus tapi kita cek sajalah
account kita.
10. Jreeeng... terlihat Credits kita bertambah menjadi seratus.Artinya kita telah sukses
menginjeksi database situs itu dengan perintah SQL dasar tadi dan bukan dengan
cara carding.
Sekarang anda bisa ber-SMS ria sepuasnya. Namun kadang-kadang SMS gateway
situs ini sering down dan bahkan apabila sang admin menemukan keganjilan di
database-nya bisa saja dia men-disable account kita bahkan men-disable
pengiriman SMS ke Indonesia. Hal ini terjadi pada situs www.phunkyphones.net
Apabila anda adalah web admin, semua ini dapat anda hindari dengan men-
disable special character atau wild character di situs anda, dan membatasi input char.
Seperti halnya dengan mempelajari bahasa assembly untuk meng-crack suatu program,
mempelajari SQL tidaklah sulit dan SQL Injection ini dapat meningkatan minat untuk
mempelajari bahasa pemrograman database ini, agar nantinya dapat menghasilkan
sesuatu.
Penutup
Setting server dengan benar memang akan mengamankan e-commerce web dari
serangan deface, tetapi bukan berarti semuanya sudah aman sekarang. Situs e-
commerce yang menggunakan Microsoft IIS juga menggunakan database access dengan
Micosoft SQL server dan dibandingkan dengan SQL server yang lain, MS SQL server
mempunyai kelemahan yang memungkinkan seseorang tanpa account dapat masuk dan
lolos verifikasi dari MS SQL server.. Dari segi kerugian, hal ini lebih serius, sebab bisa
saja data sensitif seperti nomor kartu kredit serta lainnya bocor! Pada saat seseorang
berusaha masuk ke situs e-commerce, biasanya akan disambut dengan halaman login
yang mengharuskan pemakai memasukkan login name dan password.
Setelah pemakai memasukkan username dan password, secara umum SQL akan
melakukan verfikasi terpadap SQL query sebagai berikut:
SQLQuery = "SELECT Username FROM Users
WHERE Username = '" & strUsername & "' AND Password = '" & strPassword & "'“
Kelemahan verifikasi MS SQL disini mirip dengan kelemahan unicode bug, yaitu tetap
memproses (dengan bingung) input-input ilegal pada username dan menghasilkan error
page. Pada error page ini akan terbaca struktur database-nya.
Jadi kalau username-nya diisikan karakter-karakter ilegal seperti misalnya:
‘ OR ‘ ‘=
dan untuk password-nya disikan juga ‘ OR ‘ ‘= maka SQL query akan membacanya
sebagai:
SELECT Username FROM Users WHERE Username = ‘ ‘
OR ‘ ‘=‘ ‘ AND Password = ‘ ‘ OR ‘ ‘=‘ ‘
yang artinya SQL query akan memvalidasi username kosong (blank) dan password
kosong sebagai user yang sah. Keberhasilan SQL Injection ditandai dengan adanya
ODBC error, internal server error, masalah dalam memproses request, syntax error, dan
lain sebagainya.
Untuk mengatasi hal ini, atur agar:
• Hanya karakter tertentu yang boleh diinput.
• Jika terdeteksi adanya illegal character, langsung tolak
permintaan.
Referensi:
- Friedl, Steve. SQL Injection Attacks by Example.
Artikel pada http://unixwiz.net
- Spett, Kevin. SQL Injection White Paper. SPI Dynamics, Inc
- Ismayadi, Andi. Database Hacking: SQL Injection. Neotek vol. IV no. 05
- S’to. Kerawanan pada port 80. Neotek vol. IV no. 05