Bambang Nurcahyo Prastowo

Bambang Nurcahyo Prastowo

Tenaga Pendidik di Departemen Ilmu Komputer dan Elektronika FMIPA UGM

Mail: prastowo@ugm.ac.id * Web: http://prastowo.staff.ugm.ac.id
Mobile: +62 811-2514-837 * CV singkat

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_user
sehingga web server yang bersangkutan akan mengirimkan perintah SQL:
SELECT field_password FROM table_user WHERE field_login = 'sembarang'; DROP TABLE table_user
tahu 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 dobel.php yang isinya:

<?
$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.

Cukup lah bisa dikatakan sebagai pendusta, seseorang yang mengatakan semua yang didengarnya (h.r. Muslim)

Kirim Komentar

Nama:
Website:

Ketik 9765 di
  • 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