Rizki Wicaksono

Reverse Connecting Shell di PHP

Rootshell adalah impian semua hacker. Biasanya seorang hacker yang masuk melalui web vulnerability, akan mengupload webshell. Dengan webshell si hacker bisa mengeksekusi command shell melalui request HTTP. Namun webshell tetaplah bukan true shell, webshell memiliki banyak keterbatasan, salah satunya adalah sifatnya yang tidak interaktif.

Dalam artikel ini saya akan menjelaskan bagaimana caranya mendapatkan true shell yang interaktif dari suatu website yang berhasil dihack. Dari shell tersebut saya juga memperlihatkan contoh eksploitasi lokal untuk meningkatkan privilege dari user biasa (apache) menjadi root dan mensetup sebuah backdoor sehingga si hacker kapan saja bisa mendapatkan rootshell.

Continue reading

Kupas Tuntas SSH Tunneling

SSH Tunneling adalah teknik yang wajib dikuasai hacker. Teknik ini sangat cocok dipakai sebagai backdoor dari  dunia luar langsung menembus ke dalam “behind enemy lines” melewati semua firewall, IDS, IPS atau apapun itu di perbatasan. Dalam artikel ini saya juga menjelaskan bagaimana melakukan chaining tunnel, yaitu menyambung tunnel dengan tunnel lain.

Apa itu Tunneling?

Secara sederhana tunneling berarti mengirimkan data melalui koneksi lain yang sudah terbentuk. Kalau anda buka situs internet banking, pasti anda akan membukanya dengan URL berawalan “https”, yang sejatinya adalah data dalam protokol HTTP yang dikirimkan melalui koneksi dengan protokol SSL, atau “HTTP over SSL”, dalam bahasa gaulnya berarti HTTP digendong sama SSL.

SSH dan SSL adalah dua contoh tunneling protocol, keduanya bisa dipakai untuk menggendong data dalam protokol apa saja (tidak hanya http). Hanya bedanya adalah pada SSL dibutuhkan public key certificate dalam format X.509 yang perlu diverifikasi melalui Certificate Authority resmi. SSH tidak memerlukan public key certificate, sehingga lebih sederhana dan lebih mudah dipakai.

Continue reading

Berburu Direktori dan File Sensitif dengan DirBuster

Mungkin anda akan terkejut bila mengetahui bahwa ada banyak website yang berhasil dihack/dideface hanya karena sebuah kesalahan “konyol”. Tidak dibutuhkan keahlian programming, SQL atau jurus njelimet lainnya, cuma membuka sebuah direktori yang berisi file-file sensitif, maka sebuah website akan bertekuk lutut. Ya benar, ini adalah fakta yang seringkali terjadi.

Direktori Sensitif

Semua direktori atau file yang mengandung informasi berguna buat hacker untuk mendeface website anda, maka direktori itu termasuk sensitif. Beberapa direktori atau file yang tergolong sensitif antara lain: Continue reading

Memecahkan Kriptografi dengan Chosen-Plaintext Attack

Beberapa waktu yang lalu saya menemukan sebuah website dengan vulnerability SQL injection. Sengaja nama website tersebut tidak saya publikasikan, karena artikel ini bukan tentang SQL injection melainkan bagaimana memecahkan enkripsi.

Berbeda dengan website lainnya, website tersebut menyimpan password dalam tabel user tidak dalam bentuk one-way hash (contohnya MD5 atau SHA1), melainkan dalam bentuk ter-enkripsi. Enkripsi yang dipakai juga unik karena tidak memakai algoritma enkripsi yang sudah dikenal luas.

Dalam kasus tersebut saya ingin melakukan privilege-escalation dari user dengan hak akses biasa menjadi user dengan hak akses penuh. Sebagai user biasa saya bisa melakukan SQLinjection untuk membaca username dan password dari tabel user. Dengan teknik tersebut saya mendapatkan encrypted password dari seorang user yang memiliki hak admin. Namun saya tidak bisa memakai password itu untuk menjadi admin sebelum saya mengerti pesan tersembunyi dalam chiphertext tersebut. Continue reading

Belajar Membuat Shellcode (III): Semi-Polymorphic Shellcode

Sebelumnya saya minta maaf dulu karena absen cukup lama menulis di blog ini. Saya terakhir menulis tentang  pembuatan shellcode, untuk local  maupun remote exploit. Seharusnya kali ini saya menulis mengenai cara memakai shellcode itu dalam exploit, namun ada satu hal yang menarik untuk ditulis sebelum masuk ke pembahasan exploit, yaitu semi-polymorphic shellcode. Nanti pada artikel selanjutnya saya akan bahas true-polymorphic shellcode.

Apa itu Polymorphic Shellcode

Secara bahasa polymorphic artinya banyak bentuk. Polymorphic shellcode adalah shellcode yang mempunyai banyak bentuk. Dari satu induk shellcode yang sama bisa dilahirkan banyak sekali shellcode yang berbeda-beda dalam level bit, maksudnya bila dilihat bit per bit semua shellcode tersebut berbeda total, padahal semua berasal dari satu induk.

Continue reading

Belajar Membuat Shellcode (II): Remote Exploit Shellcode

Dalam artikel sebelumnya saya sudah menjelaskan dasar-dasar pembuatan shellcode. Saya sudah menjelaskan pembuatan shellcode untuk local exploit. Nah kali ini saya akan lanjutkan lagi untuk membuat shellcode yang dipakai untuk exploit secara remote.

Remote Exploit

Remote exploit adalah teknik exploitasi yang dilakukan secara remote melalui jaringan. Exploit jenis ini biasanya menyerang server/daemon yang sedang “LISTEN” di port tertentu.

Perbedaan utama antara local exploit dan remote exploit adalah pada kondisi awalnya. Pada local exploit, sejak awal attacker sudah memiliki shell access baik melalui ssh, telnet atau remote desktop connection, namun dengan hak akses terbatas (sebagai normal user). Sedangkan pada remote exploit, kondisi awal attacker adalah tidak memiliki akses shell. Akses shell yang saya maksud adalah kemampun untuk execute suatu file executable.

Jadi pada local exploit, tujuannya adalah privilege escalation atas hak akses yang terbatas tersebut menjadi tidak terbatas (root/administrator). Sedangkan pada remote exploit, karena pada awalnya tidak punya akses shell, maka remote exploit berusaha mendapatkan akses shell, baik sebagai user biasa maupun sebagai super user (root/administrator).

Continue reading

Belajar Membuat Shellcode (I): Local Exploit Shellcode

Seringkali shellcode terlihat dalam source code exploit berbentuk untaian kode-kode hexa. Sebenarnya apa itu shellcode dan apa makna di balik kode-kode hexa itu? Dalam artikel ini saya akan menjelaskan tentang shellcode dan kita juga akan praktek belajar membuat shellcode sendiri.

Shellcode, Exploit dan Vulnerability

Shellcode, exploit dan vulnerability adalah 3 saudara kandung. Semua berawal dari keteledoran sang  programmer sehingga programnya mengandung vulnerability yang bisa di-exploit untuk membuat program tersebut menjalankan code apapun yang diinginkan hacker (arbitrary code execution), code ini disebut dengan shellcode.

Dalam kondisi normal, program mengikuti instruksi yang dibuat oleh penciptanya (programmer). Hacker bisa membuat program mengikuti perintahnya dan mengabaikan perintah penciptanya dengan mengexploit vulnerability yang mengakibatkan arbitrary code execution

Continue reading

Exploiting LDD for Arbitrary Code Execution

Hati-hati dengan program LDD, jangan sembarangan menjalankan LDD pada program executable yang tidak dikenal dan tidak dipercaya, sebab salah-salah malah anda menjalankan program tersebut dan bisa membuat komputer anda compromised. Apa itu LDD dan bagaimana cara mengexploitnya silakan disimak artikel berikut ini.

Shared Library and Linking

Seperti yang telah saya jelaskan dalam artikel sebelumnya tentang belajar assembly, program adalah kumpulan instruksi prosesor dalam bahasa mesin (binary). Namun yang perlu diketahui adalah tidak semua instruksi yang dibutuhkan dimasukkan (baca:dilink) dalam file executablenya.

Subroutine/prosedur/fungsi yang umum tidak perlu dimasukkan ke dalam file executable, cukup disimpan dalam suatu file library yang boleh dipakai semua program yang membutuhkan. Library ini disebut dengan shared library atau shared object (so). Shared library dalam lingkungan windows dikenal dengan DLL.

Continue reading

Belajar Assembly di Linux

Bagi seseorang yang bergelut di dunia security bahasa Assembly adalah bahasa yang wajib dikuasai. Karena bahasa ini adalah bahasa tingkat rendah, dekat dengan bahasa mesin (biner), maka mempelajari bahasa ini akan sangat menguntungkan. Dengan mempelajari bahasa assembly, sedikit banyak secara otomatis kita akan memahami cara komputer bekerja lebih dalam lagi.

Artikel ini juga sebagai pembuka sebelum saya membahas mengenai shellcode, buffer overflow dan teknik exploitasi lain yang membutuhkan pemahaman mengenai assembly dan sistem operasi. Bila anda ingin menjadi hacker yang baik, anda wajib menguasai bahasa ini.

Bahasa Mesin, Assembly dan C

Pada dasarnya komputer adalah makhluk digital yang hanya mengerti digit 1 dan digit 0 (binary). Komputer hanya mau menerima data dalam bentuk binary dan juga hanya bisa mengerti perintah dalam bentuk binary. Perintah dalam bentuk binary ini disebut dengan bahasa mesin.

Secara umum program bisa dilihat sebagai urutan langkah/perintah/instruksi untuk menyelesaikan sesuatu. Programmer bisa langsung membuat program dengan menuliskan perintah dalam bentuk 1 dan 0 (bahasa mesin), atau menggunakan bahasa tingkat tinggi yang lebih manusiawi seperti C, Visual Basic atau Java.

Continue reading

Memahami Serangan Denial of Service

Dalam artikel ini saya akan menjelaskan mengenai jenis serangan yang bisa dikatakan tidak ada obatnya, yaitu denial of service atau DoS. Bila serangan DoS ini dilakukan secara beramai-ramai dan terorganisir dengan baik, maka akan menghasilkan kerusakan yang dahsyat dan sanggup melumpuhkan situs-situs populer seperti twitter.com dan metasploit.com.

Apa itu DoS

Denial of service adalah jenis serangan yang tujuannya adalah mencegah pengguna yang sesungguhnya menikmati layanan yang diberikan server. Server sesuai namanya adalah pelayan yang harus selalu siap melayani permintaan pengguna, yang umumnya beroperasi 24 jam tanpa henti. Contohnya adalah web server yang bertugas melayani pengunjung web menyediakan informasi dalam bentuk halaman html. Dalam kondisi normal, pengunjung dapat meminta resource dari web server untuk ditampilkan dalam browsernya, namun bila web server terkena serangan DoS maka pengunjung tidak bisa menikmati layanan web server.

Secara umum ada 2 cara melakukan serangan DoS:

  1. Mematikan Server
  2. Menyibukkan Server
    • Tanpa bug/vulnerability
    • Meng-exploit bug/vulnerability

Continue reading