~ The Largest Muslim Hacker Community ~
 
HomeCalendarFAQSearchMemberlistUsergroupsRegisterLog in
LINK PARTNER










Top posters
Rascal_21
 
Moeslim_Soldiers
 
Cvh0
 
h1t4k3
 
offistar
 
menjelajahbumi
 
riv182
 
0nCeR
 
ohara_inamiji
 
Kn19ht
 

Share | 
 

 Teknik Patch Simple Common Web Attack

Go down 
AuthorMessage
Moeslim_Soldiers
Administrator
Administrator
avatar

Posts : 53
Join date : 2010-09-30
Age : 30

PostSubject: Teknik Patch Simple Common Web Attack   Sat Apr 30, 2011 12:05 pm

Originaly Posted RJ-45

Assalamualaikum semuanya…….

Kali ini saya akan berbagi bagaimana cara Menangkal serangan2 umum teknik hacking pada vuln-vuln website yang sering dilakukan tanpa sengaja oleh seorang programmer web…..

Teknik-teknik serangan yang akan kita bahas cara menangkalnya adalah :

1. XSS

2. SQLInjection

3. LFI / RFI

4. Bypass Login

5. Filter Upload file

Siap, teknik serangannya perlu dibahas juga ga ya…….. hehehe, oke deh akan saya bahas juga.

1. XSS

XSS adalah kepanjangan dari Cross Site Scripting. Maksudnya??? Hal ini terjadi ketika programmer menggunakan URL sebagai parsing kalimat atau kata secara langsung pada halaman website.

Ok contohnya seperti ini:

[You must be registered and logged in to see this link.]

Selanjutnya kalimat yang diletakkan pada get_variable judul akan langsung saja ditampilkan pada halaman penerima, pada contoh ini sang attacker dapat menyelipkan sebuah script pada get_variable tersebut. contohnya.

[You must be registered and logged in to see this link.] XSS!!!’);</script>

<script>alert(’Tes XSS!!!’);</script> script ini merupakan script javascript yang digunakan untuk menampilkan sebuah alert box. Pada kasus yang lebih gawat serangan XSS juga dapat dilakukan untuk mendapatkan cookies website, fake interface dan lain2, maklum saya bukan attacker jadi kurang terlalu paham.

PENANGKAL

Untuk menangkal serangan ini, kita dapat menambahkan function php htmlentities. Fungsi dari function ini adalah untuk menerjemahkan karakter yang termasuk dalam pembentuk html ke dalam karakter codenya….

Contoh code pembentuknya dapat dilihat pada tabel berikut

Result Description Entity Name Entity Number

non-breaking space

< less than < <

> greater than > >

& ampersand & &

¢ cent ¢ ¢

£ pound £ £

¥ yen ¥ ¥

€ euro € €

§ section § §

© copyright © ©

® registered trademark ® ®

Cara pakai function ini :

<?php

$judul = htmlentities ($_GET['judul']);

echo $judul;

?>

$judul = htmlentities ($_GET['judul']); <<<—- Disini ditambahkan funtion tersebut untuk merubah semua karakter html ke karakter pembentuknya…

Sukses……… Sekarang Website kita sudah terbebas dari serangan XSS.

2. SQLInjection

Bagi penggiat dunia hacking, mungkin istilah ini sudah tidak asing lagi. Hm…….. ya, super simple basic web attacking technique (bener ga ya bahasanya). Ya, teknik serangan website paling dasar.

Bug ini terjadi karena kesalah yang terjadi ketika dilakukan perintah _select query pada tabel dalam database.

Contohnya dulu.

Misal url yang tampak pada address bar seperti ini

[You must be registered and logged in to see this link.]

Maksud dari url ini untuk menampilkan berita atau artikel atau apalah yang memiliki id 560 pada tabel dalam database.

Selanjutnya pada halaman penerima dilakukan query untuk meminta isi record tabel yang memiliki id 560.

contoh :

<?php

include “‘connect.php”;

mysql_select_db (”db_web”, $con);

$id = $_GET['id'];

$result = mysql_query (”select * from `tblBerita` where `id` = $id “);

dan seterusnya….

?>

Yang kita gunakan untuk permisalah adalah id = 560, baik kita coba terjemahkan query sql nya.

“select * from `tblBerita` where `id` = 560?

SQLInjection

1. Teknik serangan SQLinjection dimulai dengan mengetes suatu get_variable dengan menambahkan karakter single quote (’)

[You must be registered and logged in to see this link.]

Selanjutnya pada query sql yang ada pada script akan berubah menjadi

select * from `tblBerita` where `id` = 560' << terdapat karakter petik satu.

Hal ini menyebabkan query error dan menampilkan pesan error nya pada halaman website.

2. Dengan tanda error ini, selanjutnya sang attacker melanjutkan melakukan inject pada query sql ini dengan tujuan menampilkan informasi yang ada pada tabel user, admin atau nama tabel lain untuk mengetahui user dan password yang tersimpan dalam website.

HOW???? HOW????? Caranya bagaimana. Pada MYSQL versi 5, hal ini dapat dilakukan dengan memanfaatkan informasi yang terdapat pada database information_schema.

Kita lanjut dulu saja SQLInjectionnya.

Selanjutnya kita akan coba cari jumlah record yang ada pada tabel.

[You must be registered and logged in to see this link.] order by 1

Kita tes apakah error atau tidak, seharusnya tidak.

select * from `tblBerita` where `id` = 560 order by 1

Maksud query ini, hasil select dirutkan berdasarkan pada colomn nomer 1.

Coba terus sampai tampil pesan error

[You must be registered and logged in to see this link.] order by 2 <<<— masih belum error

[You must be registered and logged in to see this link.] order by 3 <<<— masih belum error

[You must be registered and logged in to see this link.] order by 4 <<<— masih belum error

[You must be registered and logged in to see this link.] order by 5 <<<— akhirnya error juga

Ini misal aja loh ya, di lapangan ntar jumlah angkanya bisa berbeda-beda. Ini menandakan bahawa field atau colomn yang ada pada tabel hanya ada 4.

3. Selanjutnya, lakukan union select

[You must be registered and logged in to see this link.] and 1=2 union select 1, 2, 3, 4

Query pada web jadi seperti ini

select * from `tblBerita` where `id` = 560 and 1=2 union select 1, 2, 3, 4

Result aslinya tidak akan tampil, yang tampil malah angka-angka yang dijadikan union select. Kita cari angka mana yang tampil pada halaman website. Misal angka yang tampil pada halaman website angka 2.

4. Kita dapat menggunakan function2 sql pada url tersebut, contohnya version()

[You must be registered and logged in to see this link.] and 1=2 union select 1, version(), 3, 4

Fungsi ini berguna untuk menampilkan versi mysql yang digunakan, jika versi mysql adalah versi 5. Kida dapat mulai melakukan inject untuk menampilkan informasi yang ada pada database information schema.

[You must be registered and logged in to see this link.] and 1=2 union select 1, group_concat(table_name), 3, 4 from information_schema.tables where table_schema = database()

Query ini berfungsi untuk menampilkan isi dari table `tables` yang ada pada database information_schema yang mana nama databasenya = database(), funsi database() akan menghasilkan nama database yang digunakan oleh website.

Setelah nama2 table diketahui, kita akan coba menampilkan nama2 colomn yang ada pada table. Misal nama table yang akan kita tampilkan isi kolomnya `tbluser`

[You must be registered and logged in to see this link.] and 1=2 union select 1, group_concat(column_name), 3, 4 from information_schema.columns where table_name = tbluser

Jika cara ini gagal, sebelumnya ubah dulu kata `tbluser` ke bentuk hexa, gunakan website2 yang menyediakan jasa convert text ke hexa.

[You must be registered and logged in to see this link.] and 1=2 union select 1, group_concat(column_name), 3, 4 from information_schema.columns where table_name = tbluser

Jika cara ini gagal, sebelumnya ubah kata `tbluser` ke bentuk hexa.

[You must be registered and logged in to see this link.] and 1=2 union select 1, group_concat(column_name), 3, 4 from information_schema.columns where table_name = 0x6164A689 (ni hexa yang aku pake ngawur, heheh ntar coba sendiri aja)

Setelah keluar nama2 colomn dari tabel `tbluser`, kita lanjutkan untuk menampilkan record dari tabel ini.

Misal colomn2 yang tampil

id, user, email, password

[You must be registered and logged in to see this link.] and 1=2 union select 1, group_concat(user, 0×3a, password), 3, 4 from tbluser

Kita tampilkan yang penting2 saja……

Selanjutnya isi tabel akan ditampilkan, dan setelah kita dapatkan user dan password admin. Kita cari tempat untuk melakukan login ke system dan Eng ing eng, akses kita menjadi Administrator pada website.

PENANGKAL

Teknik serangan yang panjang lebar ini ternyata hanya memerlukan sedikit tambahan code untuk menambalnya, benarkah??? ya…. Mari kita bahas.

$result = mysql_query (”select * from `tblBerita` wheere `id` = $id “);

Serangan ini dapat terjadi dikarenakan tidak ada filter pada get_variable, sehingga attacker dapat menambahkan query jahat pada query aslinya. hehehe, nilai yang dibutuhkan pada get_variable id hanya nilai numeric saja sehingga kita dapat melakukan pengecekan apakah nilainya angka valid atau tidak

if (!is_numeric($id))

$id = 0;

$result = mysql_query (”select * from `tblBerita` where `id` = $id “);

Kode ini, berguna untuk merubah nilai id menjadi 0 (Nol) jika nilai id tidak valid sebagai angka.

Huft, sudah kok itu aja……. heheheeh…….

3. LFI / RFI

LFI (Local File Inclusion) Bug yang memungkinkan sang attacker untuk menampilkan file2 yang ada pada server.

RFI (Remote File Inclusion) Bug yang memungkinkan sang attacker untuk mengincludekan file dari luar server. B

Bug ini dapat terjadi ketika setting konfigurasi php di server

allow_url_include = on

allow_url_fopen = on

magic_quote_gpc = off

Bug ini terjadi karena kesalahan dalam penggunaan function include(), include_once(), require(), require_once()

Misal

[You must be registered and logged in to see this link.]

Selanjutnya pada code kita langsung melakukan include pada halaman yang di kirim melalui variable pada url

$page = $_GET['page'];

include($page.”.php”);

Contoh serangan

[You must be registered and logged in to see this link.] <– RFI

[You must be registered and logged in to see this link.] <– LFI

PENANGKAL

Baiknya kita berlaku lakukan pengecekan pada setiap halaman yang akan kita tampilkan dengan menggunakan function ini misal

<?php

$page = $_GET['page'];

if ($page == ‘news’)

include(”news.php”);

elseif ($page == ‘tutorial’)

include(”tutorial.php”);

?>

Dan selanjutnya, hmmm ternyata kesalahan yang sederhana benar2 dapat menyebabkan kejadian yang fatal.

Next…

4. Bypass Login

Teknik ini sebenarnya juga merupakan bentuk lain dari SQLInjection Contoh

Pada halaman login user diminta untuk menginputkan User dan password

user : admin

password : pass123

Selanjutnya pada query

<?php

include “‘connect.php”;

mysql_select_db (”db_web”, $con);

$user = $_GET['user'];

$pass = $_GET['password'];

$result = mysql_query (”select * from `tbladmin` where `uname` = ‘$user’ and `upass` = ‘$pass’ “);

dan seterusnya

?>

Jika kita terjemahkan

“select * from `tbladmin` where `uname` = ‘admin’ and `upass` = ‘pass123'

Ok bentuk2 bypass yang dapat digunakan

‘ or ‘1'=’1

Coba kalau kita ubah isian user dan passwordnya

user : admin

password : pass123' or ‘1'=’1

Query SQLnya akan berubah menjadi

“select * from `tbladmin` where `uname` = ‘admin’ and `upass` = ‘pass123' or ‘1'=’1'

Ow ow ow, dengan cara ini tanpa sang attacker tau dengan password adminnya pun dia tetap bisa melakkan login ke system. Sungguh sangat berbahaya kan.

PENANGKAL

Untuk menangkal serangan ini kita dapat menggunakan function addslashes() yang ada pada php

string addslashes(string $str), fungsinya untuk mengembalikan karakter dengan backslash (\) untuk karakter2 yang memerlukan penanda khusu pada query sql

‘ menjadi \’

Contoh

<?php

include “‘connect.php”;

mysql_select_db (”db_web”, $con);

$user = addslashes($_GET['user']);

$pass = addslashes($_GET['password']);

$result = mysql_query (”select * from `tbladmin` where `uname` = ‘$user’ and `upass` = ‘$pass’ “);

dan seterusnya

?>

Fungsi lain, mysqli_real_escape_string(), htmlspecialchars() dll

5. Filter Upload file

Filter file upload, kesalahan pada fitur ini dapat menyebabkan website yang kita miliki dapat dikuasai oleh seorang attacker jika tidak adanya filter yang benar pada file dengan tipe apa saja yang dapat masuk ke dalam di upload. Begini prosesnya…

Attacker akan meng-Upload file Backdoor, script jahat atau yang lain untuk dapat menjalankan script tersebut secara langsung pada server. Attacker akan dapat mengakses database website dengan melihat konfigurasi database yang ada pada file config, melakukan edit file atau bahkan melakukan Deface (Mengganti halaman depan website)

PENANGKAL

Lakukan pengecekan pada tipe file sebelum melakukan eksekusi upload file ke server

<?php

$image = $_FILES['image']['name']; $imagetipe = $_FILES['image']['type']; if ($image<>” && !(($imagetipe == “image/gif”) || ($imagetipe == “image/jpeg”) || ($imagetipe == “image/bmp”) || ($imagetipe == “image/jpg”)

|| ($imagetipe == “image/png”))){ echo “<script>alert(’Images Tidak Valid!! Image Yang diijinkan adalah PNG, GIF dan JPG’);</script>”; }else {

Kode upload file ………

}

?>

Dengan kode diatas website hanya mengijinkan file bertipe gif, bmp, jpg dan jpeg saja yang dapat diupload.

FINISH

Ok, sekian terima kasih telah menyempatkan untuk membaca tutorial saya ini Moga bermanfaat bagi para pengembang website yang sedang mencari informasi tentang teknik patching ini, sengaja saya jelaskan pula teknik serangannya agar para pengembang website juga dapat tau dengan jelas penyebab terjadinya serangan-sernagan itu… Selanjutnya melakukan penambalan pada script2 yang salah dengan cara yang saya sarankan atau dengan cara lain sesuai kreatifitas masing2….

Syukron To : RJ-45
Back to top Go down
View user profile http://albantani-crew.friendhood.net
 
Teknik Patch Simple Common Web Attack
Back to top 
Page 1 of 1

Permissions in this forum:You cannot reply to topics in this forum
[+] Al Bantani Crew a.k.a Pandeglang Hacker Team [+] :: TUTORIAL-
Jump to: