Ini cuma sekedar cerita ketika secara random saya menemukan bug di situs sebuah bank dengan skrip yang saya ceritakan di posting sebelumnya. Para bug hunter sangat menyukai berbagai writeup dari bug hunter lain, karena mereka jadi belajar: “apa sih bug yang bisa dieksploit” (kadang ternyata bug sederhana sekali) dan “kok bisa sih ketemu bugnya?” (kadang bagian ini lebih menarik).
Kadang saya menulis writeup yang super rumit (biasanya di https://tinyhack.com/), tapi kali ini saya akan memberikan bug super sederhana: SQL Injection. Cerita ini di kategori: “kok bisa ketemu bugnya?”. Writeup ini ditujukan untuk pemula.
Ini merupakan cerita teknis dengan inti bahwa: jika website Anda lemah, pasti akan ada yang menemukan bugnya. Bug ini bisa ditemukan dengan berbagai cara, dan di artikel ini akan saya tulis berbagai caranya.
Google Dorking
Dengan menggunakan Google saja kita bisa menemukan banyak situs lemah. Google dorking adalah memakai parameter advanced di Google. Saya tidak akan memberikan contohnya querynya di sini walau mudah di cari di internet.
Jadi cara kerjanya secara sederhana seperti ini:
Ada webapp atau plugin atau komponen yang memiliki bug
Komponen ini memiliki ciri-ciri misalnya urlnya /abc/def/, atau memiliki teks “Powered By”
Dengan query yang tepat, kita bisa mendapatkan daftar semua situs yang memiliki bug seperti itu. Tentunya ini hanya bisa ditemukan jika website diindeks oleh Google.
Banyak perusahaan yang memiliki banyak subdomain yang tidak diindeks oleh Google, namun bukan berarti ini tidak bisa ditemukan.
Beberapa hacker white hat sekarang ini bisa berkonsentrasi di situs-situs yang memang menyediakan bounty dan bisa hidup dari itu. Sementara di sisi lain ada banyak hacker black hat yang menjebol berbagai situs (yang biasanya tidak menyediakan bounty, atau menyediakan bounty kecil) lalu menjual jutaan account yang berhasil diretas.
Ada juga mereka yang di tengah-tengah. Kadang-kadang iseng berusaha menjebol situs (yang tidak punya program bounty khusus) lalu jika ketemu bug melaporkan ke pemilik situsnya. Situs ini bisa ditemukan dari banyak cara, misalnya:
hackernya memang memakai situs ini tiap hari
hackernya iseng mencari dengan google dork atau Shodan
aplikasinya sedang populer (karena masuk situs berita)
sedang menguji sebuah situs yang ternyata berhubungan dengan situs lain
Pemilik Situs
Dari sudut pandang pemilik situs, mungkin akan berat memberikan bounty: kenapa kamu berusaha masuk ke situs saya? siapa yang suruh? saya jadi harus mengeluarkan uang yang harusnya nggak keluar. Dari sudut pandang lain: ini kebetulan yang menemukan bug masih mau lapor, tidak menjual account ke dark web, pemilik situs tidak kehilangan pelanggan.
Magisk merupakan aplikasi root dan systemless interface untuk Android. Saat ini saya selalu memakai Magisk di semua device yang saya gunakan untuk pentesting.
Singkatnya dengan Magisk ini:
Kita bisa mendapatkan akses root
Akses root tidak terdeteksi aplikasi apapun, termasuk juga oleh Safety Net dengan fitur Magisk Hide (jadi saya bisa tetap menjalankan Pokemon Go)
Kita bisa memakai Frida untuk memanipulasi program
Instalasi Magisk
Magisk hanya bisa diinstall dengan mudah pada device yang bootloadernya unlocked. Karena masalah bootloader ini, saya sekarang ini memakai HP Xiaomi Poco F1, dan tidak memakai merk lain seperti Huawei yang tidak mengijinkan bootloader unlock.
Jadi hal pertama yang harus dilakukan adalah unlock bootloader. Caranya berbeda di tiap merk HP, dan kadang harus mendaftar dan menunggu sekian hari baru bisa dilakukan. Jika sudah, kita bisa menginstall software custom recovery TWRP baik secarapermanen maupun sementara. Saya lebih suka cara sementara dengan “fastboot boot twrp*img” supaya gampang mengupdate OS Android.
Ini adalah salah satu pertanyaan yang banyak ditanyakan ke saya: dari mana memulai kalau hanya ingin belajar hacking web (pentest atau mengejar bug bounty aplikasi web). Daripada saya menjawab berulang-ulang, saya tuliskan saja di posting ini. Jawaban ini bukan satu-satunya jawaban, ada banyak jawaban lain di Internet. Jawaban inipun mungkin bukan yang paling benar, jadi bacalah juga jawaban orang lain sebelum memutuskan.
Tujuan
Hal paling utama adaalah: apa sih tujuannya ingin bisa hacking web? Contohnya:
untuk bug hunting (bug bounty)
untuk pentesting
untuk mengetes keamanan aplikasi web buatan sendiri
untung tujuan jahat (defacing, dump database, dsb)
Tergantung masing-masing tujuan, caranya belajarnya bisa sangat berbeda. Untuk penjelasan berikutnya, saya akan menggunakan contoh dua bug umum:
IDOR (Indirect Direct Object Reference)
SQL injection
Kedua bug tersebut biasanya relatif mudah ditemukan dan mudah dipelajari. Remaja umur 19 tahun yang mendapatkan 1 juta dollar (total selama 3 tahun bug hunting) menyatakan bahwa bug favoritnya adalah IDOR karena katanya “mudah ditemukan dan hasilnya besar”.
Dalam tulisan ini saya akan membas attack “command injection” atau dikenal juga sebagi “OS command injection”, di mana attacker bisa menyisipkan perintah untuk dieksekusi. Seperti saya contohkan dalam beberapa artikel saya di blog ini dalam kategori CLI, banyak program CLI yang bisa melakukan hal kompleks dengan sangat mudah. Kadang seseorang akan memanggil program CLI eksternal daripada harus coding sendiri fungsionalitas yang rumit. Contohnya: untuk resize satu file gambar dengan imagemagick bisa dilakukan dengan satu perintah:
convert -resize 50% input.jpg output.jpg
Dan ini bisa dipanggil dari program lain, misalnya PHP dengan:
import os os.system("convert -resize 50% input.jpg output.jpg")
Atau bahasa-bahasa lain dengan cara serupa. Seperti halnya SQL injection, jika kita tidak melakukan escaping (dalam kasus ini namanya “shell escaping“) maka akibatnya bisa fatal. Contoh sederhana lain yang ada pada banyak router adalah penggunaan perintah ping via web interface. Di balik layar, yang dilakukan adalah:
system("ping -c 3 $target")
Jika kita bisa memasukkan apapun dalam $target, tanpa verifikasi, maka kita bisa memasukkan: localhost; ls, hasilnya: command ping localhost dieksekusi, lalu ls dieksekusi. Dalam kasus ini biasanya output ls akan muncul di layar.
Baru-baru ini NSA (National Security Agency) Amerika merilis tools RE baru bernama Ghidra yang gratis. Rencananya ini akan open source, tapi saat ini repositorynya masih kosong. Ghidra ini merupakan saingan IDA Pro yang saat ini harganya sangat mahal. Sebagai informasi: harga license IDA Pro paling murah ratusan USD (versi starter edition), sampai totalnya puluhan ribu USD jika kita ingin paket lengkap (IDA Pro dengan semua plugin decompilernya).
Tulisan kali ini merupakan kesan pertama memakai Ghidra. Perlu dicatat bahwa pekerjaan utama saya bukan reversing. Ini sekedar hobi buat saya. namun demikian saya sudah melakukan reversing beraneka hal baik yang populer seperti Windows/Linux/Mac/Android/iOS maupun berbagai target yang unik, misalnya (yang sudah saya terbitkan tulisannya): hardware Pokemon Go Plus (berbasis ARM), berbagai challenge Flare-On (campuran), Challenge BEVX (Arm), dan RHME (AVR).