LaGiPusHinGWitH ---- IT
Navigation
Home |
Categories
Monthly Archives
- September 2010
- October 2009
- December 2008
- November 2008
- October 2008
- September 2008
- July 2008
- May 2008
- March 2008
- December 2007
- October 2007
- September 2007
- August 2007
Most recent entries
- Create Oracle Tablespace on SAP with BRTools
- Audit on Oracle Database
- Membuat Oracle Data Guard
- Cerita Tentang Kamu
- Membuat ulang/re-create controlfile di oracle
- Membuat RMAN dengan crontab
- Saat kau hadir kembali
- Memindahkan controlfile dan redologfile pada Oracle
- Oracle Dataguard on Standart Edition
- Adakah aku dihatimu
- Instalasi 10g di HP-UX Itanium
- Instalasi OpenOffice di Slackware 12
- Syncronize archive log
- Merubah ukuran archived Log
- Alter Block Size for tablespace
Syndicate
Site Credits
Powered by:
ExpressionEngine
Design by:
BlogMoxie
----// Pengantar
HTML injection, script injection atau apapun istilahnya dari teknik hacking klasik dengan metode memasukkan kode-kode
HTML maupun JavaScript kedalam field input suatu web based application memiliki potensi merusak yang cukup besar
apabila tidak ditangani dengan baik...bagi programmer pemula yang tidak banyak mengetahui fungsi-fungsi yang ada tentu
akan menjadi masalah yang cukup menyusahkan. Disini saya mengambil contoh penggunaan dengan PHP programming, banyak
disediakan fungsi-fungsi untuk mengatasi hal tersebut...misalnya :
* strip_tags, mysql_escape_string, htmlentities dll
* menerapkan aturan regular expresion -> preg_match, ereg, ereg_replace
----// Potensi Kerusakan
Kerusakan yang dapat terjadi sangatlah berbahaya apabila seorang penyerang mengetahui kelemahan dari sanitasi input
pada aplikasi web kita, misalnya dengan memasukkan kode-kode HTML dan JavaScript seorang penyerang dapat merubah
tampilan dari aplikasi kita ataupun mendirect halaman dari aplikasi kita ke alamat penyerang dan berbagai macam
bentuk potensi merusak lainnya.
----// Kelemahan selain HTML injection
Permasalahan lainnya dari sanitasi input adalah penanganan terhadap input dari user berupa karakter tanpa spasi, dengan
memasukkan karakter tanpa spasi dalam jumlah yang besar akan menyebabkan rusaknya tampilan aplikasi web kita...tentu
hal ini sangat menyebalkan dan kita tidak menginginkan itu terjadi bukan?? smile dan terkadang saya juga ingin sedikit
membalas tindakan mereka wink
Setelah kita melakukan sanitasi terhadap kode-kode html maka diperlukan juga sanitasi terhadap input karakter
tanpa spasi yang dapat merusak tampilan website kita, sekaligus untuk sedikit memberi pelajaran pada siiseng..
kita buat browser dia untuk looping sebanyak2nya...OK
----// POC (Proof Of Concept)
Disini kita akan membuat sebuah fungsi yang akan digunakan untuk men-sanitasi string yang dimasukkan oleh user, apabila
string tidak bermasalah/mengandung kode-kode dan maksud yang tidak baik maka data akan diinput kedalam database aplikasi
kita sedangkan jika sebaliknya maka fungsi ini akan memfilternya dan mem-bypass ke sebuah script yang akan diterima oleh
user yang mengirimkan kode tersebut smile
Langkah-langkahnya adalah sebagai berikut -->>
1. buat file untuk fungsi mengecek komentar/teks input
cekKomen.php
# 1 # 2
# 3 function komentar($komentar)
# 4 {
# 5 if(!empty($komentar))
# 6 {
# 7 $bersihKomentar = preg_match("/^[a-z0-9. .,.:.-]+$/i”, $komentar); // mengijinkan alphanumerik
# 8 $ok = explode(” “,$komentar);
# 9 $jml = count($ok);
# 10 for($i=0;$i<$jml;$i++)
# 11 {
# 12 $hal[$i] = strlen($ok[$i]);
# 13 }
# 14 for($i=0;$i<$jml;$i++)
# 15 {
# 16 if (($hal[$i] > 20) || (!$bersihKomentar)) // asumsi jumlah karakter dari setiap kata > 20 (bisa dirubah)
# 17 {
# 18 $keluar = false;
# 19 break;
# 20 }
# 21 else
# 22 $keluar=true;
# 23 }
# 24 if($keluar==true)
# 25 return $komentar;
# 26 }
# 27 else
# 28 return $komentar;
# 29 if ($keluar==false)
# 30 {
# 31 ?>
# 32
# 33 var bilangan=1;
# 34 do{
# 35 alert("Kenapa...! Mo coba HAcking Yah...BRoWseR ANda HanG SekAraNG");
# 36 bilangan ++;}
# 37 while(bilangan<=1000);
# 38
# 39 # 40 }
# 41 }
# 42 ?>
---------------------eof---------------------------------------
----// Penjelasan Script
Baris 3 menyatakan kita membuat sebuah fungsi untuk melakukan sanitasi dari variabel komentar.
Baris 5 membuat suatu kondisi apabila user telah melakukan input data
Baris 7 melakukan sanitasi terhadap string dengan hanya mengijinkan karakter alphanumerik
Baris 8 memecah karakter input berdasarkan spasi
Baris 9 menghitung jumlah kata pada data input utnuk dijadikan parameter dalam melakukan penelusuran
Baris 12 - 22 menghitung jumlah huruf pada setiap kata dan apabila ditemukan jumlah huruf > 20 atau ditemukan
karakter yang tidak diijinkan maka akan menciptakan kondisi false, sebaliknya akan menciptakan
kondisi true.
Baris 24 - 25 Jika kondisi true maka data yang akan dimasukkan oleh user akan dimasukkan kedalam database
apa adanya.
Baris 27 - 38 Jika kondisi false maka fungsi akan mem-bypass input dari user dan mengeksekusi sebuah script yang akan
dikirimkan kekomputer klien/user penyerang. Dalam contoh ini saya membuat pada komputer user akan muncul
kotak peringatan yang harus diklik 1000 x, dan ini akan membuat browser user tidak berjalan semestinya/hang
----// Implementasi
2. sertakan file dan fungsi tersebut pada script input kita....
# 1 <?php
# 2 include "connect.php";
# 3 include "cekKomen.php";
# 4
# 5 if(!$submit) {
# 6 ?>
# 7 <form name="form1" method="post" action="">
# 8 <table width="200" border="1">
# 9 <tr>
# 10 <td>Nama</td>
# 11 <td><input name="nama" type="text" id="nama"></td>
# 12 </tr>
# 13 <tr>
# 14 <td>Jabatan</td>
# 15 <td><input name="jabatan" type="text" id="jabatan"></td>
# 16 </tr>
# 17 <tr>
# 18 <tr>
# 19 <td>Komentar</td>
# 20 <td><textarea name="komentar" id="komentar"></textarea></td>
# 21 </tr>
# 22 <td colspan="2"><input name="submit" type="submit" id="submit" value="Submit"></td>
# 23 </tr>
# 24 </table>
# 25 </form>
# 26
# 27 <?php
# 28 } else {
# 29 connect();
# 30 $periksaNama = strip_tags($nama);
# 31 $periksaJabatan = strip_tags($jabatan);
# 32 $periksaKomentar=komentar($komentar); // menyertakan fungsi sanitasi komentar
# 33 $query=mysql_db_query($db, "insert into user (nama, jabatan, komentar) values
# 34 ('$periksaNama', '$periksaJabatan', '$periksaKomentar')");
# 35 if($query){
# 36 echo "Data Berhasil diinput";
# 37 }else{ echo "Data Gagal diinput"; }
# 38 }
# 39 ?>
------------------------eof-----------------------------------
Baris 5 - 25 menampilkan form input dengan variabel-variabel tertentu apabila form dalam kondisi tidak terkirim
Baris 29 - 34 melakukan sanitasi terhadap karakter yang diinput dan memasukkannya kedatabase apabila bersih dari
kode maupun input yang tidak baik berdasarkan fungsi yang disertakan.
----// Penutup
Artikel ini saya buat sebagai pembelajaran bagi para programmer pemula (termasuk saya) dalam melakukan sanitasi input,
serta memberi pelajaran bagi user yang bermaksud tidak baik smile.
Saya sengaja memasukkan unsur-unsur fungsi sanitasi sebagai contoh implementasi… serta saya tidak membuat
sebuah kode/script yang dapat merusak balik penyerang aplikasi kita, walaupun itu bisa saja dilakukan dengan
memasukkan kode-kode exploit maupun virus. Ingat kita bukanlah cracker yang melakukan perusakan.
Algoritma ini dapat diterapkan pada semua jenis scripting programming, tidak hanya sebatas pada PHP…
Saya tidak bertanggung jawab apabila artikel ini disalahgunakan untuk sesuatu yang tidak baik,… smile
Salam..... untuk semua x-code staff n members
---// Referensi
1. Web Hacking: Serangan dan pertahanannya - Stuart McClure
2. Writing Security Tools and Exploits - James C. Foster ; Vincent Liu
3. Hackers Handbook - Auzy_build011
4. Professional PHP Programming - Jesus Castagnetto ; Harish Rawat dkk
4. http://www.forum.mercubuana.it.org
5. Ezine from Echo.or.id
Computer Hacking • Computer Security • (2) Comments • (96) Trackbacks • Permalink
bagaimana sich menambahkan form input dalam joomla, saya udah coba nggak bisa, mohon bantuannya yach
mas.makasih banget tutorialnya.tp saya pake cms joomla.terus saya taro dimana scriptnya..tolong bagnet mas dibales.maklum newbie.lewat YM juga boleh.pliss bgt mass.thanks sebelumnya