Rabu, 30 April 2014

Melakukan Fuzz Testing Dengan Kali Linux

Pada saat membuat program, developer mengharapkan pengguna memasukkan input sesuai dengan yang seharusnya. Pada kenyataannya, pengguna (terutama yang iseng) mungkin saja memberikan input yang tidak diharapkan. Lalu, apa yang akan terjadi dengan program bila pengguna memberikan input yang tidak diharapkan? Fuzz testing adalah pengujian yang dilakukan untuk menjawab pertanyaan tersebut. Fuzz testing adalah jenis pengujian black box dimana penguji memberikan berbagai jenis input yang tidak valid pada program. Kali Linux mem-bundle beberapa tools untuk keperluan fuzz testing yang dapat ditemukan di menu Kali Linux, Vulnerability Analysis, Fuzzing Tools. Saya akan mencoba beberapa tools tersebut. Tool : 1. BED, adalah sebuah script Perl yang dipakai untuk menguji penanganan protokol. BED mendukung protokol seperti FTP, SMTP, POP, HTTP, IRC, IMAP, PJL, LPD, FINGER, SOCKS4, dan SOCKS5. Dengan demikian, BED tidak dipakai untuk menguji program seperti aplikasi web, melainkan menguji infrastruktur seperti web server, mail server, FTP server dan sebagainya. BED akan berhenti bila berhasil membuat server yang diuji menjadi down atau crash. Sebagai contoh, saya ingin menguji seberapa handal FTP server di router yang saya pakai. Karena kemampuan pemrosesan di router ekonomis yang terbatas dan jarang sekali upgrade firmware, saya pantas merasa ragu dengan keamanannya. Script BED akan menguji dengan memakai input berupa overflow string ("A" x 1023 atau "\\" x 200), format string (seperti %s%s%s%s atau %.2048d), unicode string (seperti "x99" x 512), large number (seperti -268435455), dan misc string (seperti "/" atau "\r\n"). Khusus pada FTP, ia juga akan menguji apakah directory traversal dengan input seperti "/././.." dimungkinkan atau tidak. Tool lainnya yang berada dalam kategori ini adalah powerfuzzer. Tool berbasis GUI ini dapat dipakai untuk menguji aplikasi web. Sebagai contoh, saya akan melakukan pengujian pada router saya yang memiliki halaman administrasi dalam bentuk aplikasi web. 2. Powerfuzzer Saya mengisi bagian credentials dengan nama user dan password router. Setelah itu, saya mengisi Target URL dengan lokasi router yaitu di http://192.168.1.1 dan men-klik tombol Scan. powerfuzzer akan bekerja dan menampilkan hasil pemeriksaan setelah selesai. powerpuzzer pada dasarnya adalah script Python yang bekerja mengisi parameter yang dipakai pada parameter pada request GET dan POST dengan nilai yang tidak valid seperti lokasi file (misalnya /etc/passwd atau http://www.google.com/), script (misalnya "a;env", "a);env", dan "/e"), injeksi (dengan payload berupa "\xbf'\"("), javascript (untuk memeriksa XSS), dan string CRLF seperti "http://www.google.com\r\nPowerfuzzer: v1 BETA". Menariknya, hasil pengujian menunjukkan terdapat celah keamanan XSS pada web administrasi router saya. Bukan hanya itu saja! Dengan mengirim payload tertentu menggunakan method POST pada URL tersebut, router akan crash dan di-restart kembali. Selain memakai tools yang ada di kategori Fuzzing Tools, bila melakukan fuzz testing pada aplikasi web, saya dapat menggunakan tool yang ada di menu Kali Linux, Web Applications, Web Application Fuzzers. Disini saya dapat menggunakan tool yang lebih ‘user-friendly’ dan berbasis GUI seperti Burp dan Zed Attack Proxy (ZAP). Fuzz testing pada Burp dilakukan dengan memilih tab Intruder dan memilih salah satu jenis payload yang diujikan seperti Illegal Unicode. Pada ZAP, saya dapat memilih tab Active Scan untuk mencari celah keamanan pada URL yang telah diperoleh oleh spider. ZAP akan melakukan beberapa pemeriksaan, termasuk diantaranya adalah Cross Site Scripting (XSS), SQL Injection dan CRLF injection. Untuk melakukan fuzz testing pada URL tunggal di ZAP, saya perlu memilih sebuah parameter atau header di bagian Request, kemudian men-klik kanan dan memilih Fuzz…. Pada dialog yang muncul, saya dapat memilih fuzzer yang akan dipakai, seperti jbrofuzz/Buffer Overflows, jbrofuzz/Format String Errors, jbrofuzz/Integer Overflows, jbrofuzz/SQL Injection, dan sebagainya. 3. FEST Pada aplikasi web, saya dapat melakukan pengujian view HTML dengan menggunakan Selenium. Bagaimana dengan aplikasi desktop? Apakah saya juga bisa melakukan pengujian user interface? Yup, bisa! Salah satu tool yang dapat saya pergunakan adalah FEST (Fixtures for Easy Software Testing). Untuk memakai FEST, saya perlu men-download fest-swing-1.2.zip dari http://code.google.com/p/fest. Di dalam file tersebut, saya akan menemukan file fest-swing-1.2.jar yang harus disertakan dalam proyek yang akan diuji. Selain itu, saya juga perlu menyertakan jar yang ada di dalam folder lib seperti fest-util-1.1.2.jar dan fest-assert-1.2.jar. Btw, di saat sedang serius, saya lebih memilih memakai Maven untuk melakukan proses download secara otomatis dengan menyertakan dependency ke org.easytesting.fest-swing. 4. JETTY Jetty adalah sebuah web server yang unik. Hal ini karena Jetty dapat dipakai sebagai embedded web server. Apa maksudnya? Biasanya pada aplikasi web, program yang telah kita buat perlu di-’copy‘ ke sebuah container (web server). Tapi embedded web server adalah kebalikannya. Aplikasi kita didalamnya telah mengandung web server, sehingga kita tidak perlu memindahkan kode program ke web server lagi. Lalu apa gunanya? Embedded web server dapat dipakai pada pengujian aplikasi dimana aplikasi akan dijalankan pada embedded web server yang tidak membutuhkan banyak setup serta tidak ‘berat‘. SUMBER : http://thesolidsnake.wordpress.com/tag/testing/

Tidak ada komentar:

Posting Komentar