LaGiPusHinGWitH ---- IT

Navigation

Home |

Categories

Monthly Archives

Most recent entries

Syndicate

Site Credits

Powered by:
ExpressionEngine

Design by:
BlogMoxie

Attack: Script Sanitasi Input

----// 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

Posted by roninmorgue on 08/25 at 01:26 AM
Computer HackingComputer Security • (2) Comments • (96) TrackbacksPermalink

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

Posted by  on  05/29  at  07:44 PM

bagaimana sich menambahkan form input dalam joomla, saya udah coba nggak bisa, mohon bantuannya yach

Posted by  on  10/24  at  09:15 AM
Page 1 of 1 pages

Name:

Email:

Location:

URL:

Smileys

Remember my personal information

Notify me of follow-up comments?