Thursday, March 5, 2015

Celah keamanan pada form upload bikin server jebol?

Dalam mengembangkan sebuah aplikasi, seorang pengembang aplikasi terkadang tidak terlalu memperhatikan dari segi keamanan aplikasi yang dikembangkannya. Apalagi para pengembang yang sudah terbiasa dengan framework. Karena merasa sudah aman mengembangkan aplikasi dengan menggunakan framework, beberapa pengembang lupa, bahwa keamanan dalam pengembangan fitur di sebuah aplikasi juga salah satu penyumbang celah keamanan aplikasi itu sendiri. 

Kali ini penulis di minta untuk melakukan pentest sebuah aplikasi aplikasi lowongan sebelum di publishkan. Beberapa page dicoba dan di cari celah keamanan yang mungkin ada. Beberapa form memang belum siap, karena masih mendapatkan error page atau missing link. 

Dan saat melihat lebih jeli terhadap form lamaran, ada sesuatu yang janggal. Yaitu form uploadnya tidak terfilter. Dalam artian, upload file dilakukan sesaat setelah memilih file yang akan diupload. Atau dalam artian, upload file akan di lakukan terlebih dahulu sebelum melakukan submit form pengajuan lamaran.






Penulis mencoha melakukan test upload file. Dari mulai file php, script php di beri extensi lain seperti jpeg maupun pdf. Dari hasil sementara menghasilkan kalau upload file hanya di filter berdasar extensi nya saja. Jadi file php dengan extensi pdf bisa di upload. Kemudian dicoba untuk upload file dengan ukuran besar, dan memang sudah di batasi sampai dengan 2 MB. 



Pada saaat proses upload atau pemilihan file, penulis coba check console browser untuk melihat aktifiat yang dilakukan oleh javascript di balik layar. Dan hasilnya, memang terjadi proses pengiriman file via ajax sesaat setelah proses pemilihan file. Dari sini, penulis mencoba untuk melihat result dari php untuk upload file. Kemudian coba lakukan upload manual dengan menggunakan perintah curl yang ada di linux. Kurang lebih nya sintak nya seperti ini:
curl -i -F name=[file_name] -F filedata=@[nama_file] [alamat_url]
Dan memang, hasil result dari php untuk upload files sama dengan result yang di hasilkan upload file jika dilakukan melalui browser. Kemudian, terbesit untuk melakukan proses looping upload file dibawah 2MB dan melakukan loop sebanyak mungkin. Akhirnya di buatlah script sederhana untuk melakukan proses loop perintah diatas sebanyak 1000x dengan file upload sekitara 1.3Mb. Sample script nya seperti ini:
COUNTER=0
while [  $COUNTER -lt 1000 ]; do      
   curl -i -F name=[file_name] -F filedata=@[nama_file] [alamat_url]      
   let COUNTER=COUNTER+1 
done

Simpan perintah tersebut kedalam sebuah file dengan extensi .sh kemudian diberikan hak akses untuk di eksekusi. Proses eksekusinya pun dimulai. Dengan menggunakan bantuan terminal di linux, file .sh tersebut di jalankan. Hasilnya memang langsung dapat terlihat. Proses upload ke server secara berurutan dilakukan. Untuk mempercepat prosesnya, penulis melakukan open new tab sebanyak 4 dan menjalankan perintah .sh di tiap-tiap tab. Jika di perhitungkan adalah kurang lebih seperti ini:

1 proses pengiriman akan mengirimkan file berukuran 1.3. Setiab tab mengirimkan proses 1000x pengiriman. Jika di totalkan adalah 1.3Gx4 = 5G lebih akan terkirim file sampah ke server. Dan memang, belum semua proses selesai, server sudah down dan tidak bisa diakses lagi. Yup, proses Pentest 1 sukses dilakukan dan ditemukan sebuah hole kurang dari 1 jam.

Semoga bemanfaat

Share this

0 Comment to "Celah keamanan pada form upload bikin server jebol?"

Post a Comment