Penerapan Penetration Testing dan Stress Testing pada aplikasi AdHub

Arga Ghulam Ahmad
5 min readApr 28, 2019

--

Pernahkah anda berpikir kenapa software testing merupakan bagian penting dalam pengembangan aplikasi? Berdasarkan http://tryqa.com/why-is-testing-necessary/, terdapat beberapa alasan mengapa pengujian perangkat lunak itu penting yaitu

  • Pengujian perangkat lunak sangat diperlukan untuk menunjukkan cacat dan kesalahan yang dibuat selama fase pengembangan.
  • Ini penting karena memastikan keandalan Pelanggan dan kepuasan mereka dalam aplikasi.
  • Sangat penting untuk memastikan Kualitas produk. Produk berkualitas yang dikirim ke pelanggan membantu dalam mendapatkan kepercayaan diri mereka.
  • Pengujian diperlukan untuk menyediakan fasilitas kepada pelanggan seperti pengiriman produk atau aplikasi perangkat lunak berkualitas tinggi yang membutuhkan biaya perawatan yang lebih rendah dan karenanya menghasilkan hasil yang lebih akurat, konsisten, dan dapat diandalkan.
  • Diperlukan pengujian untuk kinerja aplikasi atau produk perangkat lunak yang efektif.
  • Sangat penting untuk memastikan bahwa aplikasi tersebut tidak boleh mengakibatkan kegagalan apa pun karena itu bisa sangat mahal di masa depan atau pada tahap pengembangan selanjutnya.

Oleh karena itu, terdapat berbagai jenis testing pada pengembangan perangkat lunak yaitu mock object, stub, penetration testing, dan stress testing. Kali ini Saya akan menjelaskan penerapan penetration testing dan stress testing pada aplikasi AdHub.

Penetration testing merupakan testing dengan tujuan menemukan dan mengeksploitasi celah pada suatu sistem komputer. Tujuannya adalah untuk mengidentifikasi titik-titik lemah dalam pertahanan sistem yang dapat dimanfaatkan penyerang yang tidak bertanggung jawab. Penetration testing dapat digambarkan seperti suatu bank yang mempekerjakan seseorang untuk berpakaian sebagai pencuri dan mencoba masuk ke gedung mereka dan mendapatkan akses ke brankas. Jika ‘pencuri’ berhasil dan masuk ke bank atau lemari besi, bank akan mendapatkan informasi berharga tentang bagaimana mereka perlu memperketat tindakan keamanan mereka.

Selain peneration testing, terdapat testing tingkat lanjut lain yaitu stress testing. Stress Testing didefinisikan sebagai jenis Pengujian Perangkat Lunak yang menguji stabilitas & keandalan sistem. Stress testing menguji aplikasi di luar titik operasi normal dan mengevaluasi cara sistem bekerja di bawah kondisi ekstrim. Stress Testing dilakukan untuk memastikan bahwa sistem tidak akan mengalami failure dalam situasi kritis.

Lets Do It

Dalam melakukan penetration testing dan stress testing, Saya membuat suatu virtual machine dengan sistem operasi Kali Linux menggunakan virtual box. Kali Linux adalah distribusi Linux yang diturunkan dari Debian yang dirancang untuk forensik digital dan pengujian penetrasi. Ini dikelola dan didanai oleh Offensive Security Ltd.

Stress Testing

Dalam melakukan stress testing aplikasi AdHub, Saya melakukan Denial-of-service attack pada aplikasi AdHub yang telah live pada server portainer ppl.

In a DDoS attack, the incoming traffic flooding the victim originates from many different sources — potentially hundreds of thousands or more. This effectively makes it impossible to stop the attack simply by blocking a single IP address; plus, it is very difficult to distinguish legitimate user traffic from attack traffic when spread across so many points of origin.

Dalam melakukan denial-of-service-attack Saya menggunakan tools bernama slowhttptest. Berikut tangkapan layarnya yaitu

Tangkapan layar stress testing aplikasi AdHub
Tangkapan layar laporan hasil stress testing aplikasi AdHub

Dari laporan tersebut, kita dapat melihat aplikasi AdHub mengalami down pada stress testing tersebut. Aplikasi AdHub down dari detik ke-0 hingga ke-133. Oleh karena itu, dibutuhkan suatu solusi untuk mengatasi masalah tersebut. Salah satunya adalah dengan menerapkan load balancer pada sistem aplikasi AdHub. Load balancer digunakan agar aplikasi AdHub dapat menangani request dengan jumlah yang masif.

Penetration Testing

Dalam melakukan penetration testing aplikasi AdHub, Saya mencari celah keamanan pada aplikasi AdHub yang telah live pada server portainer ppl secara menyeluruh. Saya menggunakan tools bernama OWASP Zed Attack dalam melakukan hal tersebut. Berikut tangkapan layar dan laporan hasil penetration testing yang telah dilakukan yaitu

Tangkapan layar OWASP Zed Attack saat melakukan penetration testing pada aplikasi AdHub.

Dari laporan penetration testing di atas, kita dapat melihat banyak celah keamanan pada aplikasi AdHub. Celah keamanan yang ditemukan terdiri dari Web Browser XSS Protection Not Enabled, X-Content-Type-Options Header Missing, dan Cross-Domain JavaScript Source File Inclusion. Walaupun celah-celah keamanan yang ditemukan masih tergolong low, namun celah keamanan tersebut harus diperbaiki agar tidak mempengaruhi kinerja dan keamanan aplikasi AdHub.

Let’s fix the vulnerabilities

Web Browser XSS Protection Not Enabled

Pastikan filter browser web XSS diaktifkan, dengan mengatur header respons HTTP X-XSS-Protection ke ‘1’.

X-Content-Type-Options Header Missing

Pastikan bahwa server aplikasi / web menetapkan header Tipe-Konten dengan tepat, dan itu mengatur header X-Content-Type-Options ke ‘nosniff’ untuk semua halaman web.

Jika memungkinkan, pastikan bahwa pengguna akhir menggunakan peramban web yang sesuai standar dan modern yang sama sekali tidak melakukan sniffing MIME, atau yang dapat diarahkan oleh aplikasi web / server web untuk tidak melakukan sniffing MIME.

Cross-Domain JavaScript Source File Inclusion

Pastikan file sumber JavaScript diambil dari hanya sumber tepercaya, dan sumbernya tidak dapat di-kontrol oleh pengguna akhir aplikasi.

--

--