Pengamanan Program Interpretif
Yang saya maksud dengan program interpretif adalah program yang ditulis dengan plaintext atau memuat plaintext yang dieksekusi dengan interpreter pada saat dijalankan. Program-program semacam ini banyak dijumpai di Internet/intranet dalam bentuk program skrip baik yang dijalankan di server (perl cgi, PHP, dsb.) maupun di client/browser (Java Script). Selain itu kita juga banyak menjumpai script programming untuk berbagai aplikasi sistem operasi seperti berbagai tool konfigurasi. Berikut ini adalah ulasan pendek mengenai pemahaman dasar pengamanan program dengan mencari kesamanan pola berbagai lubang keamanan yang pernah dilaporkan. Harapan saya dengan memahami kesamanan pola lubang-ubang keamanan itu kita bisa lebih waspada sehingga permasalahan keamanan akak semakin jarang ditemui.
Dua masalah keamanan sistem program interpretif yang sudah cukup difahami namun masih sering ditemui adalah cross site scripting (XSS) dan sql injection (SI). Silakan search ke Internet kedua istilah tersebut dan coba fahami dari beberapa artikel yang muncul (kita bisa temui banyak sekali artikel yang membahas berbagai skenario dari XSS dan SI serta panduan untuk mengatasinya. Penjelasan yang menurut saya paling mudah difahami adalah yang tertulis di wikipedia. CERT mengemasnya dalam bentuk laporan formal.
Cross Site Scripting
XSS memanfaatkan berbagai form yang disediakan sistem untuk memasukkan teks ke dalam database website yang bersangkutan. Pada saat teks tersebut terakses pegunjung yang lain dalam bentuk isian buku tamu atau forum misalnya, maka bila pengembang situs tidak melakukan validasi teks yang masuk database, perlikalu tampilan bisa dikendalikan oleh sipengisi data dengan menyisipkan program pengendali tampilan sebagaimana yang biasa kita lakukan dengan Java Script atau tag Style. Contoh sederhana, coba masukkan isian
<script>alert('percobaan xss');</script>ke isian buku tamu di website sendiri atau milik teman. Bila saat diakses muncul window alter dengan pesan tersebut maka bisa dipastikan website tersebut tidak terlindungi dari serangan XSS.
SQL Injection
Cracker menggunakan SQL Injection untuk menyisipkan perintah SQL melalui isian form yang digunakan untuk menyusun perintah SQL seperti login form. Contoh sederhananya untuk validasi login kita menyusun perintah perintah SQL semisal dengan PHP atau Perl:
"SELECT field_password FROM table_user WHERE field_login = '$var_login'"Apabila tidak dilakukan validasi string isian, maka kita bisa memasukkan string:
sembarang' ; DROP TABLE table_usersehingga web server yang bersangkutan akan mengirimkan perintah SQL:
SELECT field_password FROM table_user WHERE field_login = 'sembarang'; DROP TABLE table_usertahu sendiri kan apa yang bakal terjadi bila perintah itu dijalankan server database yang bersangkutan? Banyak sekali contoh-contoh "siap pakai" yang dipaparkan di Internet untuk kita dicoba di website percobaan kita sendiri. Jangan sekali-kali mencobanya ke website orang lain. Akibatnya bisa fatal. Dalam contoh di atas, pengelola server bisa kehilangan tabel user secara keseluruhan. Sampai saat ini masih banyak situs web yang belum melakukan perbaikan sehubungan dengan masalah ini. Di website ini saya sesekali masih menemukan isia ke shoutbox, diskusi atau komentar yang memuat potongan perintah sql tersebut; selain sudah ada pengecekan entry ala kadarnya (antara lain dengan filter strip_tag), upaya sql injection tidak akan ada pengaruhnya karema kebetulan website ini tidak menggunakan server basis data sql.
Analisa XSS dan SI
Adakah kesamanan serangan XSS dan SI? Apabila belum sempat membaca keterangan di bawah ini, coba berhenti baca dan renungkan kembali penjelasan singkat tentang XSS dan SI. Pikirkan apa yang mendasari keberadaan lubang-ubang keamanan tesebut. Dalam banyak hal saya sering berpikir bahwa permasalah yang dihadapi masyarakat pengguna teknologi informasi dan komunikasi seperti virus, dan berbagai masalah keamanan lain muncul dari "keserakahan" pengembangan TIK itu sendiri ibarat banjir bandang yang diakibatkan oleh peningkatan kebutuhan pasokan kayu yang pada gilirannya berakibat terjadinya penebangan hutan besar-besaran.
Serangan XSS dan SI bisa terjadi karena "user diberi kesempatan untuk berpartisipasi menentukan eksekusi sistem program yang bersangkutan." Artinya, sistem memungkinkan sebagian atau seluruh isian masukan user untuk dieksekusi sebagai perintah, tidak sekedar masukan data. Fasilitas luarbiasa ini sekaligus membuka peluang besar untuk melakukan serangan terhadap sistem. Pada sistem aplikasi binary murni (hasil kompilasi program tradisionil dalam bahasa FORTRAN, C atau PASCAL), penyimpangan entry seperti pengisian karakter selain angka pada kolom yang isinya diolah sebagai angka biasanya mengakibatkan crash sehingga programmer dipaksa untuk menambahkan modul validasi sehingga alih-alih terjadi crash, sistem menampilkan peringatan adanya kesalahan entry. Bandingkan dengan sistem-sistem yang dibangun dengan lingkungan interpretif saat ini.
Edit file <?
$masukan = $_GET['masukan'];
if($masukan) print "Dobel dari $masukan =". $masukan * 2;
?>
<form>
Masukan <input name=masukan>
<input type=submit value=GO>
</form>
Akses program ini dan buat percobaan dengan memasukkan berbagai macam string mulai angka murni, dengan huruf, dengan karakter khusus seperti titikkoma dan sebagainya, sampai potongan Java Script seperti yang dicontohkan pada bab XSS. Terakhir, coba renungi kemungkinan penyusupan perintah-perintah yang tidak dikehendaki pada sistem-sistem program apapun yang pernah kita kembangkan.
Kirim Komentar
41. obaan dengan memasukkan
obaan dengan memasukkan
20-02-21 02:45
40. adanya kesalahan entry
adanya kesalahan entry
20-02-21 02:44
39. peringatan
peringatan
20-02-21 02:44
38. semua
Cukup lah bisa dikatakan sebagai pendusta, seseorang yang mengatakan semua yang didengarnya (h.r. Muslim)
20-02-21 02:44
37. dicontohkan
semua
20-02-21 02:44
36. members
members ew
20-02-21 02:27
35. start
ok start
20-02-21 02:26
34. viewprofile
viewprofile ok
20-02-21 02:26
33. guidedf
guide asa
20-02-21 02:26
32. guide
guide oke
20-02-21 02:26
31. profile ok
profile okok
20-02-21 02:26
30. semua
semua ok
20-02-21 02:25
29. didengarnya
didengarnya ok
20-02-21 02:25
28. lah bisa
lah bisa
20-02-21 02:25
27. mengatakan
mengatakan ok
20-02-21 02:25
26. seseorang
seseorang as
20-02-21 02:24
25. profiles
profiles le
20-02-21 02:24
24. bisa
bisa ok
20-02-21 02:24
23. wedi
wendy
20-02-21 02:24
22. users
users sse
20-02-21 02:23
21. desktopnexus
desktopnexus se
20-02-21 02:23
20. topi
topine
20-02-21 02:23
19. yang
yang ok
20-02-21 02:23
18. semua
semua ok
20-02-21 02:22
17. lender
lender re
20-02-21 02:16
16. gitlab
gitlab
20-02-21 02:16
15. dicontohkan
asas
20-02-21 02:16
14. producthunt
producthunt
20-02-21 02:15
13. Cukup
Cukup
20-02-21 02:15
12. dicontohkan
dicontohkan
20-02-21 02:12
11. perintah
perintah
20-02-21 02:11
10. karakter
Akses program ini dan buat percobaan dengan memasukkan berbagai macam string mulai angka murni, dengan huruf, dengan karakter khusus seperti titikkoma dan sebagainya, sampai potongan Java Script seperti yang dicontohkan pada bab XSS. Terakhir, coba renungi kemungkinan penyusupan perintah-perintah yang tidak dikehendaki pada sistem-sistem program apapun yang pernah kita kembangkan.
20-02-21 02:11
9. prastowo
Pada prinsipnya, semua bagian input yang isinya akan menjadi bagian dari perintah sql (search, update, atau select) rentan terhadap sqlinjection. Namun demikian, pada umumnya CMS seperti WordPress terus berusaha menjaga agar sistem tidak mudah dijaili. Karena itu, sepanjang menggunakan versi terbaru, sistem akan terjaga dari serangan yang telah diketahui modelnya saat versi terbaru tersebut dibuat.
Untuk maksimum content textarea, coba bereksperimen saja. Pada umumnya tidak pembatasan khusus pada ukuran isi textarea.
17-11-10 10:59
8. tutorial website dasar
assalamkm
newbie mau bertanya nih, sy sk belajar dan menggunakan wordpress dan sharing yg sy tau.
kalo untuk script wordpress, yg paling rentan kena sql inj bagian mana ya..? trs kalo sy pake textarea, amannya berapa maksimal karakter yg boleh masuk?
mungin bro bro disini lebih tau?
salam hangat
17-11-10 09:21
7. LinX
mungkin untuk SI bisa dihindari dengan membatasi karakter yang masuk pada querynya pak, entah itu tanda ' - + dll
01-03-10 07:21
6. aat
Saya Mau Mengisi Website Saya Bagaimana Caranya ya?
20-07-08 08:35
5. www
10-06-08 10:25
4. test
cuma iseng
22-02-08 05:23
3. HACKED BY BOLEHDITERAWANG [XtraCT]
HACKED BY BOLEHDITERAWANG XtraCT
19-11-07 11:14
2. arwan
ga juga, bisa juga karena bug pada coding yang bisa dimanfaatkan untuk mendapatkan akses root...
meskipun begitu diperlukan suatu pengetahuan pemrograman maupun kemampuan reverse engineering yang lumayan... (ky mo bikin crack an aje... ;P)
i think..
12-06-07 01:36
1. Prastowo
Saya baru membaca beberapa artikel dari Internet tentang buffer overflow. Ternyata hakekatnya sama yakni user dapat memasukkan program sendiri untuk dieksekusi oleh server. Masalah lebih ruwet dari yang interpretif karena pada buffer overflow melibatkan pengetahuan mendalam tentang arsitektur dan sistem operasi komputer yang diserang.
15-04-07 12:09
Powered by Waton CMS. Semua tulisan dan image yang ada di homepage ini adalah tanggung jawab Bambang Nurcahyo Prastowo kecuali: (a) diubah oleh pihak yang tidak bertanggung jawab, (b) secara eksplisit disebutkan rujukan sumber luarnya, atau (c) komentar, tanggapan dari pembaca.