Minggu, 06 Oktober 2019

Zero-Day vulnerability di beberapa ponsel Android

Baru-baru ini Google Project Zero menemukan sebuah vulnerability pada beberapa ponsel Android, ditandai dengan CVE-2019-2215.

Kabarnya, vulnerability ini bahkan sudah dimanfaatkan secara tidak bertanggung jawab oleh NSO, sebuah organisasi security dari israel yang terkenal sering menjual Zero Day vulnerability kepada pemerintah (Walaupun mereka menampik tuduhan tersebut).

Vulnerability ini ditemukan oleh salah satu Researcher Project Zero yaitu Maddie Stone.

Bug ini memanfaatkan vulnerability Use-After-Free pada Android Kernel Binder Driver yang memungkinkan privilege escalation untuk mendapatkan Akses Root, bahkan berpotensi mendapatkan akses remote secara penuh pada device yang vulnerable.

Vulnerability ini terdapat pada Android kernel yang dirilis sebelum April, sebenarnya patch sudah dirilis pada desember 2017 namun hanya untuk versi kernel AOSP 3.18, 4.4 dab 4.9.

Sebagian besar Android yang belum mendapatkan update kerbel vulnerable dengan Bug ini, termasuk beberapa device populer dibawah ini:

- Pixel 1
- Pixel 1 XL
- Pixel 2
- Pixel 2 XL
- Huawei P20
- Xiaomi Redmi 5A
- Xiaomi Redmi Note 5
- Xiaomi A1
- Oppo A3
- Moto Z3
- Oreo LG Phones
- Samsung S7
- Samsung S8
- Samsung S9

Walaupun attacker membutuhkan akses secara lokal untuk memanfaatkan vulnerability ini, namun Google melabeli severity vulnerability ini sebagai High karena Kabarnya vulnerability ini bisa juga diexploit secara remote dengan cara chaining dengan vulnerability lain yaitu Renderer Exploit.

Android baru akan merilis update security pada oktober tahun ini.

Ciao.

Update Whatsappmu sekarang! CVE-2019-11932

TL;DR : Bug Double-Free yang bisa mengakibatkan vulnerability RCE (Remote Code Execution) pada Whatsapp versi 2.19.230 kebawah berjalan pada Android 8.0 dan 9.0.

Kemarin ketika saya ngopi bersama sahabat-sahabat saya, salah satu dari mereka menceritakan kabar mengejutkan yaitu vulnerability RCE (Remote Code Execution) pada aplikasi Whatsapp di Android yang masih fresh, baru saja di patch.

Vulnerability tersebut ditandai dengan CVE-2019-11932. Remote Code Execution bisa dibilang merupakan vulnerability level tinggi (Critical) karena memungkinkan attacker untuk mengeksekusi kode program pada target.

Vulnerability tersebut ditemukan oleh seorang Security Researcher asal Vietnam yaitu Pham Hong Nhat. Vulnerability ini memungkinkan attacker untuk mengeksekusi kode pada ponsel target melalui konteks aplikasi Whatsapp. Bahayanya, Whatsapp memiliki perizinan yang cukup sensitif seperti Microphone, Kamera, Storage dll.

Vulnerability ini sebenarnya terdapat pada sebuah library open source yang digunakan oleh Whatsapp untuk melakukan parsing gambar berformat GIF.

Exploit dari vulnerability ini bisa dibaca pada https://awakened1712.github.io/hacking/hacking-whatsapp-gif-rce/ , Attacker hanya perlu mengirimkan exploit berupa Gambar Gif dengan Format Document dan menjalankan listener. Ketika target akan mengirim gambar GIF tersebut dan membuka media picker bawaan whatsapp, RCE akan tereksekusi dan Attacker bisa mendapatkan Reverse Shell.

Vulnerability ini hanya terdapat pada Whatsapp versi 2.19.230 kebawah yang berjalan pada Android 8.1 dan 9.0, Nhat sudah melaporkan vulnerability ini pada Facebook selaku pemilik Whatsapp, dan patch sudah dirilis pada versi 2.19.244 September lalu, pengguna bisa langsung mengupdatenya melalui store.

Karena Bug ini sebenarnya terdapat pada library open source yang digunakan Whatsapp, maka terdapat kemungkinan bahwa banyak aplikasi di luar sana yang menggunakan library yang sama dan membawa Vulnerability ini.

Sebaiknya kamu segera mengupdate aplikasi Whatsapp agar terhindar dari hal-hal yang tidak diinginkan.

Ciao.

Kamis, 15 Agustus 2019

Bug Bounty pertama saya: Sebuah Perjuangan

Halo.

Entah kenapa hari ini dalam perjalanan berangkat kerja, saya tiba-tiba tertarik untuk menulis perjuangan dari awal belajar seputar web security hingga mendapatkan bounty pertama saya.

Semua ini berawal ketika, pada suatu hari di bulan Maret 2019, server salah satu produk di kantor tempat saya bekerja dirontokkan oleh seseorang yang tidak bertanggungjawab. Dirontokkan dalam arti dihapus seluruh isinya, tanpa tujuan yang jelas dan tidak meninggalkan sisa. Saat itu waktu sudah menunjukkan sekitar jam 6-7 malam, diluar jam kerja. Sahabat saya yang bertugas mengurusi server, mas Ijul, yang sedang istirahat, terpaksa harus bangun kemudian melakukan Backup untuk berjaga-jaga jika hacker itu menyerang aset lain.

Saya merasa geram sekali dengan ulah orang tersebut. Saya yakin itu hanya perbuatan orang iseng tanpa tujuan yang jelas karena saat itu saya tidak melihat benefit apapun yang bisa dihasilkan dari aksi tersebut, namun dampaknya sangat merepotkan, mengganggu waktu istirahat orang lain. Untung saja masih terdapat backup yang bisa dipakai.

Saat itu, saya tertarik untuk mencari tahu siapa, dan bagaimana orang tersebut mendapat akses ke server. Setelah membuka log history akses sebelum server rontok, tidak banyak yang bisa saya dapatkan. Yang saya tahu, orang tersebut entah bagaimana berhasil mengupload sebuah shell untuk mendapatkan akses ke server, menggunakan IP Address yang selalu berganti-ganti.

Semesta memang bekerja dengan cara yang sangat misterius.

Tidak sampai satu minggu setelah peristiwa tersebut, sahabat saya yang lain yang merupakan seorang InfoSec Engineer, Bahtiyar, membagikan sebuah write-up tentang bagaimana dia menemukan dan melaporkan celah Local File Disclosure pada sebuah situs belanja online di Indonesia (bisa dibaca disini: Local File Disclosure Pada Salah Satu Situs Belanja Online Indonesia).

Jujur saat itu saya sangat kagum sekali dengan Almarhum beliau. Bayangkan, dia menemukan bug level critical, berhasil mendapatkan credentials dari server situs tersebut melalui celah LFD, namun bukannya memanfaatkan (dump seluruh isinya, atau menjual celah itu kepada pesaing situs tersebut, contohnya) dia lebih memilih melaporkan bug tersebut seperti seorang Gay Lord Pahlawan sejati, bahkan walaupun hanya mendapatkan imbalan 5M, (M)akasih (M)as (M)aaf (M)erepotkan (M)uehehehehehe.

Melalui peristiwa tersebut saya seperti ditunjukkan dua sisi hacker, di satu sisi ada orang-orang yang suka merusak dan merugikan orang lain tanpa tujuan yang jelas atau untuk kepentingan pribadi, dan di sisi lainnya ternyata masih ada pula orang-orang yang secara legal melakukan hal baik dengan melaporkan celah keamanan kepada pemilik, tanpa mengharapkan imbalan (responsible disclosure).

Saya juga mulai menyadari bahwa ternyata seorang hacker tidak selalu seperti bayangan saya (dan sebagian besar orang lain), yaitu duduk di kegelapan, memakai hoodie hitam dan topeng putih, sambil membuka terminal untuk meretas satelit NASA. :v Saya jadi teringat quote salah satu sahabat saya, kurang lebih seperti ini: 

"Pas buka Terminal dibilang Pro, padahal cuma nge-ping DNS biar koneksi agak lancar. Giliran pas ngetik di notepad dibilang Noob, padahal lagi bikin Exploit." - Yudha Pratama

Terinspirasi dari berbagai hal diatas, saya memutuskan untuk mulai sedikit demi sedikit mempelajari, dan berpindah haluan dari seorang Software Engineer menjadi seorang InfoSec Engineer. Berat memang, saya harus pintar-pintar membagi waktu karena posisi saat ini masih bekerja sebagai seorang Android Developer di sebuah perusahaan.

Hampir setiap malam setelah bekerja, saya sempatkan untuk membaca report-report dan write up dari para ethical hacker di berbagai website seperti hackerone, medium, ataupun blog pribadi mereka. Sabtu dan minggu, karena saya libur, saya gunakan untuk melakukan pentest kepada berbagai target di berbagai program, public maupun private, sampai sering military, tidak tidur. Saya mendapatkan banyak ilmu dari hackerone, karena disana terdapat resource yang memang dikhususkan untuk orang yang baru memulai belajar Security.

Saya cukup beruntung karena memiliki beberapa sahabat yang sudah lebih dahulu berkecimpung di dunia Security, sehingga bisa banyak bertukar pikiran, mendapatkan rekomendasi tools untuk membantu recon, dll. Jujur saya tidak begitu tertarik dengan Labs, karena memang sudah didesain untuk vulnerable sehingga kurang menantang, saya lebih suka langsung terjun ke alam liar. 

Namun saya rajin mengerjakan CTF (Capture the Flag) milik hackerone. Karena apabila sudah terkumpul sekian poin, kita akan mendapat undangan untuk melakukan pentest pada private program di platform mereka, kesempatan bagus untuk pemula seperti saya.

Semua itu saya jalani sampai sekitar 5 bulan. Sekian report sudah saya kirimkan, baik melalui platform ataupun langsung ke email perusahaan, banyak sekali duplicate, not applicable, atau bahkan tidak dibalas, ada juga yang mengucapkan terima kasih, dan saya sudah senang sekali. Sebagian besar write up saya posting di blog ini, termasuk yang memiliki severity amat sangat rendah. Saya tidak malu, karena itu merupakan bagian dari proses yang saya lalui.

Hingga akhirnya, pecah telur, saya mendapatkan bounty pertama saya.

Setelah sekian lama, ada laporan saya yang valid dan berhak mendapatkan bounty, tidak lama kemudian (kurang lebih dua minggu), saya mendapatkan bounty lagi dari report valid lain. Dua-duanya merupakan High Severity, dua-duanya dari website marketplace terbesar di Indonesia, si Hijau dan disusul si Merah.

Berikut ini saya cantumkan beberapa quote yang saya dapatkan dari sensei-sensei yang telah membimbing saya selama ini:

"Rasah kakean cangkem."
- Kak Dyqa, donatur tetap aegis coffeeshop
Saya suka kakak yang satu ini, karena sangat frontal, apa adanya dan tidak pandang bulu. Maksud dari perkataannya adalah sebaiknya kita tidak usah banyak bicara yang tidak perlu, terutama seputar rencana atau harapan kita. Langsung saja eksekusi, belajar dan tingkatkan sedikit demi sedikit, jangan terlalu lebar melangkah, agar bisa bertahan di jalur yang tepat dan tidak memecah fokus. Seperti jargon kali linux, The quieter you become, the more you are able to hear. Sebenarnya ini bisa diterapkan ke dalam semua hal yang ingin dipelajari, tidak hanya di dalam konteks IT Security.

"Keep digging, guys."
- Mbah Gambreng, blantik sapi
Mbah Gambreng menyarankan agar kita terus mencari dan menggali berbagai kemungkinan. Seperti kata orang-orang, no system is safe, selalu ada jalan untuk mereka yang mau mencari tahu. Setelah kita menemukan sebuah celah, alangkah baiknya kita mencari teknik eksploitasi yang dapat dilakukan, kemudian membuat Proof of Concept yang lengkap dan tepat untuk mendukung teori tersebut, sebelum terburu-buru melaporkan. Keep digging and try harder, guys.

"Report and forget."
- Malika, kedelai hitam pilihan yang dibesarkan sepenuh hati, seperti anak sendiri
Malika menyarankan agar kita tidak terlalu berorientasi pada Bounty. Bounty hanyalah bonus, yang paling penting adalah kita telah berusaha berkontribusi untuk menciptakan sistem yang lebih aman. Nominal bounty, valid ataupun tidak valid, biarlah menjadi keputusan pemilik program. Tugas kita adalah melaporkan celah keamanan yang kita temukan.

Terima kasih sudah membaca,
Ciao.

Rabu, 14 Agustus 2019

Halaman 404 yang berujung pada URL takeover dan stored XSS pada k******.com (Part 2)

Stored XSS

Tentu saja, yang pertama muncul di pikiran saya adalah Stored XSS, karena bucket ini di Host pada salah satu subdomain. Sebenarnya awalnya saya ingin menyerang sisi server, seperti melakukan query direktori, atau mungkin mencari celah untuk mengakses Local File, namun karena teringat bahwa subdomain ini tidak dimasukkan scope, saya fokus kepada impact yang bisa mempengaruhi user secara langsung.

Beruntung, ternyata Header set-cookie disetting menjadi seluruh subdomain, sehingga session hijacking menggunakan stored XSS bisa dilakukan. Halaman PoC saya upload pada bucket dan berhasil diakses melalui URL tersebut, javascript tereksekusi.

Phising

Phising, jika dilakukan pada domain yang terpercaya, bisa menjadi attack vector yang cukup kuat. Saya kemudian mendownload halaman utama, kemudian mengupload ulang pada bucket tersebut, setidaknya cukup sebagai PoC halaman Phising.

Seperti biasa, saya menamai halaman-halaman tersebut secara random sehingga kecil kemungkinan user untuk
 mengakses nya secara tidak sengaja dan mempengaruhi user experience.

Saya kemudian langsung mengirimkan report kepada email team security beserta PoC yang saya buat.

Walaupun subdomain ini tidak dimasukkan scope, vulnerability ini cukup fatal sehingga menurut saya bisa dijadikan pertimbangan.

Saya agak terkejut dengan respon tim security web ini yang sangat cepat, tidak sampai setengah jam, email saya sudah dibalas. Padahal waktu sudah diluar jam kerja.

Timeline :

- 13 Agustus 2019 : Report terkirim. Sekian menit kemudian, email dibalas oleh team security, mengucapkan terima kasih dan meminta saya untuk mengupload file dengan nama tertentu sesuai permintaan mereka melalui celah tersebut, untuk mempermudah verifikasi bahwa bug tersebut memang temuan saya. Setelah saya upload, saya membalas email tersebut beserta URL file yang diminta.

- 14 Agustus 2019 : Team security menyatakan bahwa temuan saya valid dan berhak mendapatkan bounty dengan kategori Missconfiguration with High Severity. Nice! saya diminta mengirimkan data diri untuk keperluan pemberian imbalan dan untuk dicantumkan pada halaman Hall of Fame mereka.

Halaman 404 yang berujung pada URL takeover dan stored XSS pada k******.com (Part 1)

Halo,

Sebenarnya 'URL takeover' hanyalah judul yang saya buat-buat sendiri, karena saya juga belum tahu namanya apa. Mekanismenya mirip dengan subdomain takeover, hanya saja yang saya ambil alih tidak sepenuhnya subdomain, namun URL yang terdapat pada subdomain, lebih lengkapnya sebagai berikut:

Masih ingat report saya tentang clickjacking sebulan yang lalu? (Clickjacking web eccomerce indonesia) laporan tersebut tidak mendapatkan balasan. Namun ketika saya melihat kembali halaman penjelasan seputar bug bounty, clickjacking dimasukkan sebagai Out of Scope, dan sepertinya itu karena laporan saya :v wkwk.

Entah kenapa hari ini terlintas di pikiran ingin mengecek kembali halaman tersebut. Teori saya, jika vulnerability dengan mitigasi ringan saja diabaikan, besar kemungkinan halaman tersebut tidak begitu dimaintain dengan baik bukan?

Bermodalkan teori tersebut, saya bereksplorasi kembali. Setelah melakukan surfing ke beberapa halaman dan mengecek console browser, saya menemukan sebuah hal menarik yaitu halaman tersebut berusaha melakukan load resource ke sebuah URL, namun gagal dengan kode 404 alias resource not found.

Saya kemudian menyalin URL resource yang tidak ditemukan tersebut kemudian membukanya pada tab baru, sebuah halaman error AWS cloud service "No Bucket Found" muncul beserta keterangan nama bucketnya.

Setelah membaca sekilas tentang subdomain takeover menggunakan AWS, saya berkesimpulan bahwa URL ini bisa kita takeover.

Namun ketika saya membuka kembali halaman bug bounty, saya lihat subdomain yang menggunakan URL tersebut tidak dimasukkan kedalam scope, semangat saya langsung turun.

Namun kemudian saya teringat ucapan sensei saya, "Dilaporkan saja, urusan valid atau tidak biar mereka yang menentukan.", saya jadi bersemangat lagi untuk membuat PoC dan melaporkan bug ini.

Saya kemudian menghapus path-path dari URL tersebut mulai dari ujung, dan menemukan bahwa permukaan bucket terletak pada subdomain.com/image/ (inilah kenapa saya tidak menyebutnya sebagai
subdomain takeover).


Saya kemudian meminjam akun AWS milik kawan saya (Cheers to mas Ijul :v) karena kartu kredit saya sedang kosong, sehingga tidak bisa membuat akun AWS sendiri.

Ketika membuat bucket, saya terpentok pada pemilihan lokasi server, karena ketika saya melakukan Digging cname record, Nmap dsb. saya tidak bisa mendapatkan perkiraan lokasi bucket yang digunakan URL tersebut, karena memang bucket ini terletak di sebuah URL, bukan subdomain.

Saya kemudian memutuskan untuk memilih lokasi yang sekiranya paling mungkin digunakan. Karena situs tersebut merupakan marketplace asal Indonesia, saya memilih Asia Pacific.

Dan benar saja, ketika saya mengakses kembali URL tersebut, error berganti menjadi "Access Denied", karena memang bucket yang saya buat masih private. Saya langsung yakin URL tersebut berhasil saya takeover, saatnya membuat PoC!