Pengujian Keamanan - Panduan Cepat
Pengujian keamanan sangat penting untuk menjaga sistem terlindungi dari aktivitas berbahaya di web.
Apa itu Pengujian Keamanan?
Pengujian keamanan adalah teknik pengujian untuk menentukan apakah suatu sistem informasi melindungi data dan memelihara fungsionalitas sebagaimana dimaksud. Pengujian keamanan tidak menjamin keamanan lengkap sistem, tetapi penting untuk menyertakan pengujian keamanan sebagai bagian dari proses pengujian.
Pengujian keamanan mengambil enam langkah berikut untuk menyediakan lingkungan yang aman -
Confidentiality - Melindungi dari pengungkapan informasi kepada penerima yang tidak diinginkan.
Integrity - Ini memungkinkan transfer informasi yang diinginkan akurat dan benar dari pengirim ke penerima yang dituju.
Authentication - Ini memverifikasi dan mengkonfirmasi identitas pengguna.
Authorization - Ini menentukan hak akses ke pengguna dan sumber daya.
Availability - Ini memastikan kesiapan informasi tentang kebutuhan.
Non-repudiation - Ini memastikan tidak ada penolakan dari pengirim atau penerima karena telah mengirim atau menerima pesan.
Contoh
Menemukan kelemahan keamanan dalam aplikasi berbasis web melibatkan langkah-langkah kompleks dan pemikiran kreatif. Terkadang, pengujian sederhana dapat mengungkap risiko keamanan yang paling parah. Anda dapat mencoba tes paling dasar ini pada aplikasi web apa pun -
Masuk ke aplikasi web menggunakan kredensial yang valid.
Keluar dari aplikasi web.
Klik tombol KEMBALI di browser.
Verifikasi apakah Anda diminta untuk masuk lagi atau jika Anda dapat kembali ke halaman masuk lagi.
Pengujian keamanan dapat dilihat sebagai serangan terkontrol pada sistem, yang mengungkap kelemahan keamanan dengan cara yang realistis. Tujuannya adalah untuk mengevaluasi status sistem TI saat ini. Itu juga dikenal sebagaipenetration test atau lebih populer sebagai ethical hacking.
Tes penetrasi dilakukan secara bertahap dan di sini, di bab ini, kita akan membahas proses lengkapnya. Dokumentasi yang tepat harus dilakukan di setiap fase sehingga semua langkah yang diperlukan untuk mereproduksi serangan tersedia dengan mudah. Dokumentasi juga berfungsi sebagai dasar untuk laporan rinci yang diterima pelanggan pada akhir uji penetrasi.
Tes Penetrasi - Alur Kerja
Tes penetrasi mencakup empat fase utama -
- Pencetakan Kaki
- Scanning
- Enumeration
- Exploitation
Keempat langkah ini diulang beberapa kali yang sejalan dengan SDLC normal.
Perangkat lunak berbahaya (malware) adalah perangkat lunak yang memberikan sebagian kendali penuh atas sistem kepada penyerang / pembuat malware.
Malwares
Berbagai bentuk malware tercantum di bawah -
Virus- Virus adalah program yang membuat salinan dari dirinya sendiri dan memasukkan salinan ini ke dalam program komputer lain, file data, atau ke sektor boot dari hard-disk. Setelah replikasi berhasil, virus menyebabkan aktivitas berbahaya pada host yang terinfeksi seperti mencuri ruang hard disk atau waktu CPU.
Worm - Worm adalah jenis malware yang meninggalkan salinan dirinya sendiri di memori setiap komputer yang dilewatinya.
Trojan - Trojan adalah jenis malware yang tidak dapat mereplikasi diri sendiri yang berisi kode berbahaya, yang setelah dieksekusi mengakibatkan hilangnya atau pencurian data atau kemungkinan kerusakan sistem.
Adware- Adware, juga dikenal sebagai freeware atau pitchware, adalah perangkat lunak komputer gratis yang berisi iklan komersial game, bilah alat desktop, dan utilitas. Ini adalah aplikasi berbasis web dan mengumpulkan data browser web untuk menargetkan iklan, terutama pop-up.
Spyware- Spyware adalah perangkat lunak infiltrasi yang memantau pengguna secara anonim yang memungkinkan peretas mendapatkan informasi sensitif dari komputer pengguna. Spyware mengeksploitasi pengguna dan kerentanan aplikasi yang cukup sering dilampirkan ke unduhan perangkat lunak online gratis atau ke tautan yang diklik oleh pengguna.
Rootkit - Rootkit adalah perangkat lunak yang digunakan oleh peretas untuk mendapatkan akses tingkat admin ke komputer / jaringan yang diinstal melalui kata sandi curian atau dengan mengeksploitasi kerentanan sistem tanpa sepengetahuan korban.
Tindakan pencegahan
Langkah-langkah berikut dapat diambil untuk menghindari kehadiran malware dalam sistem -
Pastikan sistem operasi dan aplikasi sudah diperbarui dengan tambalan / pembaruan.
Jangan pernah membuka email asing, terutama yang memiliki lampiran.
Saat Anda mengunduh dari internet, selalu periksa apa yang Anda pasang. Jangan hanya mengklik OK untuk menutup jendela pop-up. Verifikasi penerbit sebelum Anda memasang aplikasi.
Instal perangkat lunak anti-virus.
Pastikan Anda memindai dan memperbarui program antivirus secara teratur.
Pasang firewall.
Selalu aktifkan dan gunakan fitur keamanan yang disediakan oleh browser dan aplikasi.
Perangkat Lunak Anti-Malware
Perangkat lunak berikut membantu menghapus malwares dari sistem -
- keamanan penting microsoft
- Pembela Microsoft Windows
- AVG Internet Security
- Spybot - Cari & Hancurkan
- Avast! Edisi Rumah untuk penggunaan pribadi
- Keamanan Internet Panda
- MacScan untuk Mac OS dan Mac OS X
Memahami protokol sangat penting untuk mendapatkan pemahaman yang baik tentang pengujian keamanan. Anda akan dapat menghargai pentingnya protokol saat kami mencegat data paket antara server web dan klien.
Protokol HTTP
Hypertext Transfer Protocol (HTTP) adalah protokol tingkat aplikasi untuk sistem informasi hypermedia yang terdistribusi, kolaboratif. Ini adalah dasar komunikasi data untuk World Wide Web sejak tahun 1990. HTTP adalah protokol umum dan tanpa negara yang dapat digunakan untuk tujuan lain serta menggunakan ekstensi metode permintaan, kode kesalahan, dan headernya.
Pada dasarnya, HTTP adalah protokol komunikasi berbasis TCP / IP, yang digunakan untuk mengirimkan data seperti file HTML, file gambar, hasil kueri, dll. Melalui web. Ini menyediakan cara standar bagi komputer untuk berkomunikasi satu sama lain. Spesifikasi HTTP menentukan bagaimana data yang diminta klien dikirim ke server, dan bagaimana server menanggapi permintaan ini.
Fitur dasar
Ada tiga fitur dasar berikut yang membuat HTTP menjadi protokol yang sederhana namun kuat -
HTTP is connectionless- Klien HTTP, yaitu, browser memulai permintaan HTTP. Setelah membuat permintaan, klien memutuskan koneksi dari server dan menunggu tanggapan. Server memproses permintaan dan membangun kembali koneksi dengan klien untuk mengirim tanggapan kembali.
HTTP is media independent- Semua jenis data dapat dikirim melalui HTTP selama klien dan server mengetahui cara menangani konten data. Ini diperlukan klien dan juga server untuk menentukan tipe konten menggunakan tipe MIME yang sesuai.
HTTP is stateless- HTTP adalah tanpa sambungan dan ini adalah akibat langsung bahwa HTTP adalah protokol tanpa negara. Server dan klien menyadari satu sama lain hanya selama permintaan saat ini. Setelah itu, keduanya melupakan satu sama lain. Karena sifat protokol ini, baik klien maupun browser tidak dapat menyimpan informasi antara permintaan yang berbeda di seluruh halaman web.
HTTP / 1.0 menggunakan koneksi baru untuk setiap pertukaran permintaan / respons sedangkan koneksi HTTP / 1.1 dapat digunakan untuk satu atau lebih pertukaran permintaan / respons.
Arsitektur
Diagram berikut menunjukkan arsitektur yang sangat dasar dari aplikasi web dan menggambarkan di mana HTTP berada -
Protokol HTTP adalah protokol permintaan / tanggapan berdasarkan arsitektur klien / server di mana browser web, robot, dan mesin pencari, dll. Bertindak sebagai klien HTTP dan server web bertindak sebagai server.
Client - Klien HTTP mengirimkan permintaan ke server dalam bentuk metode permintaan, URI, dan versi protokol, diikuti dengan pesan seperti MIME yang berisi pengubah permintaan, informasi klien, dan kemungkinan konten tubuh melalui koneksi TCP / IP.
Server - Server HTTP merespons dengan baris status, termasuk versi protokol dari pesan dan kode sukses atau kesalahan, diikuti dengan pesan seperti MIME yang berisi informasi server, informasi meta entitas, dan kemungkinan konten badan-entitas.
HTTP - Kekurangan
HTTP bukanlah protokol yang sepenuhnya aman.
HTTP menggunakan port 80 sebagai port default untuk komunikasi.
HTTP beroperasi di lapisan aplikasi. Itu perlu membuat beberapa koneksi untuk transfer data, yang meningkatkan biaya administrasi.
Tidak diperlukan enkripsi / sertifikat digital untuk menggunakan HTTP.
Rincian Protokol Http
Untuk memahami lebih dalam tentang Protokol HTTP, klik setiap tautan di bawah ini.
HTTP Parameters
HTTP Messages
HTTP Requests
HTTP Responses
HTTP Methods
HTTP Status Codes
HTTP Header Fields
HTTP Security
HTTPS (Hypertext Transfer Protocol over Secure Socket Layer) atau HTTP over SSL adalah protokol web yang dikembangkan oleh Netscape. Ini bukan protokol tetapi ini hanya hasil dari lapisan HTTP di atas SSL / TLS (Secure Socket Layer / Transport Layer Security).
Singkatnya, HTTPS = HTTP + SSL
Kapan HTTPS Diperlukan?
Saat kami menjelajah, kami biasanya mengirim dan menerima informasi menggunakan protokol HTTP. Jadi ini mengarahkan siapa pun untuk menguping percakapan antara komputer kita dan server web. Seringkali kita perlu bertukar informasi sensitif yang perlu diamankan dan untuk mencegah akses yang tidak sah.
Protokol http yang digunakan dalam skenario berikut -
- Situs Web Perbankan
- Gerbang pembayaran
- Situs Belanja
- Semua Halaman Login
- Aplikasi Email
Kerja Dasar HTTPS
Kunci publik dan sertifikat yang ditandatangani diperlukan untuk server dalam Protokol HTTPS.
Permintaan klien untuk halaman https: //
Saat menggunakan koneksi https, server menanggapi koneksi awal dengan menawarkan daftar metode enkripsi yang didukung server web.
Sebagai tanggapan, klien memilih metode koneksi, dan klien serta server bertukar sertifikat untuk mengautentikasi identitas mereka.
Setelah ini selesai, baik server web dan klien bertukar informasi terenkripsi setelah memastikan bahwa keduanya menggunakan kunci yang sama, dan sambungan ditutup.
Untuk menghosting koneksi https, server harus memiliki sertifikat kunci publik, yang menyematkan informasi kunci dengan verifikasi identitas pemilik kunci.
Hampir semua sertifikat diverifikasi oleh pihak ketiga sehingga klien yakin bahwa kuncinya selalu aman.
Apa itu Encoding dan Decoding?
Pengkodean adalah proses menempatkan urutan karakter seperti huruf, angka, dan karakter khusus lainnya ke dalam format khusus untuk transmisi yang efisien.
Decoding adalah proses mengubah format yang dikodekan kembali ke urutan karakter asli. Ini sama sekali berbeda dari Enkripsi yang biasanya kita salah tafsirkan.
Encoding dan decoding digunakan dalam komunikasi dan penyimpanan data. Pengkodean TIDAK boleh digunakan untuk mengangkut informasi sensitif.
Pengkodean URL
URL hanya dapat dikirim melalui Internet menggunakan kumpulan karakter ASCII dan ada contoh ketika URL berisi karakter khusus selain dari karakter ASCII, itu perlu dienkode. URL tidak mengandung spasi dan diganti dengan tanda plus (+) atau dengan% 20.
Pengkodean ASCII
Browser (sisi klien) akan menyandikan input sesuai dengan set karakter yang digunakan di halaman web dan set karakter default di HTML5 adalah UTF-8.
Tabel berikut menunjukkan simbol ASCII dari karakter dan Simbolnya yang sama dan akhirnya penggantinya yang dapat digunakan di URL sebelum meneruskannya ke server -
ASCII | Simbol | Penggantian |
---|---|---|
<32 | Encode dengan% xx di mana xx adalah representasi heksadesimal dari karakter tersebut. | |
32 | ruang | + atau% 20 |
33 | ! | % 21 |
34 | " | % 22 |
35 | # | % 23 |
36 | $ | % 24 |
37 | % | % 25 |
38 | & | % 26 |
39 | ' | % 27 |
40 | ( | % 28 |
41 | ) | % 29 |
42 | * | * |
43 | + | % 2B |
44 | , | % 2C |
45 | - | - |
46 | . | . |
47 | / | % 2F |
48 | 0 | 0 |
49 | 1 | 1 |
50 | 2 | 2 |
51 | 3 | 3 |
52 | 4 | 4 |
53 | 5 | 5 |
54 | 6 | 6 |
55 | 7 | 7 |
56 | 8 | 8 |
57 | 9 | 9 |
58 | : | % 3A |
59 | ; | % 3B |
60 | > | % 3C |
61 | = | % 3D |
62 | > | % 3E |
63 | ? | % 3F |
64 | @ | % 40 |
65 | SEBUAH | SEBUAH |
66 | B | B |
67 | C | C |
68 | D | D |
69 | E | E |
70 | F | F |
71 | G | G |
72 | H. | H. |
73 | saya | saya |
74 | J | J |
75 | K | K |
76 | L | L |
77 | M | M |
78 | N | N |
79 | HAI | HAI |
80 | P. | P. |
81 | Q | Q |
82 | R | R |
83 | S | S |
84 | T | T |
85 | U | U |
86 | V. | V. |
87 | W | W |
88 | X | X |
89 | Y | Y |
90 | Z | Z |
91 | [ | % 5B |
92 | \ | % 5C |
93 | ] | % 5D |
94 | ^ | % 5E |
95 | _ | _ |
96 | ` | % 60 |
97 | Sebuah | Sebuah |
98 | b | b |
99 | c | c |
100 | d | d |
101 | e | e |
102 | f | f |
103 | g | g |
104 | h | h |
105 | saya | saya |
106 | j | j |
107 | k | k |
108 | l | l |
109 | m | m |
110 | n | n |
111 | Hai | Hai |
112 | p | p |
113 | q | q |
114 | r | r |
115 | s | s |
116 | t | t |
117 | u | u |
118 | v | v |
119 | w | w |
120 | x | x |
121 | y | y |
122 | z | z |
123 | { | % 7B |
124 | | | % 7C |
125 | } | % 7D |
126 | ~ | % 7E |
127 | % 7F | |
> 127 | Encode dengan% xx di mana xx adalah representasi heksadesimal dari karakter tersebut |
Apa itu Kriptografi?
Kriptografi adalah ilmu untuk mengenkripsi dan mendekripsi data yang memungkinkan pengguna untuk menyimpan informasi sensitif atau mengirimkannya melalui jaringan yang tidak aman sehingga hanya dapat dibaca oleh penerima yang dituju.
Data yang dapat dibaca dan dipahami tanpa tindakan khusus disebut plaintext, sedangkan metode penyamaran teks biasa untuk menyembunyikan substansinya disebut encryption.
Teks biasa terenkripsi dikenal sebagai teks sandi dan proses mengembalikan data terenkripsi kembali ke teks biasa dikenal sebagai decryption.
Ilmu menganalisis dan memutus komunikasi yang aman dikenal sebagai pembacaan sandi. Orang-orang yang melakukan hal yang sama juga dikenal sebagai penyerang.
Kriptografi dapat berupa kuat atau lemah dan kekuatannya diukur dengan waktu dan sumber daya yang diperlukan untuk memulihkan teks biasa yang sebenarnya.
Oleh karena itu diperlukan alat decoding yang tepat untuk menguraikan pesan terenkripsi yang kuat.
Ada beberapa teknik kriptografi yang tersedia di mana bahkan satu miliar komputer melakukan satu miliar pemeriksaan per detik, tidak mungkin untuk menguraikan teks.
Karena daya komputasi meningkat dari hari ke hari, seseorang harus membuat algoritme enkripsi sangat kuat untuk melindungi data dan informasi penting dari para penyerang.
Bagaimana Enkripsi Bekerja?
Algoritme kriptografi bekerja dalam kombinasi dengan sebuah kunci (bisa berupa kata, angka, atau frase) untuk mengenkripsi teks biasa dan teks biasa yang sama mengenkripsi ke teks sandi yang berbeda dengan kunci yang berbeda.
Oleh karena itu, data terenkripsi sepenuhnya bergantung pada beberapa parameter seperti kekuatan algoritme kriptografi dan kerahasiaan kunci.
Teknik Kriptografi
Symmetric Encryption- Kriptografi konvensional, juga dikenal sebagai enkripsi konvensional, adalah teknik di mana hanya satu kunci yang digunakan untuk enkripsi dan dekripsi. Misalnya, DES, algoritme Triple DES, MARS oleh IBM, RC2, RC4, RC5, RC6.
Asymmetric Encryption- Ini adalah kriptografi kunci publik yang menggunakan sepasang kunci untuk enkripsi: kunci publik untuk mengenkripsi data dan kunci privat untuk dekripsi. Kunci publik dipublikasikan kepada orang-orang dengan tetap menjaga kerahasiaan kunci privat. Misalnya, RSA, Digital Signature Algorithm (DSA), Elgamal.
Hashing- Hashing adalah enkripsi SATU WAY, yang menciptakan keluaran acak yang tidak dapat dibalik atau setidaknya tidak dapat dibalik dengan mudah. Misalnya algoritma MD5. Ini digunakan untuk membuat Sertifikat Digital, tanda tangan digital, Penyimpanan kata sandi, Verifikasi komunikasi, dll.
Same Origin Policy (SOP) adalah konsep penting dalam model keamanan aplikasi web.
Apa itu Kebijakan Asal yang Sama?
Sesuai dengan kebijakan ini, ini mengizinkan skrip yang dijalankan pada halaman yang berasal dari situs yang sama yang dapat merupakan kombinasi dari berikut -
- Domain
- Protocol
- Port
Contoh
Alasan di balik perilaku ini adalah keamanan. Jika Anda memiliki try.com di satu jendela dan gmail.com di jendela lain, Anda TIDAK ingin skrip dari try.com mengakses atau mengubah konten gmail.com atau menjalankan tindakan dalam konteks gmail atas nama Anda.
Di bawah ini adalah halaman web dari asal yang sama. Seperti yang dijelaskan sebelumnya, asal yang sama mempertimbangkan domain / protokol / port.
- http://website.com
- http://website.com/
- http://website.com/my/contact.html
Di bawah ini adalah halaman web dari asal yang berbeda.
- http://www.site.co.uk (domain lain)
- http://site.org (domain lain)
- https://site.com (protokol lain)
- http://site.com:8080 (port lain)
Pengecualian kebijakan Asal yang sama untuk IE
Internet Explorer memiliki dua pengecualian utama untuk SOP.
Yang pertama terkait dengan 'Zona Tepercaya'. Jika kedua domain berada di zona yang sangat tepercaya, kebijakan Asal yang Sama tidak berlaku sepenuhnya.
Pengecualian kedua di IE terkait dengan port. IE tidak memasukkan port ke dalam kebijakan Same Origin, karenanya http://website.com dan http://wesite.com:4444 dianggap dari asal yang sama dan tidak ada batasan yang diterapkan.
Apa itu Cookie?
Cookie adalah sepotong kecil informasi yang dikirim oleh server web untuk disimpan di browser web sehingga nanti dapat dibaca oleh browser. Dengan cara ini, browser mengingat beberapa informasi pribadi tertentu. Jika seorang Peretas mendapatkan informasi cookie, itu dapat menyebabkan masalah keamanan.
Properti Cookies
Berikut beberapa properti penting cookie -
Biasanya berupa file teks kecil, diberi tag ID yang disimpan di direktori browser komputer Anda.
Mereka digunakan oleh pengembang web untuk membantu pengguna menavigasi situs web mereka secara efisien dan menjalankan fungsi tertentu.
Saat pengguna menjelajahi situs web yang sama lagi, data yang disimpan dalam cookie dikirim kembali ke server web untuk memberi tahu situs web tentang aktivitas pengguna sebelumnya.
Cookie tidak dapat dihindari untuk situs web yang memiliki database besar, perlu login, memiliki tema yang dapat disesuaikan.
Isi Cookie
Cookie berisi informasi berikut -
- Nama server asal pengiriman cookie.
- Masa pakai cookie.
- Nilai - biasanya nomor unik yang dibuat secara acak.
Jenis Cookies
Session Cookies- Cookies ini bersifat sementara yang dihapus saat pengguna menutup browser. Meskipun pengguna masuk lagi, cookie baru untuk sesi itu dibuat.
Persistent cookies- Cookie ini tetap ada di hard disk drive kecuali pengguna menghapusnya atau kedaluwarsa. Kedaluwarsa Cookie tergantung pada berapa lama mereka bisa bertahan.
Menguji Cookies
Berikut cara untuk menguji cookie -
Disabling Cookies- Sebagai penguji, kami perlu memverifikasi akses situs web setelah menonaktifkan cookie dan untuk memeriksa apakah halaman berfungsi dengan baik. Menavigasi ke semua halaman situs web dan perhatikan aplikasi mogok. Juga diperlukan untuk memberi tahu pengguna bahwa cookie diperlukan untuk menggunakan situs ini.
Corrupting Cookies- Pengujian lain yang harus dilakukan adalah dengan merusak cookie. Untuk melakukan hal yang sama, seseorang harus menemukan lokasi cookie situs dan mengeditnya secara manual dengan data palsu / tidak valid yang dapat digunakan untuk mengakses informasi internal dari domain yang kemudian dapat digunakan untuk meretas situs.
Removing Cookies - Hapus semua cookie untuk situs web dan periksa bagaimana situs web bereaksi terhadapnya.
Cross-Browser Compatibility - Penting juga untuk memeriksa bahwa cookie ditulis dengan benar di semua browser yang didukung dari halaman mana pun yang menulis cookie.
Editing Cookies- Jika aplikasi menggunakan cookie untuk menyimpan informasi login maka sebagai penguji kita harus mencoba mengubah pengguna di cookie atau bilah alamat ke pengguna lain yang valid. Mengedit cookie seharusnya tidak memungkinkan Anda masuk ke akun pengguna yang berbeda.
Melihat dan Mengedit Cookies
Browser modern mendukung untuk melihat / mengedit informasi cookie di dalam Browser itu sendiri. Ada plugin untuk mozilla / chrome yang dapat kami gunakan untuk mengedit dengan sukses.
- Edit plugin cookie untuk Firefox
- Edit Plugin cookie ini untuk chrome
Langkah-langkah yang harus dilakukan untuk Mengedit cookie -
Unduh plugin untuk Chrome dari sini
Edit nilai cookie hanya dengan mengakses plugin 'edit cookie ini' dari chrome seperti yang ditunjukkan di bawah ini.
Ada berbagai metodologi / pendekatan yang dapat kita jadikan acuan dalam melakukan suatu serangan.
Aplikasi Web - Metodologi PenTesting
Seseorang dapat mempertimbangkan standar berikut saat mengembangkan model serangan.
Di antara daftar berikut, OWASP adalah yang paling aktif dan terdapat sejumlah kontributor. Kami akan fokus pada Teknik OWASP yang akan dipertimbangkan oleh setiap tim pengembangan sebelum merancang aplikasi web.
PTES - Standar Eksekusi Pengujian Penetrasi
OSSTMM - Manual Metodologi Pengujian Keamanan Sumber Terbuka
Teknik Pengujian OWASP - Protokol Keamanan Aplikasi Web Terbuka
10 Teratas OWASP
Tim Protokol Keamanan Aplikasi Web Terbuka merilis 10 kerentanan teratas yang lebih umum di web dalam beberapa tahun terakhir. Di bawah ini adalah daftar kelemahan keamanan yang lebih umum terjadi pada aplikasi berbasis web.
Aplikasi - Hands On
Untuk memahami masing-masing teknik, mari kita bekerja dengan aplikasi sampel. Kami akan melakukan serangan pada 'WebGoat', aplikasi J2EE yang dikembangkan secara eksplisit dengan kelemahan keamanan untuk tujuan pembelajaran.
Rincian lengkap tentang proyek webgoat dapat ditemukan https://www.owasp.org/index.php/Category:OWASP_WebGoat_Project. Untuk Mengunduh Aplikasi WebGoat, Navigasikan kehttps://github.com/WebGoat/WebGoat/wiki/Installation-(WebGoat-6.0) dan bagian unduhan goto.
Untuk menginstal aplikasi yang diunduh, pertama-tama pastikan bahwa Anda tidak memiliki aplikasi yang berjalan pada Port 8080. Aplikasi tersebut dapat diinstal hanya dengan satu perintah - java -jar WebGoat-6.0.1-war-exec.jar. Untuk lebih jelasnya, kunjungi Instalasi WebGoat
Setelah Instalasi, kita dapat mengakses aplikasi dengan menavigasi ke http://localhost:8080/WebGoat/attack dan halaman akan ditampilkan seperti di bawah ini.
Kami dapat menggunakan kredensial tamu atau admin seperti yang ditampilkan di halaman login.
Proksi Web
Untuk mencegat lalu lintas antara klien (Browser) dan Server (Sistem di mana Aplikasi Webgoat di-host dalam kasus kami), kami perlu menggunakan proxy web. Kami akan menggunakan Burp Proxy yang dapat diunduh darihttps://portswigger.net/burp/download.html
Sudah cukup jika Anda mendownload versi gratis dari burp suite seperti yang ditunjukkan di bawah ini.
Mengonfigurasi Burp Suite
Burp Suite adalah proxy web yang dapat mencegat setiap paket informasi yang dikirim dan diterima oleh browser dan server web. Ini membantu kami untuk mengubah konten sebelum klien mengirimkan informasi ke Web-Server.
Step 1- Aplikasi diinstal pada port 8080 dan Burp diinstal pada port 8181 seperti yang ditunjukkan di bawah ini. Luncurkan Burp suite dan buat pengaturan berikut untuk memunculkannya di port 8181 seperti yang ditunjukkan di bawah ini.
Step 2- Kita harus memastikan bahwa Burp mendengarkan Port # 8080 tempat aplikasi diinstal sehingga Burp suite dapat mencegat lalu lintas. Pengaturan ini harus dilakukan pada tab cakupan Burp Suite seperti yang ditunjukkan di bawah ini.
Step 3- Kemudian buat pengaturan proxy browser Anda untuk mendengarkan port 8181 (port Burp Suite). Jadi kita telah mengkonfigurasi proxy Web untuk mencegat lalu lintas antara klien (browser) dan server (Webserver) seperti yang ditunjukkan di bawah ini -
Step 4 - Cuplikan konfigurasi ditampilkan di bawah ini dengan bantuan diagram alur kerja sederhana seperti yang ditunjukkan di bawah ini
Teknik injeksi terdiri dari memasukkan kueri SQL atau perintah menggunakan kolom input aplikasi.
Aplikasi Web - Injeksi
Injeksi SQL yang berhasil dapat membaca, mengubah data sensitif dari database, dan juga menghapus data dari database. Ini juga memungkinkan peretas untuk melakukan operasi administratif pada database seperti mematikan DBMS / menjatuhkan database.
Mari kita pahami Agen Ancaman, Vektor Penyerang, Kelemahan Keamanan, Dampak Teknis, dan Dampak Bisnis dari kelemahan ini dengan bantuan diagram sederhana.
Contoh
Aplikasi menggunakan data tidak tepercaya dalam pembuatan panggilan SQL rentan berikut -
String query = "SELECT * FROM EMP WHERE EMPID = '" + request.getParameter("id") + "'";
Tangan di atas
Step 1 - Arahkan ke area SQL Injection aplikasi seperti yang ditunjukkan di bawah ini.
Step 2- Seperti yang diberikan dalam latihan, kami menggunakan String SQL Injection untuk melewati otentikasi. Gunakan injeksi SQL untuk masuk sebagai bos ('Neville') tanpa menggunakan kata sandi yang benar. Verifikasi bahwa profil Neville dapat dilihat dan semua fungsi tersedia (termasuk Cari, Buat, dan Hapus).
Step 3 - Kami akan menginjeksi SQL sehingga kami dapat melewati kata sandi dengan mengirimkan parameter sebagai 'a' = 'a' atau 1 = 1
Step 4 - Pasca Eksploitasi, kita dapat login sebagai Neville yang merupakan Admin seperti yang ditunjukkan di bawah ini.
Mencegah Injeksi SQL
Ada banyak cara untuk mencegah injeksi SQL. Saat pengembang menulis kode, mereka harus memastikan bahwa mereka menangani karakter khusus yang sesuai. Ada lembar contekan / teknik pencegahan yang tersedia dari OWASP yang jelas merupakan panduan bagi pengembang.
- Menggunakan Kueri Parameter
- Keluar dari semua Input yang Disediakan Pengguna
- Aktifkan Least Privilege untuk database bagi pengguna akhir
Ketika fungsi otentikasi yang terkait dengan aplikasi tidak diimplementasikan dengan benar, itu memungkinkan peretas untuk menyusupi kata sandi atau ID sesi atau untuk mengeksploitasi kelemahan implementasi lainnya menggunakan kredensial pengguna lain.
Mari kita pahami Agen Ancaman, Vektor Penyerang, Kelemahan Keamanan, Dampak Teknis, dan Dampak Bisnis dari kelemahan ini dengan bantuan diagram sederhana.
Contoh
An e-commerce application supports URL rewriting, putting session IDs in the URL −
http://example.com/sale/saleitems/jsessionid=2P0OC2JSNDLPSKHCJUN2JV/?item=laptop
Pengguna situs yang diautentikasi meneruskan URL ke teman mereka untuk mengetahui tentang penjualan diskon. Dia mengirim email tautan di atas tanpa mengetahui bahwa pengguna juga memberikan ID sesi. Saat teman-temannya menggunakan tautan tersebut, mereka menggunakan sesi dan kartu kreditnya.
Tangan di atas
Step 1- Masuk ke Webgoat dan arahkan ke Bagian 'Cacat Manajemen Sesi'. Mari kita melewati authetication dengan spoofing cookie. Di bawah ini adalah snapshot dari skenario tersebut.
Step 2 - Saat kami masuk menggunakan kredensial webgoat / webgoat, kami menemukan dari Burp Suite bahwa ID JSESSION adalah C8F3177CCAFF380441ABF71090748F2E sedangkan AuthCookie = 65432ubphcfx setelah otentikasi berhasil.
Step 3 - Saat kami masuk menggunakan aspek / aspek kredensial, kami menemukan dari Burp Suite bahwa ID JSESSION adalah C8F3177CCAFF380441ABF71090748F2E sedangkan AuthCookie = 65432udfqtb setelah otentikasi berhasil.
Step 4- Sekarang kita perlu menganalisis Pola AuthCookie. Paruh pertama '65432' adalah umum untuk kedua otentikasi. Karenanya kami sekarang tertarik untuk menganalisis bagian terakhir dari nilai authcookie seperti - ubphcfx untuk pengguna webgoat dan udfqtb untuk pengguna aspek.
Step 5- Jika kita melihat lebih dalam pada nilai AuthCookie, bagian terakhir memiliki panjang yang sama dengan nama pengguna. Oleh karena itu jelaslah bahwa nama pengguna digunakan dengan beberapa metode enkripsi. Setelah mekanisme trial and error / brute force, kami menemukan bahwa setelah membalik nama pengguna, webgoat; kami berakhir dengan taogbew dan kemudian karakter alfabet sebelumnya adalah apa yang digunakan sebagai AuthCookie. yaitu ubphcfx.
Step 6- Jika kita meneruskan nilai cookie ini dan mari kita lihat apa yang terjadi. Setelah mengautentikasi sebagai webgoat pengguna, ubah nilai AuthCookie untuk mengejek pengguna Alice dengan mencari AuthCookie yang sama dengan melakukan langkah # 4 dan langkah # 5.
Mekanisme Pencegahan
Kembangkan otentikasi yang kuat dan kontrol manajemen sesi sehingga memenuhi semua otentikasi dan persyaratan manajemen sesi yang ditentukan dalam Standar Verifikasi Keamanan Aplikasi OWASP.
Pengembang harus memastikan bahwa mereka menghindari kelemahan XSS yang dapat digunakan untuk mencuri ID sesi.
Cross-site Scripting (XSS) terjadi setiap kali aplikasi mengambil data yang tidak tepercaya dan mengirimkannya ke klien (browser) tanpa validasi. Hal ini memungkinkan penyerang untuk mengeksekusi skrip berbahaya di browser korban yang dapat mengakibatkan pembajakan sesi pengguna, merusak situs web, atau mengarahkan pengguna ke situs jahat.
Mari kita pahami Agen Ancaman, Vektor Penyerang, Kelemahan Keamanan, Dampak Teknis, dan Dampak Bisnis dari kelemahan ini dengan bantuan diagram sederhana.
Jenis XSS
Stored XSS - XSS yang disimpan juga dikenal sebagai XSS persisten terjadi ketika input pengguna disimpan di server target seperti database / forum pesan / kolom komentar, dll. Kemudian korban dapat mengambil data yang disimpan dari aplikasi web.
Reflected XSS - XSS yang direfleksikan juga dikenal sebagai XSS non-persisten terjadi ketika input pengguna segera dikembalikan oleh aplikasi web dalam pesan kesalahan / hasil pencarian atau input yang diberikan oleh pengguna sebagai bagian dari permintaan dan tanpa menyimpan data yang diberikan pengguna secara permanen.
DOM Based XSS - DOM Berbasis XSS adalah bentuk XSS jika sumber datanya ada di DOM, sink juga ada di DOM, dan aliran data tidak pernah meninggalkan browser.
Contoh
Aplikasi menggunakan data tidak tepercaya dalam konstruksi tanpa validasi. Karakter khusus harus di-escape.
http://www.webpage.org/task/Rule1?query=try
Penyerang mengubah parameter kueri di browsernya menjadi -
http://www.webpage.org/task/Rule1?query=<h3>Hello from XSS"</h3>
Tangan di atas
Step 1- Masuk ke Webgoat dan arahkan ke Bagian pembuatan skrip lintas situs (XSS). Mari kita jalankan serangan Stored Cross-site Scripting (XSS). Di bawah ini adalah snapshot dari skenario tersebut.
Step 2- Sesuai skenario, mari kita login sebagai Tom dengan kata sandi 'tom' seperti yang disebutkan dalam skenario itu sendiri. Klik 'lihat profil' dan masuk ke mode edit. Karena tom adalah penyerang, mari kita masukkan skrip Java ke dalam kotak edit tersebut.
<script>
alert("HACKED")
</script>
Step 3 - Segera setelah pembaruan selesai, tom menerima kotak peringatan dengan pesan "diretas" yang berarti aplikasi tersebut rentan.
Step 4 - Sekarang sesuai skenario, kita perlu login sebagai jerry (HR) dan memeriksa apakah jerry dipengaruhi oleh skrip yang diinjeksi.
Step 5 - Setelah masuk sebagai Jerry, pilih 'Tom' dan klik 'lihat profil' seperti yang ditunjukkan di bawah ini.
Saat melihat profil tom dari akun Jerry, dia bisa mendapatkan kotak pesan yang sama.
Step 6 - Kotak pesan ini hanyalah sebuah contoh, tetapi penyerang sebenarnya dapat melakukan lebih dari sekedar menampilkan kotak pesan.
Mekanisme Pencegahan
Pengembang harus memastikan bahwa mereka keluar dari semua data yang tidak tepercaya berdasarkan konteks HTML seperti body, atribut, JavaScript, CSS, atau URL tempat data ditempatkan.
Untuk aplikasi yang membutuhkan karakter khusus sebagai masukan, harus ada mekanisme validasi yang kuat sebelum menerimanya sebagai masukan yang valid.
Referensi objek langsung kemungkinan terjadi saat pengembang mengekspos referensi ke objek implementasi internal, seperti file, direktori, atau kunci database tanpa mekanisme validasi apa pun yang memungkinkan penyerang memanipulasi referensi ini untuk mengakses data yang tidak sah.
Mari kita pahami Agen Ancaman, Vektor Penyerang, Kelemahan Keamanan, Dampak Teknis, dan Dampak Bisnis dari kelemahan ini dengan bantuan diagram sederhana.
Contoh
Aplikasi menggunakan data yang belum diverifikasi dalam panggilan SQL yang mengakses informasi akun.
String sqlquery = "SELECT * FROM useraccounts WHERE account = ?";
PreparedStatement st = connection.prepareStatement(sqlquery, ??);
st.setString( 1, request.getParameter("acct"));
ResultSet results = st.executeQuery( );
Penyerang mengubah parameter kueri di browsernya untuk diarahkan ke Admin.
http://webapp.com/app/accountInfo?acct=admin
Tangan di atas
Step 1- Login ke Webgoat dan arahkan ke Bagian kelemahan kontrol akses. Tujuannya adalah untuk mengambil tomcat-users.xml dengan menavigasi ke jalur tempatnya berada. Di bawah ini adalah snapshot dari skenario tersebut.
Step 2 - Jalur file ditampilkan di bidang 'direktori saat ini adalah' - C: \ Users \ userName $ \. Ekstrak \ webapps \ WebGoat \ lesson_plans \ en dan kami juga tahu bahwa file tomcat-users.xml disimpan di bawah C: \ xampp \ tomcat \ conf
Step 3- Kita perlu menelusuri semua jalan keluar dari direktori saat ini dan menavigasi dari C: \ Drive. Kita dapat melakukan hal yang sama dengan mencegat lalu lintas menggunakan Burp Suite.
Step 4 - Jika percobaan berhasil, ini akan menampilkan tomcat-users.xml dengan pesan "Selamat. Anda telah berhasil menyelesaikan pelajaran ini."
Mekanisme Pencegahan
Pengembang dapat menggunakan sumber daya / poin berikut sebagai panduan untuk mencegah referensi objek langsung yang tidak aman selama fase pengembangan itu sendiri.
Pengembang harus menggunakan hanya satu pengguna atau sesi untuk referensi objek tidak langsung.
Direkomendasikan juga untuk memeriksa akses sebelum menggunakan referensi objek langsung dari sumber yang tidak tepercaya.
Kesalahan Konfigurasi Keamanan muncul saat pengaturan Keamanan ditentukan, diterapkan, dan dipertahankan sebagai default. Keamanan yang baik memerlukan konfigurasi aman yang ditentukan dan diterapkan untuk aplikasi, server web, server basis data, dan platform. Sama pentingnya untuk memperbarui perangkat lunak.
Contoh
Beberapa contoh klasik kesalahan konfigurasi keamanan seperti yang diberikan -
Jika daftar Direktori tidak dinonaktifkan di server dan jika penyerang menemukan hal yang sama maka penyerang dapat dengan mudah membuat daftar direktori untuk menemukan file apa pun dan menjalankannya. Dimungkinkan juga untuk mendapatkan basis kode aktual yang berisi semua kode kustom Anda dan kemudian menemukan kelemahan serius dalam aplikasi.
Konfigurasi server aplikasi memungkinkan pelacakan tumpukan dikembalikan ke pengguna, berpotensi mengungkap kelemahan yang mendasarinya. Penyerang mengambil informasi tambahan yang disediakan oleh pesan kesalahan yang cukup untuk mereka tembus.
Server aplikasi biasanya dilengkapi dengan aplikasi sampel yang tidak diamankan dengan baik. Jika tidak dihapus dari server produksi akan mengakibatkan server Anda dikompromikan.
Tangan di atas
Step 1- Luncurkan Webgoat dan navigasikan ke bagian konfigurasi yang tidak aman dan biarkan kami mencoba menyelesaikan tantangan itu. Snapshot yang sama disediakan di bawah -
Step 2- Kami dapat mencoba opsi sebanyak yang kami bisa pikirkan. Yang kita butuhkan untuk menemukan URL file konfigurasi dan kita tahu bahwa para pengembang mengikuti jenis konvensi penamaan untuk file konfigurasi. Bisa apa saja yang tercantum di bawah ini. Biasanya dilakukan dengan teknik BRUTE force.
- web.config
- config
- appname.config
- conf
Step 3 - Setelah mencoba berbagai opsi, kami menemukan bahwa 'http://localhost:8080/WebGoat/conf' berhasil. Halaman berikut ditampilkan jika upaya tersebut berhasil -
Mekanisme Pencegahan
Semua lingkungan seperti Pengembangan, QA, dan lingkungan produksi harus dikonfigurasi secara identik menggunakan kata sandi berbeda yang digunakan di setiap lingkungan yang tidak dapat diretas dengan mudah.
Pastikan bahwa arsitektur aplikasi yang kuat diadopsi yang menyediakan pemisahan yang efektif dan aman antar komponen.
Itu juga dapat meminimalkan kemungkinan serangan ini dengan menjalankan pemindaian otomatis dan melakukan audit secara berkala.
Karena aplikasi online terus membanjiri internet dari hari ke hari, tidak semua aplikasi diamankan. Banyak aplikasi web tidak melindungi data sensitif pengguna seperti informasi kartu kredit / info rekening bank / kredensial otentikasi. Peretas mungkin akhirnya mencuri data yang dilindungi dengan lemah itu untuk melakukan penipuan kartu kredit, pencurian identitas, atau kejahatan lainnya.
Mari kita pahami Agen Ancaman, Vektor Penyerang, Kelemahan Keamanan, Dampak Teknis, dan Dampak Bisnis dari kelemahan ini dengan bantuan diagram sederhana.
Contoh
Beberapa contoh klasik kesalahan konfigurasi keamanan seperti yang diberikan -
Sebuah situs tidak menggunakan SSL untuk semua halaman yang diautentikasi. Ini memungkinkan penyerang untuk memantau lalu lintas jaringan dan mencuri cookie sesi pengguna untuk membajak sesi pengguna atau mengakses data pribadi mereka.
Aplikasi menyimpan nomor kartu kredit dalam format terenkripsi dalam database. Setelah pengambilan mereka didekripsi memungkinkan peretas untuk melakukan serangan injeksi SQL untuk mengambil semua info sensitif dalam teks yang jelas. Ini dapat dihindari dengan mengenkripsi nomor kartu kredit menggunakan kunci publik dan mengizinkan aplikasi back-end untuk mendekripsi mereka dengan kunci pribadi.
Tangan di atas
Step 1- Luncurkan WebGoat dan arahkan ke Bagian "Penyimpanan Tidak Aman". Foto yang sama ditampilkan di bawah.
Step 2- Masukkan nama pengguna dan kata sandi. Saatnya untuk mempelajari berbagai jenis pengkodean dan metodologi enkripsi yang telah kita bahas sebelumnya.
Mekanisme Pencegahan
Disarankan untuk tidak menyimpan data sensitif secara tidak perlu dan harus dihapus sesegera mungkin jika tidak diperlukan lagi.
Penting untuk memastikan bahwa kami menggabungkan algoritme enkripsi yang kuat dan standar yang digunakan serta manajemen kunci yang tepat.
Ini juga dapat dihindari dengan menonaktifkan pelengkapan otomatis pada formulir yang mengumpulkan data sensitif seperti sandi dan menonaktifkan cache untuk halaman yang berisi data sensitif.
Sebagian besar aplikasi web memverifikasi hak akses tingkat fungsi sebelum membuat fungsionalitas tersebut dapat diakses oleh pengguna. Namun, jika pemeriksaan kontrol akses yang sama tidak dilakukan di server, peretas dapat masuk ke dalam aplikasi tanpa otorisasi yang tepat.
Mari kita pahami Agen Ancaman, Vektor Penyerang, Kelemahan Keamanan, Dampak Teknis, dan Dampak Bisnis dari kelemahan ini dengan bantuan diagram sederhana.
Contoh
Berikut adalah contoh klasik Kontrol Akses Tingkat Fungsi yang Hilang -
Peretas hanya memaksa URL target. Biasanya akses admin memerlukan otentikasi, namun jika akses aplikasi tidak diverifikasi, maka pengguna yang tidak berkepentingan dapat mengakses halaman admin.
' Below URL might be accessible to an authenticated user
http://website.com/app/standarduserpage
' A NON Admin user is able to access admin page without authorization.
http://website.com/app/admin_page
Tangan di atas
Step 1 - Izinkan kami masuk sebagai pengelola akun dengan terlebih dahulu menelusuri daftar pengguna dan hak akses mereka.
Step 2 - Setelah mencoba berbagai kombinasi, kami dapat mengetahui bahwa Larry memiliki akses ke pengelola akun sumber daya.
Mekanisme Pencegahan
Mekanisme otentikasi harus menolak semua akses secara default, dan memberikan akses ke peran tertentu untuk setiap fungsi.
Dalam aplikasi berbasis alur kerja, verifikasi status pengguna sebelum mengizinkan mereka mengakses sumber daya apa pun.
Serangan CSRF memaksa pengguna yang diautentikasi (korban) untuk mengirim permintaan HTTP yang dipalsukan, termasuk cookie sesi korban ke aplikasi web yang rentan, yang memungkinkan penyerang untuk memaksa browser korban membuat permintaan sedemikian rupa sehingga aplikasi yang rentan menganggapnya sebagai permintaan yang sah dari korban.
Mari kita pahami Agen Ancaman, Vektor Penyerang, Kelemahan Keamanan, Dampak Teknis, dan Dampak Bisnis dari kelemahan ini dengan bantuan diagram sederhana.
Contoh
Berikut adalah contoh klasik CSRF -
Step 1 - Misalkan, aplikasi yang rentan mengirimkan permintaan perubahan status sebagai teks biasa tanpa enkripsi apa pun.
http://bankx.com/app?action=transferFund&amount=3500&destinationAccount=4673243243
Step 2 - Sekarang peretas membuat permintaan yang mentransfer uang dari akun korban ke akun penyerang dengan menyematkan permintaan dalam gambar yang disimpan di berbagai situs di bawah kendali penyerang -
<img src = "http://bankx.com/app?action=transferFunds&amount=14000&destinationAccount=attackersAcct#"
width = "0" height = "0" />
Tangan di atas
Step 1- Mari kita melakukan pemalsuan CSRF dengan menyematkan skrip Java ke dalam gambar. Cuplikan dari masalah tersebut tercantum di bawah ini.
Step 2 - Sekarang kita perlu memalsukan transfer menjadi gambar 1x1 dan membuat korban mengklik yang sama.
Step 3 - Setelah mengirimkan pesan, pesan akan ditampilkan seperti yang disorot di bawah.
Step 4- Sekarang jika korban mengklik URL berikut, transfer dijalankan, yang dapat ditemukan mencegat tindakan pengguna menggunakan burp suite. Kami dapat melihat transfer dengan melihatnya di Dapatkan pesan seperti yang ditunjukkan di bawah ini -
Step 5 - Sekarang setelah mengklik segarkan, tanda penyelesaian pelajaran ditampilkan.
Mekanisme Pencegahan
CSRF dapat dihindari dengan membuat token unik di bidang tersembunyi yang akan dikirim dalam isi permintaan HTTP daripada di URL, yang lebih rentan terhadap paparan.
Memaksa pengguna untuk mengautentikasi ulang atau membuktikan bahwa mereka adalah pengguna untuk melindungi CSRF. Misalnya, CAPTCHA.
Jenis ancaman ini terjadi ketika komponen seperti pustaka dan kerangka kerja yang digunakan dalam aplikasi hampir selalu dijalankan dengan hak istimewa penuh. Jika komponen yang rentan dieksploitasi, itu membuat pekerjaan peretas lebih mudah untuk menyebabkan kehilangan data yang serius atau pengambilalihan server.
Mari kita pahami Agen Ancaman, Vektor Penyerang, Kelemahan Keamanan, Dampak Teknis, dan Dampak Bisnis dari kelemahan ini dengan bantuan diagram sederhana.
Contoh
Contoh berikut adalah menggunakan komponen dengan kerentanan yang diketahui -
Penyerang dapat menjalankan layanan web apa pun dengan izin penuh dengan gagal memberikan token identitas.
Eksekusi kode jarak jauh dengan kerentanan injeksi Bahasa Ekspresi diperkenalkan melalui Spring Framework untuk aplikasi berbasis Java.
Mekanisme Pencegahan
Identifikasi semua komponen dan versi yang digunakan di aplikasi web tidak hanya terbatas pada database / kerangka kerja.
Selalu perbarui semua komponen seperti database publik, milis proyek, dll.
Tambahkan pembungkus keamanan di sekitar komponen yang bersifat rentan.
Sebagian besar aplikasi web di internet sering mengarahkan dan meneruskan pengguna ke halaman lain atau situs web eksternal lainnya. Namun, tanpa memvalidasi kredibilitas halaman tersebut, peretas dapat mengarahkan korban ke situs phishing atau malware, atau menggunakan penerusan untuk mengakses halaman yang tidak sah.
Mari kita pahami Agen Ancaman, Vektor Penyerang, Kelemahan Keamanan, Dampak Teknis, dan Dampak Bisnis dari kelemahan ini dengan bantuan diagram sederhana.
Contoh
Beberapa contoh klasik Pengalihan dan Penerusan yang Tidak Divalidasi seperti yang diberikan -
Katakanlah aplikasi tersebut memiliki halaman - redirect.jsp, yang mengambil parameter redirectrul . Peretas menambahkan URL jahat yang mengarahkan ulang pengguna yang melakukan phishing / menginstal malware.
http://www.mywebapp.com/redirect.jsp?redirectrul=hacker.com
Semua aplikasi web digunakan untuk meneruskan pengguna ke berbagai bagian situs. Untuk mencapai hal yang sama, beberapa halaman menggunakan parameter untuk menunjukkan ke mana pengguna harus diarahkan jika suatu operasi berhasil. Penyerang membuat URL yang melewati pemeriksaan kontrol akses aplikasi dan kemudian meneruskan penyerang ke fungsi administratif yang aksesnya tidak dimiliki oleh penyerang.
http://www.mywebapp.com/checkstatus.jsp?fwd=appadmin.jsp
Mekanisme Pencegahan
Lebih baik hindari menggunakan pengalihan dan penerusan.
Jika tidak dapat dihindari, maka itu harus dilakukan tanpa melibatkan parameter pengguna dalam mengarahkan tujuan.
Asynchronous Javascript and XML (AJAX) adalah salah satu teknik terbaru yang digunakan untuk mengembangkan aplikasi web agar dapat memberikan pengalaman pengguna yang kaya. Karena ini adalah teknologi baru, ada banyak masalah keamanan yang belum diselesaikan dan di bawah ini adalah beberapa masalah keamanan di AJAX.
Permukaan serangan lebih banyak karena ada lebih banyak input yang harus diamankan.
Ini juga mengekspos fungsi internal aplikasi.
Kegagalan untuk melindungi informasi dan sesi otentikasi.
Ada garis yang sangat sempit antara sisi klien dan sisi server, oleh karena itu ada kemungkinan melakukan kesalahan keamanan.
Contoh
Berikut adalah contoh untuk AJAX Security -
Pada tahun 2006, worm menginfeksi layanan yahoo mail menggunakan XSS dan AJAX yang memanfaatkan kerentanan dalam penanganan event onload Yahoo Mail. Ketika email yang terinfeksi dibuka, worm tersebut mengeksekusi JavaScript-nya, mengirimkan salinan ke semua kontak Yahoo dari pengguna yang terinfeksi.
Tangan di atas
Step 1- Kami perlu mencoba menambahkan lebih banyak hadiah ke set hadiah Anda yang diizinkan menggunakan injeksi XML. Di bawah ini adalah snapshot dari skenario tersebut.
Step 2- Pastikan bahwa kami mencegat permintaan dan tanggapan menggunakan Burp Suite. Pengaturannya sama seperti yang ditunjukkan di bawah ini.
Step 3- Masukkan nomor rekening seperti yang diberikan dalam skenario. Kami akan bisa mendapatkan daftar semua hadiah yang memenuhi syarat untuk kami. Kami memenuhi syarat untuk 3 hadiah dari 5.
Step 4- Sekarang mari kita klik 'Kirim' dan lihat apa yang kita dapatkan di XML tanggapan. Seperti yang ditunjukkan di bawah ini, tiga penghargaan yang berhak kami berikan kepada kami sebagai XML.
Step 5 - Sekarang mari kita edit XML itu dan tambahkan dua hadiah lainnya juga.
Step 6- Sekarang semua hadiah akan ditampilkan kepada pengguna untuk mereka pilih. Pilih salah satu yang kami tambahkan dan klik 'Kirim'.
Step 7 - Pesan berikut muncul mengatakan, "* Selamat. Anda telah berhasil menyelesaikan pelajaran ini."
Mekanisme Pencegahan
Sisi klien -
- Gunakan .innerText, bukan .innerHtml.
- Jangan gunakan eval.
- Jangan mengandalkan logika klien untuk keamanan.
- Hindari menulis kode serialisasi.
- Hindari membuat XML secara dinamis.
- Jangan pernah menyebarkan rahasia kepada klien.
- Jangan lakukan enkripsi dalam kode sisi klien.
- Jangan melakukan logika yang memengaruhi keamanan di sisi klien.
Sisi server -
- Gunakan perlindungan CSRF.
- Hindari menulis kode serialisasi.
- Layanan dapat dipanggil oleh pengguna secara langsung.
- Hindari membuat XML dengan tangan, gunakan kerangka kerja.
- Hindari membuat JSON dengan tangan, gunakan kerangka kerja yang sudah ada.
Dalam aplikasi berbasis web modern, penggunaan layanan web tidak dapat dihindari dan mereka juga rentan terhadap serangan. Karena layanan web meminta pengambilan dari beberapa situs web, pengembang harus mengambil beberapa langkah tambahan untuk menghindari segala jenis penetrasi oleh peretas.
Tangan di atas
Step 1- Arahkan ke area layanan web Webgoat dan buka Pemindaian WSDL. Kami sekarang perlu mendapatkan detail kartu kredit dari beberapa nomor akun lain. Cuplikan skenario seperti yang disebutkan di bawah ini.
Step 2 - Jika kita memilih nama depan, panggilan fungsi 'getFirstName' dilakukan melalui permintaan SOAP xml.
Step 3- Dengan membuka WSDL, kita dapat melihat bahwa ada metode untuk mendapatkan kembali informasi kartu kredit serta 'getCreditCard'. Sekarang mari kita ubah input menggunakan Burp suite seperti yang ditunjukkan di bawah ini -
Step 4 - Sekarang mari kita ubah input menggunakan Burp suite seperti yang ditunjukkan di bawah ini -
Step 5 - Kami bisa mendapatkan informasi kartu kredit pengguna lain.
Mekanisme Pencegahan
Karena pesan SOAP berbasis XML, semua kredensial yang diteruskan harus diubah ke format teks. Oleh karena itu, seseorang harus sangat berhati-hati dalam menyampaikan informasi sensitif yang harus selalu dienkripsi.
Melindungi integritas pesan dengan menerapkan mekanisme seperti checksum yang diterapkan untuk memastikan integritas paket.
Melindungi kerahasiaan pesan - Enkripsi asimetris diterapkan untuk melindungi kunci sesi simetris, yang dalam banyak implementasi hanya valid untuk satu komunikasi dan kemudian dibuang.
Buffer overflow muncul ketika program mencoba menyimpan lebih banyak data di area penyimpanan data sementara (buffer) daripada yang dimaksudkan untuk disimpan. Karena buffer dibuat untuk menampung sejumlah data yang terbatas, informasi tambahan dapat meluap ke buffer yang berdekatan, sehingga merusak data valid yang ada di dalamnya.
Contoh
Berikut adalah contoh klasik buffer overflow. Ini menunjukkan buffer overflow sederhana yang disebabkan oleh skenario pertama yang mengandalkan data eksternal untuk mengontrol perilakunya. Tidak ada cara untuk membatasi jumlah data yang telah dimasukkan pengguna dan perilaku program bergantung pada berapa banyak karakter yang telah dimasukkan pengguna di dalamnya.
...
char bufr[BUFSIZE];
gets(bufr);
...
Tangan di atas
Step 1- Kita perlu login dengan nama dan nomor kamar untuk mendapatkan akses internet. Berikut adalah snapshot skenario.
Step 2 - Kami juga akan mengaktifkan "Perlihatkan bidang formulir tersembunyi" di Burp Suite seperti yang ditunjukkan di bawah ini -
Step 3- Sekarang kami mengirim masukan di bidang nama dan nomor kamar. Kami juga mencoba menyuntikkan angka yang cukup besar di bidang nomor kamar.
Step 4- Bidang tersembunyi ditampilkan seperti yang ditunjukkan di bawah ini. Kami klik terima persyaratan.
Step 5 - Serangan berhasil sehingga sebagai hasil dari buffer overflow, serangan tersebut mulai membaca lokasi memori yang berdekatan dan ditampilkan kepada pengguna seperti yang ditunjukkan di bawah ini.
Step 6- Sekarang mari kita login menggunakan data yang ditampilkan. Setelah masuk, pesan berikut ini ditampilkan -
Mekanisme Pencegahan
- Peninjauan Kode
- Pelatihan pengembang
- Alat penyusun
- Mengembangkan fungsi Aman
- Pemindaian Berkala
Serangan Denial of Service (DoS) adalah upaya peretas untuk membuat sumber daya jaringan tidak tersedia. Biasanya mengganggu host, sementara atau tanpa batas waktu, yang terhubung ke internet. Serangan ini biasanya menargetkan layanan yang dihosting di server web penting seperti bank, gateway pembayaran kartu kredit.
Gejala DoS
- Performa jaringan yang sangat lambat.
- Tidak tersedianya situs web tertentu.
- Ketidakmampuan untuk mengakses situs web mana pun.
- Peningkatan dramatis dalam jumlah email spam yang diterima.
- Penolakan akses jangka panjang ke web atau layanan internet apa pun.
- Tidak tersedianya situs web tertentu.
Tangan di atas
Step 1- Luncurkan WebGoat dan arahkan ke bagian 'Denial of Service'. Cuplikan skenario diberikan di bawah ini. Kita perlu login beberapa kali di sana dengan melanggar ukuran kumpulan thread DB maksimum.
Step 2- Pertama kita perlu mendapatkan daftar login yang valid. Kami menggunakan SQL Injection dalam kasus ini.
Step 3 - Jika percobaan berhasil, maka ini akan menampilkan semua kredensial yang valid kepada pengguna.
Step 4- Sekarang login dengan masing-masing pengguna ini setidaknya dalam 3 sesi berbeda untuk membuat serangan DoS berhasil. Seperti kita ketahui bahwa koneksi DB hanya dapat menangani dua thread, dengan menggunakan semua login ini akan membuat tiga thread yang membuat serangan berhasil.
Mekanisme Pencegahan
Lakukan validasi input secara menyeluruh.
Hindari operasi yang memakan banyak CPU.
Lebih baik memisahkan disk data dari disk sistem.
Pengembang sering kali secara langsung menggunakan atau menggabungkan input yang berpotensi rentan dengan file atau menganggap bahwa file input itu asli. Jika data tidak diperiksa dengan benar, ini dapat menyebabkan konten yang rentan diproses atau dipanggil oleh server web.
Contoh
Beberapa contoh klasik termasuk -
- Unggah file .jsp ke pohon web.
- Unggah .gif untuk diubah ukurannya.
- Unggah file besar.
- Unggah file yang berisi tag.
- Unggah file .exe ke pohon web.
Tangan di atas
Step 1- Luncurkan WebGoat dan arahkan ke bagian eksekusi file Berbahaya. Gambaran skenario diberikan di bawah ini -
Step 2 - Untuk menyelesaikan pelajaran ini, kita perlu mengunggah guest.txt di lokasi yang disebutkan di atas.
Step 3- Mari kita membuat file jsp sehingga file guest.txt dibuat saat menjalankan jsp. Penamaan jsp tidak memiliki peran untuk dimainkan dalam konteks ini karena kami menjalankan konten file jsp.
<HTML>
<% java.io.File file = new
java.io.File("C:\\Users\\username$\\.extract\\webapps\\WebGoat\\mfe_target\\guest.txt");
file.createNewFile(); %>
</HTML>
Step 4- Sekarang unggah file jsp dan salin lokasi tautan yang sama setelah mengunggah. Unggahan mengharapkan gambar, tetapi kami mengunggah jsp.
Step 5 - Dengan menavigasi ke file jsp, tidak akan ada pesan apa pun ke pengguna.
Step 6 - Sekarang segarkan sesi di mana Anda telah mengunggah file jsp dan Anda akan mendapatkan pesan yang mengatakan, "* Selamat. Anda telah berhasil menyelesaikan pelajaran".
Mekanisme Pencegahan
- Amankan situs web menggunakan izin situs web.
- Mengadopsi tindakan pencegahan untuk keamanan aplikasi web.
- Memahami akun pengguna dan grup bawaan di IIS 7.0.
Ada berbagai alat yang tersedia untuk melakukan pengujian keamanan suatu aplikasi. Ada beberapa alat yang dapat melakukan pengujian keamanan ujung ke ujung sementara beberapa alat didedikasikan untuk menemukan jenis cacat tertentu dalam sistem.
Alat Sumber Terbuka
Beberapa alat pengujian keamanan open source diberikan -
S.No. | Nama Alat |
---|---|
1 | Zed Attack Proxy Menyediakan Pemindai Otomatis dan alat lain untuk menemukan kelemahan keamanan. https://www.owasp.org |
2 | OWASP WebScarab Dikembangkan di Java untuk Menganalisis permintaan Http dan Https. https://www.owasp.org/index.php |
3 | OWASP Mantra Mendukung kerangka kerja pengujian keamanan multi-bahasa https://www.owasp.org/index.php/OWASP_Mantra_-_Security_Framework |
4 | Burp Proxy Alat untuk Mencegat & Modyfying lalu lintas dan bekerja dengan sertifikat SSL khusus. https://www.portswigger.net/Burp/ |
5 | Firefox Tamper Data Gunakan tamperdata untuk melihat dan mengubah header HTTP / HTTPS dan parameter posting https://addons.mozilla.org/en-US |
6 | Firefox Web Developer Tools Ekstensi Pengembang Web menambahkan berbagai alat pengembang web ke browser. https://addons.mozilla.org/en-US/firefox |
7 | Cookie Editor Memungkinkan pengguna menambahkan, menghapus, mengedit, mencari, melindungi, dan memblokir cookie https://chrome.google.com/webstore |
Set Alat Khusus
Alat-alat berikut dapat membantu kami menemukan jenis kerentanan tertentu dalam sistem -
S.No. | Tautan |
---|---|
1 | DOMinator Pro − Testing for DOM XSS https://dominator.mindedsecurity.com/ |
2 | OWASP SQLiX − SQL Injection https://www.owasp.org/index.php |
3 | Sqlninja − SQL Injection http://sqlninja.sourceforge.net/ |
4 | SQLInjector − SQL Injection https://sourceforge.net/projects/safe3si/ |
5 | sqlpowerinjector − SQL Injection http://www.sqlpowerinjector.com/ |
6 | SSL Digger − Testing SSL https://www.mcafee.com/us/downloads/free-tools |
7 | THC-Hydra − Brute Force Password https://www.thc.org/thc-hydra/ |
8 | Brutus − Brute Force Password http://www.hoobie.net/brutus/ |
9 | Ncat − Brute Force Password https://nmap.org/ncat/ |
10 | OllyDbg − Testing Buffer Overflow http://www.ollydbg.de/ |
11 | Spike − Testing Buffer Overflow https://www.immunitysec.com/downloads/SPIKE2.9.tgz |
12 | Metasploit − Testing Buffer Overflow https://www.metasploit.com/ |
Alat Pengujian Kotak Hitam Komersial
Berikut adalah beberapa alat pengujian kotak hitam komersial yang membantu kami menemukan masalah keamanan dalam aplikasi yang kami kembangkan.
S.No | Alat |
---|---|
1 | NGSSQuirreL https://www.nccgroup.com/en/our-services |
2 | IBM AppScan https://www-01.ibm.com/software/awdtools/appscan/ |
3 | Acunetix Web Vulnerability Scanner https://www.acunetix.com/ |
4 | NTOSpider https://www.ntobjectives.com/products/ntospider.php |
5 | SOAP UI https://www.soapui.org/Security/getting-started.html |
6 | Netsparker https://www.mavitunasecurity.com/netsparker/ |
7 | HP WebInspect http://www.hpenterprisesecurity.com/products |
Penganalisis Kode Sumber Gratis
S.No | Alat |
---|---|
1 | OWASP Orizon https://www.owasp.org/index.php |
2 | OWASP O2 https://www.owasp.org/index.php/OWASP_O2_Platform |
3 | SearchDiggity https://www.bishopfox.com/resources/tools |
4 | FXCOP https://www.owasp.org/index.php/FxCop |
5 | Splint http://splint.org/ |
6 | Boon https://www.cs.berkeley.edu/~daw/boon/ |
7 | W3af http://w3af.org/ |
8 | FlawFinder https://www.dwheeler.com/flawfinder/ |
9 | FindBugs http://findbugs.sourceforge.net/ |
Penganalisis Kode Sumber Komersial
Penganalisis ini memeriksa, mendeteksi, dan melaporkan kelemahan dalam kode sumber, yang rentan terhadap kerentanan -
S.No | Alat |
---|---|
1 | Parasoft C/C++ test https://www.parasoft.com/cpptest/ |
2 | HP Fortify http://www.hpenterprisesecurity.com/products |
3 | Appscan http://www-01.ibm.com/software/rational/products |
4 | Veracode https://www.veracode.com |
5 | Armorize CodeSecure http://www.armorize.com/codesecure/ |
6 | GrammaTech https://www.grammatech.com/ |