Awas! Exploit/Bug Terbaru Android 2014



Setelah berita heboh seputar shell shock bash, sekarang muncul lagi bug terbaru pada web browser untuk android 4.4 ke bawah. Bug ini menembus SOP (Same Origin Policy) dimana seseorang dapat mengirimkan data website A dari website B, seperti cookie, isi website dll. Ngeri kan? Ya ngeri-ngeri sedap.

Sebenarnya apa itu SOP?

SOP atau Same Origin Policy adalah salah satu mekanisme sekuriti/keamanan yang penting dalam sebuah website, dasar pemikiran dari SOP adalah javascript yang dijalankan dari situs A tidak boleh mengakses ke situs B. Meskipun ada terkecuali seperti object dengan atribut src.
 Bagaimana cara kerja exploit ini?

Seseorang dapat menggunakan website pihak ketiga untuk menanam script :

onclick="window.open('\u0000javascript:

Yang dirawi selanjutnya agar mendapatkan data dari situs lain, agar lebih jelas kita langsung ke pemrogramannya. Anda dapat melakukan demo di http://

<iframe name="test" src="http://detik.com/"></iframe><br /><br /><input onclick="window.open('\u0000javascript:alert(document.domain)','test')" type="button" value="test" />


Script diatas akan memunculkan domain dari detik.com, padahal anda berada pada halaman http://ethicninja.altervista.org/android-bug.html

Yang paling sering dilakukan lagi adalah mengambil cookie anda dengan script seperti berikut :

<input onclick="window.open('\u0000javascript:alert(document.cookie)','test')" type="button" value="Get Cookie" />


Apakah device saya vulnerable?

Untuk melakukan check silahkan kunjungi http://ethicninja.altervista.org/android-bug.html , lalu klik tombol vulnerable check, jika vulnerable akan muncul pesan "Device saya vulnerable!"

Hingga saat ini belum ada tindakan dari tim android, anda dapat melakukan upgrade OS untuk menghindari ini.

Waspadalah waspadalah!

Bagaimana mengatasi serangan XSS?



XSS atau Cross Site Script merupakan salah satu jenis serangan yang berbahaya dan paling banyak ditemukan di website manapun seperti google, facebook, Amazon, Paypal, dll. Jika anda cek laporan bug pada masing-masing website tersebut maka sebagian besar melaporkan serangan XSS.

Serangan cross-site scripting biasanya digunakan untuk mencuri cookie, penyebaran malware, session hijacking / pembajakan session, dan pembelokkan tujuan / malicious redirects. Serangan ini tipikalnya adalah melakukan injeksi kode javascript terhadap sebuah website sehingga browser mengeksekusi kode/script yang diperintahkan oleh penyerang. Kelemahan ini mudah didapat tapi susah untuk diatasi. Inilah alasannya mengapa XSS banyak ditemukan di berbagai website.

Apa pengertian Cross-site Scripting atau XSS?

Anda mungkin berpikiran kenapa Cross-site scripting itu disingkat jadi XSS bukannya CSS? jawabnya adalah karena CSS sudah lebih familiar pada dunia desain web yaitu Cascading Style Sheet, maka dipilihlah XSS agar tidak menjadi rancu.

Sedangkan penjelasan mengenai XSS adalah suatu jenis serangan web dimana penyerang berusaha untuk menyisipkan script yang berisikan kode jahat terhadap suatu website untuk menjalankan suatu perintah.

Testing / percobaan XSS

Saya sudah menyiapkan halaman untuk pembelajaran XSS, silahkan kunjungi :

http://ethicninja.altervista.org/xss.php

Isi script form tersebut adalah

<html>
<head>
<title>File Belajar cara mengatasi XSS</title>
</head>
<body>
<h1>Belajar cara mengatasi XSS. </h1>
<form action="" method="post">
<input type="text" name="q" value="" />
<input type="submit" value="Search" />
</form>
<?php
if (isset($_POST['q'])) echo 'Anda mencari : '. $_POST['q'];
?>
<br><br>
Ikuti tutorial lengkapnya di <a href="http://www.ethic.ninja/">Ethic Ninja</a>
</body>
</html>

Sekarang anda masukkan script berikut pada inputan pencarian :


<script>alert('Ethic Ninja');</script>

Maka akan muncul popup seperti gambar berikut :


Ini berarti website tersebut memiliki vulnerable XSS. Sekarang kita akan coba melakukan pengambilan cookie dari pengakses, masukkan script seperti berikut :


<script>alert(document.cookie);</script>

Langkah selanjutnya adalah biasanya sang penyerang mengirimkan link yang berisikan perintah XSS, contoh :

http://ethicninja.altervista.org/xss.php?q=%3Cscript%3Ealert%28%27Terimakasih%20cookienya%20;%29%27%29;alert%28document.cookie%29;%3C/script%3E

Aspek target XSS

Target XSS bisa dimana saja, di tempat yang tidak diduga sekalipun, inilah daftar aspek target yang banyak digunakan untuk eksploitasi XSS :

1. URL
2. HTTP referrer objects
3. Parameter GET
4. Parameter POST
5. Window.location
6. Document.referrer
7. document.location
8. document.URL
9. document.URLUnencoded
10. cookie data
11. headers data
12. database data

Bagaimana cara mengatasinya?

Pertama, lakukan encoding untuk karakter <, >,' dan ". LIhat encoding dibawah :

& –> &
< –> <
> –> >
” –> "
' –> '
/ –> /


Untuk fungsi diatas jika anda menggunakan PHP anda dapat memakai fungsi htmlspecialchars() ini akan meng-encode semua Tag HTML dan spesial karakter.

Atau anda dapat menambahkan filter dengan str_replace 

$input = str_replace(array(‘&’,’<’,’>’), array(‘&amp;’,’&lt;’,’&gt;’), $input);

Atau menggunakan Open Source Libraries mengenai pencegahan XSS attack seperti PHP AntiXSS , HTML Purifierxssprotect , XSS HTML Filter

Anda dapat menggunakan salah satu dari library diatas, semuanya sama baiknya yang penting lakukan pencegahan sejak dini, sebelum website anda terkena serangan.

Simulasi Hacking | Patch File Upload Form Part - 2 [Finish]


Jika anda belum membaca artikel sebelumnya, sebaiknya dibaca dahulu karena masih berkaitan.

Oke kita lanjut lagi balada sang admin yang masih galau kok masih bisa ditembus pertahanannya. Di sisi yang lain mari kita telusuri bagaimana hacker memanipulasi data sehingga tetap bisa melakukan deface. Lets cekidot!

Kasus 2 : Tantangan Melewati Validasi Type File

Pertama kali hacker melakukan upload file-jahat.php , namun mendapat pesan penolakan seperti gambar dibawah :


"Hah~ sekarang udah ga bisa upload php ya, lumayan juga nih.." kata si hacker, tapi ini sih masih ada kemungkinan bisa ditembus..

Akhirnya hacker memakai cara memanipulasi tipe file menggunakan teknik tamper data.


Hacker mengganti POST_DATA : 

-----------------------------113632006717497\r\nContent-Disposition: form-data; name="file"; filename="file-jahat.php"\r\nContent-Type: unknown/unknown\r\n\r\n\r\n-----------------------------113632006717497--\r\n

Menjadi : 

-----------------------------113632006717497\r\nContent-Disposition: form-data; name="file"; filename="file-jahat.php"\r\nContent-Type:image/jpg\r\n\r\n\r\n-----------------------------113632006717497--\r\n

Lalu hasilnya, boom!


Ya tentu saja hal ini akan tembus dengan mudah, verifikasi keamanan hanya melalui pengecekan Content-Type file. 

Singkat kata sang admin mulai frustasi dan menghubungi www.Ethic.Ninja (iklan dikit ya haha~), lalu diberikanlah saran mengenai mekanisme upload file yang baik dan aman.

Solusi Upload Form
  • Jangan pernah percaya apa saja yang dikirimkan klien, lakukan validasi 2 tahap, melalui sisi klien dan juga sisi server.
  • Buat list mime-type apa saja yang diperbolehkan untuk diupload.
  • Tutup akses secara langsung pada folder tujuan upload.
  • Maksimalkan penggunaan .htacess untuk menyaring type file
deny from all
order deny,allow
allow from all
  • Lakukan rename nama file hasil upload secara random
  • Hindari tipikal upload file yang membolehkan untuk rewrite file
  • Jika memungkinkan upload file diluar system utama
  • Block IP jika user terus menerus melakukan upaya upload file secara tidak wajar
Sang admin pun akhirnya mengontrak Ethic Ninja untuk melakukan pemrograman diatas, dan drama ini berakhir dengan bahagia.

Cara menanggulangi/patch bash untuk shell shock pada Linux



Mengingat berbahayanya eksploit yang ditemukan pada bash sistem unix (shell shock, baca disini) maka anda wajib melakukan patch. Pada linux sudah tersedia patch secara otomatis, untuk CentOS, Fedora, Red Hat, dan turunannya :

yum -y update bash

Untuk Debian, Ubuntu, dan turunananya :

sudo apt-get update && sudo apt-get install --only-upgrade bash

Perintah tersebut untuk melakukan update bash ke versi terbaru.

Lakukan Pengecekan

Ketikkan perintah berikut pada bash/terminal anda :

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
Jika anda mendapati tulisan vulnerable maka bug masih ada. JIka anda hanya mendapati tulisan this is a test maka anda sudah melakukan patch dengan baik.