Stress Testing dan Penetration Testing pada Yuk — Recycle

Endrawan Andika Wicaksana
PPL A-4 YUK RECYCLE
3 min readApr 16, 2019

Halo, perkenalkan nama saya Endrawan Andika Wicaksana, bisa dipanggil Endrawan atau Endra. Pada mata kuliah Proyek Perangkat Lunak (PPL) Fasilkom UI, saya berada pada proyek Yuk — Recycle dan berperan sebagai Hacker.

Pada blog kali ini saya akan memberikan contoh stress testing dan penetration testing pada Yuk — Recycle.

Software yang bagus tentu perlu dilakukan testing. Testing bisa seperti unit test, functional test, usability testing, stress testing, penetration testing, dan lain sebagainya. Pada blog kali ini akan fokus pada stress testing dan penetration testing.

Stress testing adalah testing pada server dengan melakukan request sebanyak mungkin untuk mensimulasikan penggunaan banyak user pada software.

Saya akan mencoba melakukan stress testing menggunakan tool https://github.com/wg/wrk/.

Berikut contoh penggunaan tool tersebut:

Gambar 1. Stress Testing 2
Gambar 2. Stress Testing 2

Pada gambar 1 terlihat bahwa server masih kuat menghandle dengan 12 thread dan 400 koneksi dalam 30 detik namun terdapat 2 timeout. Sedangkan pada gambar 2 terlihat bahwa server tidak mampu menghandle 5911 koneksi. Pada gambar 2, saya tidak dapat menambahkan jumlah thread dan koneksi lagi sehingga tes tersebut merupakan stress testing maksimal saya.

Penetration testing adalah testing pada software di mana mengecek keamanan software. Keamanan di sini seperti apakah hanya user tertentu yang dapat melihat suatu data, mengubah suatu data, dan lain sebagainya.

Pada blog kali ini hanya akan mencoba sql injection (nomor 1 pada https://www.owasp.org/images/7/72/OWASP_Top_10-2017_%28en%29.pdf.pdf).

Sql injection adalah injeksi yang dilakukan pada sql. Sql memiliki syntax seperti berikut:

SELECT * FROM customers WHERE username = 'username' AND password = 'password';

Dari data sql di atas apabila terdapat minimal 1 row maka dapat login selain itu maka tidak dapat login. Data username dan password diambil dari user.

Misalkan implementasi pembuatan query seperti berikut:

username = request.getUsername()
password = request.getPassword()
query = "SELECT * FROM customers WHERE username = '" + username + "' AND PASSWORD = '" + password + "';"

Apabila username bernilai username dan password bernilai password, maka query akan berbentuk seperti berikut:

SELECT * FROM customers WHERE username = 'username' AND password = 'password';

Namun apabila username bernilai ' OR 1 = 1 -- # dan password bernilai password , maka query akan berbentuk seperti berikut:

SELECT * FROM customers WHERE username = '' OR 1 = 1 -- #' AND PASSWORD = 'password';

Apabila customers memiliki data (minimal 1 row) maka query di atas akan mendapatkan semua data pada customers dan penyerang dapat login tanpa mengetahui username dan password yang benar. Hal tersebut terjadi karena -- merupakan comment pada sql dan WHERE true berarti tidak menggunakan filter.

Untuk mempermudah pengetesan dapat menggunakan tool sqlmap.

Berikut contoh penggunaan tool tersebut:

Gambar 3. Sqlmap Level 1
Gambar 4. Sqlmap Level 3
Gambar 5. Hasil Akhir Sqlmap Level 5
Gambar 6. Salah Satu Request pada Sqlmap Level 5

Pada gambar 3 dilakukan penjalanan sql map level 1 dan pada gambar 4 dilakukan penjalanan sql map level 3. Pada gambar 5 terlihat bahwa pada sqlmap level 5 aplikasi aman. Pada gambar 6 terlihat bahwa server UI telah melakukan pengecekan request yang dilakukan ke server PPL Fasilkom UI.

Sekian blog dari saya. Terima kasih sudah membaca.

--

--