Bahaya Shellshock Bash Bug

Shellshock Bash bug efeknya lebih berbahaya daripada isu Heartbleed yang lalu. Bandingkan saja, kalau Heartbleed kemarin hanya rentan di versi OpenSSL tertentu dan informasi yang diexpose nya adalah “mentahan” dump memory yang notebene harus digali-gali lagi. Sedangkan bug pada bash ini, rentan untuk semua OS yang menggunakan shell Bash (Bourne Again Shell) dan (hampir semua) network services pada server memanfaatkan bash untuk mengeksekusi command backend, jadi yang bisa kita dapatkan adalah RCE/remote command execution! Ya, istilah lain buat bug ini: backdoor massal deh hahaha. Bayangkan saja lebih dari 70% host di internet menggunakan OS *nix yang shell nya menggunakan bash. Kalau di scoring 10/10 deh ini hahah.. Okedeh, pada kesempatan kali ini saya akan menulis cerita saya ketika mendapat info bug ini dan melakukan Proof of Conceptnya. Yuk mari…

Pada awalnya, dilaporkan adanya bug pada bash dimana jika kita memanggil sebuah fungsi dan menyisipi arbitrary command, maka arbitrary command-nya juga akan tereksekusi. Berikut contoh fungsi tak bernama “()”, dengan disisipi command ‘echo What is Shellshock?’

.
Pada contoh di atas, command echo ‘What is Shellshock?’ di eksekusi oleh bash

Idealnya, bash tidak mengeksekusi perintah echo ‘What is Shellshock?’ tersebut. Ternyata kenyataannya, code tersebut dieksekusi. Sebagai perbandingan, berikut bash yang telah di patch seharusnya berjalan jika diberikan input yang sama seperti di atas:

Bash yang telah di patch
Bash yang telah di patch

Bisa dilihat pada percobaan pada bash yang telah di patch, bash secara jelas menolak eksekusi code setelah fungsi “()”.

Mengapa Berbahaya, bukankah ini Bug Lokal alias Eksis di Bash saja? Tidak seperti Bug pada Network Service semisal Apache, Bind, dll?

Pertanyaan bagus. Sebenarnya ini juga menjadi pertanyaan saya yang hanya newbie ini, sesaat setelah membaca informasi bug di milis. Tapi setelah diteliti lebih dalam, ternyata celah remote nya bersumber dari program-program yang biasanya memanfaatkan bash untuk menjalankan perintah ke sistem. Sebut saja contohnya CGI (common gateway interface). CGI, interface yang biasa digunakan untuk mengeksekusi perintah di sisi backend web server dengan menggunakan bash.

Proof of Concept

Biar semakin jelas, berikut proof of concept yang saya lakukan 24 September lalu.

  • Saya membuat file.cgi yang berisi file bash yang akan mengeksekusi command “/usr/bin/id” menggunakan bash.
  • Nah, karena file ini menggunakan bash yang vulnerable, pada saat request file.cgi ke HTTP server /web server, saya akan menyisipkan perintah command “touch /tmp/hacked”, yang artinya menyuruh bash untuk generate file “hacked” di /tmp.
  • Saya memanfaatkan informasi User-Agent HTTP Client (dengan curl) sebagai celah untuk menginjeksi remote command.

Hasil PoC:

PoC Bash Vulnerability Remote Command Execution
PoC Bash Vulnerability Remote Command Execution

Inti exploitasi ada pada baris: curl -A ‘() {:; }; /bin/touch /tmp/hacked http://localhost/cgi-bin/file.cgi. curl “-A” yaitu user-agent http client yang didefine oleh client. Kita memanfaatkan field user-agent tersebut untuk memanggil fungsi tak bernama “()”. Sebenarnya, ketika di parsing di server, fungsi itu akan bernama HTTP_USER_AGENT() karena kita ‘kan mau memanfaatkan field user-agent hehe.

HTTP_USER_AGENT () {

:;

};

/bin/touch /tmp/hacked

Pada intinya sih, tujuan jahatnya tercapai: command setelah define fungsi HTTP_USER_AGENT() yang tak lain adalah /bin/touch /tmp/hacked juga dieksekusi. Hasilnya? Muncul file “hacked” di folder /tmp. Selanjutnya terserah anda: curl -A ‘() {:; }; /bin/rm -rf /var/www http://<target>/cgi-bin/blablabla.cgikah?. Hehehe. Liatlah betapa berbahayanya bug ini… benar-benar seperti backdoor massal di Internet!

Proof of Concept Dampak Bug Bash pada DHCP

Remote-bug “shellshock” ini tidak hanya berdampak di sisi web server saja. Karena bug ini akan berdampak ke semua service/program/script/daemon yang menggunakan bash… Contoh lainnya seperti DHCP. Pada PoC yang dilakukan oleh seorang konsultan security di internet, shellshock bisa berdampak ke DHCP client. Dengan menyisipkan function yang ditambahkan embel-embel command echo ‘foo’, command tersebut juga akan dieksekusi oleh bash. Lebih parahnya shellshock di dhcp adalah hampir semua klien akan mengeksekusi DHCP script sebagai root! Berikut ini PoC shellshock di DHCP server dengan menyisipkan function () yang ditambahkan command echo ‘foo’ di field DHCP option:

PoC Bug Bash pada DHCP

Kemudian, ada seorang klien yang request IP ke DHCP server… dan berikut hasilnya (lihat bahwa command echo ‘foo’ juga dieksekusi):

Klien DHCP Mengeksekusi Command echo ‘foo’

Bisa dibayangkan kaaan… kalau pada server DHCP nya disisipkan command untuk ‘rm -rf /*’ atau lebih lengkapnya  ‘() { :; }; rm -rf /*’. Seluruh klien berbasis *nix yang connect ke si server DHCP  bakalan terformat! Hahahahah…

Cara Mengatasinya

Patch per-distro sudah tersedia sesaat setelah bug bash ini diumumkan ke publik kok. Silakan update package bash dari distro masing-masing.. Walaupun pada proses patch juga ada cerita lucu dimana distro-distro sempat dua kali merilis patch dalam hitungan jam saja. Karena Tavis Ormandy, sempat melaporkan patch nya masih bisa diakalin dengan metoda lainnya, sehingga RCE kemungkinan masih bisa dilakukan. Kemudian di rilis lagi patch kedua.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google

You are commenting using your Google account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.