SQL Injection: Apa itu?
SQL Injection adalah salah satu mekanisme serangan web yang digunakan oleh hacker untuk mencuri data dari organisasi. Ini mungkin salah satu lapisan teknik yang paling umum menyerang aplikasi yang digunakan saat ini. Ini adalah jenis serangan yang mengambil keuntungan dari salah pengkodean aplikasi web Anda yang memungkinkan hacker untuk menyuntikkan perintah SQL ke dalam mengatakan bentuk login untuk memungkinkan mereka untuk mendapatkan akses ke data diadakan dalam database Anda.
Pada intinya, SQL Injection muncul karena bidang yang tersedia untuk masukan pengguna SQL memungkinkan laporan untuk lulus melalui dan query database secara langsung.
SQL Injection: An-mendalam Penjelasan Dalam
Aplikasi Web memungkinkan pengunjung situs yang sah untuk menyerahkan dan mengambil data ke / dari database melalui internet menggunakan web browser pilihan mereka. Database adalah pusat untuk situs web modern - mereka menyimpan data yang diperlukan untuk situs web untuk memberikan konten khusus untuk pengunjung dan memberikan informasi kepada pelanggan, pemasok, karyawan dan sejumlah stakeholder. Pengguna identitasnya, informasi keuangan dan pembayaran, statistik perusahaan semua mungkin penduduk dalam database dan diakses oleh pengguna yang sah melalui dari rak-the-dan aplikasi web kustom. aplikasi web dan database memungkinkan Anda untuk secara teratur menjalankan bisnis Anda.
Aplikasi Web memungkinkan pengunjung situs yang sah untuk menyerahkan dan mengambil data ke / dari database melalui internet menggunakan web browser pilihan mereka. Database adalah pusat untuk situs web modern - mereka menyimpan data yang diperlukan untuk situs web untuk memberikan konten khusus untuk pengunjung dan memberikan informasi kepada pelanggan, pemasok, karyawan dan sejumlah stakeholder. Pengguna identitasnya, informasi keuangan dan pembayaran, statistik perusahaan semua mungkin penduduk dalam database dan diakses oleh pengguna yang sah melalui dari rak-the-dan aplikasi web kustom. aplikasi web dan database memungkinkan Anda untuk secara teratur menjalankan bisnis Anda.
SQL Injection merupakan teknik hacking yang mencoba untuk melewati perintah SQL (pernyataan) melalui aplikasi web untuk eksekusi oleh database backend. Jika tidak dibersihkan dengan benar, aplikasi web dapat mengakibatkan serangan SQL Injection yang memungkinkan hacker untuk melihat informasi dari database dan / atau bahkan menghapusnya.
Fitur tersebut sebagai halaman login, dukungan dan bentuk permintaan produk, formulir tanggapan, halaman pencarian, shopping cart dan pengiriman umum konten dinamis, bentuk situs web modern dan menyediakan bisnis dengan sarana yang diperlukan untuk berkomunikasi dengan prospek dan pelanggan. Fitur-fitur situs web adalah contoh aplikasi web yang mungkin baik dibeli off-the-rak atau dikembangkan sebagai program dipesan lebih dahulu.
Fitur-fitur situs web semua rentan terhadap serangan SQL Injection yang timbul karena bidang yang tersedia untuk input SQL memungkinkan pengguna laporan untuk lulus melalui dan query database secara langsung.
SQL Injection: Sebuah Contoh Sederhana
Ambil halaman login sederhana di mana pengguna yang sah akan memasukkan username dan kombinasi sandi untuk memasuki wilayah yang aman untuk melihat rincian pribadinya atau meng-upload komentar di forum.
Ambil halaman login sederhana di mana pengguna yang sah akan memasukkan username dan kombinasi sandi untuk memasuki wilayah yang aman untuk melihat rincian pribadinya atau meng-upload komentar di forum.
Ketika pengguna yang sah menyampaikan detailnya, sebuah query SQL dihasilkan dari rincian ini dan diserahkan ke database untuk verifikasi. Jika valid, pengguna diijinkan akses. Dengan kata lain, aplikasi web yang mengontrol halaman login akan berkomunikasi dengan database melalui serangkaian perintah yang direncanakan sehingga untuk memverifikasi username dan kombinasi sandi. Pada verifikasi, pengguna yang sah diberikan akses yang tepat.
Melalui SQL Injection, hacker dapat memasukkan perintah SQL dibuat khusus dengan maksud untuk melewati penghalang form login dan melihat apa yang ada di belakangnya. Ini hanya mungkin jika input tidak benar dibersihkan (yakni, membuat kebal) dan dikirim langsung dengan query SQL untuk database. SQL Injection kerentanan menyediakan sarana bagi seorang hacker untuk berkomunikasi secara langsung ke database.
Teknologi yang rentan terhadap serangan ini adalah bahasa script dinamis termasuk ASP, ASP.NET, PHP, JSP, dan CGI. Semua penyerang perlu melakukan hacking serangan SQL Injection adalah web browser, pengetahuan tentang query SQL dan bekerja menebak kreatif untuk tabel penting dan nama field. Kesederhanaan semata SQL Injection telah memicu popularitasnya.
Lain isi:
Mengapa mungkin untuk lulus SQL Query ke database walaupun hal ini tersembunyi di balik firewall?
Apakah database saya di risiko untuk SQL Injection?
Apa dampak dari SQL Injection?
Contoh Serangan SQL Injection
Bagaimana saya mencegah serangan SQL Injection?
Mengapa mungkin untuk lulus SQL Query ke database walaupun hal ini tersembunyi di balik firewall?
Apakah database saya di risiko untuk SQL Injection?
Apa dampak dari SQL Injection?
Contoh Serangan SQL Injection
Bagaimana saya mencegah serangan SQL Injection?
Mengapa mungkin untuk lulus SQL query langsung ke database yang tersembunyi di balik firewall dan setiap mekanisme keamanan lainnya?
Firewall dan mekanisme deteksi intrusi serupa memberikan pembelaan sedikit atau tidak terhadap skala penuh SQL Injection serangan web.
Firewall dan mekanisme deteksi intrusi serupa memberikan pembelaan sedikit atau tidak terhadap skala penuh SQL Injection serangan web.
Karena website anda harus publik, mekanisme keamanan akan memungkinkan lalu lintas web publik untuk berkomunikasi dengan aplikasi web / s (umumnya lebih port 80/443). Aplikasi web yang memiliki akses terbuka untuk database untuk kembali (update) informasi (diubah) diminta.
Dalam SQL Injection, hacker menggunakan query SQL dan kreativitas untuk sampai ke database data perusahaan sensitif melalui aplikasi web.
SQL atau Structured Query Language adalah bahasa komputer yang memungkinkan Anda untuk menyimpan, memanipulasi, dan mengambil data disimpan dalam database relasional (atau kumpulan tabel yang mengatur dan data struktur). SQL ini, pada kenyataannya, satu-satunya cara bahwa sebuah aplikasi web (dan pengguna) dapat berinteraksi dengan database. Contoh database relasional termasuk Oracle, Microsoft Access, MS SQL Server, MySQL, dan FileMaker Pro, yang kesemuanya menggunakan SQL sebagai blok bangunan dasar mereka.
termasuk perintah SQL SELECT, INSERT, DELETE dan DROP TABLE. DROP TABLE adalah sebagai kedengarannya tidak menyenangkan dan bahkan akan menghilangkan tabel dengan nama tertentu.
Dalam skenario yang sah dari contoh halaman login di atas, perintah SQL yang direncanakan untuk aplikasi web mungkin terlihat seperti berikut:
SELECT count (*)
DARI users_list_table
WHERE username = 'FIELD_USERNAME'
DAN password = 'FIELD_PASSWORD "
DARI users_list_table
WHERE username = 'FIELD_USERNAME'
DAN password = 'FIELD_PASSWORD "
Dalam bahasa Inggris, ini perintah SQL (dari aplikasi web) menginstruksikan database untuk mencocokkan masukan username dan password oleh pengguna yang sah untuk kombinasi ia telah disimpan.
Setiap jenis aplikasi web sulit dikodekan dengan query SQL spesifik yang akan mengeksekusi ketika menjalankan fungsi yang sah dan berkomunikasi dengan database. Jika kolom input dari aplikasi web tidak benar dibersihkan, hacker mungkin menyuntikkan tambahan perintah SQL yang memperluas jangkauan dari perintah SQL aplikasi web akan mengeksekusi, sehingga melampaui desain dimaksudkan asli dan fungsi.
Seorang hacker dengan demikian akan memiliki saluran komunikasi yang jelas (atau, dalam istilah awam, terowongan) ke database terlepas dari semua sistem deteksi intrusi dan peralatan jaringan keamanan dipasang sebelum database server fisik.
Apakah database saya di risiko untuk SQL Injection?
SQL Injection adalah salah satu lapisan aplikasi yang paling umum menyerang saat ini sedang digunakan di Internet.Terlepas dari kenyataan bahwa itu relatif mudah untuk melindungi terhadap SQL Injection, ada sejumlah besar aplikasi web yang masih rentan.
SQL Injection adalah salah satu lapisan aplikasi yang paling umum menyerang saat ini sedang digunakan di Internet.Terlepas dari kenyataan bahwa itu relatif mudah untuk melindungi terhadap SQL Injection, ada sejumlah besar aplikasi web yang masih rentan.
Menurut Keamanan Aplikasi Web Consortium (WASC) 9% dari total insiden hacking dilaporkan dalam media sampai 27 Juli 2006 adalah karena SQL Injection. Data yang lebih baru dari penelitian kita sendiri menunjukkan bahwa sekitar 50% dari website kami telah discan tahun ini rentan terhadap kerentanan SQL Injection.
Mungkin sulit untuk menjawab pertanyaan apakah situs web dan aplikasi web Anda rentan terhadap SQL Injection terutama jika Anda tidak programmer atau anda bukan orang yang memiliki kode aplikasi web Anda.
Pengalaman kami membuat kita percaya bahwa ada kemungkinan besar bahwa data anda sudah resiko dari SQL Injection.
Apakah penyerang dapat melihat data yang tersimpan pada database atau tidak, benar-benar tergantung pada bagaimana website Anda adalah kode untuk menampilkan hasil query yang dikirim. Yang pasti adalah bahwa penyerang akan dapat menjalankan Perintah SQL sewenang-wenang pada sistem rentan, baik untuk berkompromi atau lain untuk mendapatkan informasi.
Jika benar kode, maka Anda berisiko memiliki pelanggan Anda dan data perusahaan dikompromikan.
Apa keuntungan akses penyerang juga tergantung pada tingkat keamanan yang diatur oleh database. Database dapat diatur untuk membatasi perintah tertentu saja. Sebuah akses baca biasanya diaktifkan untuk digunakan oleh aplikasi web kembali berakhir.
Bahkan jika penyerang tidak dapat memodifikasi sistem, ia masih akan bisa membaca informasi berharga.
Apa dampak dari SQL Injection?
Setelah penyerang menyadari bahwa sistem rentan terhadap SQL Injection, ia mampu menyuntikkan SQL Query / Perintah melalui masukan formulir. Ini setara dengan menyerahkan penyerang database dan memungkinkan dia untuk mengeksekusi perintah SQL termasuk DROP TABLE ke database!
Setelah penyerang menyadari bahwa sistem rentan terhadap SQL Injection, ia mampu menyuntikkan SQL Query / Perintah melalui masukan formulir. Ini setara dengan menyerahkan penyerang database dan memungkinkan dia untuk mengeksekusi perintah SQL termasuk DROP TABLE ke database!
Seorang penyerang dapat melakukan laporan sewenang-wenang SQL pada sistem yang rentan. Hal ini dapat membahayakan integritas dari database Anda dan / atau mengungkapkan informasi sensitif. Tergantung pada database back-end digunakan, kerentanan SQL injection mengakibatkan berbagai tingkat data / sistem akses bagi penyerang. Dimungkinkan untuk memanipulasi query yang ada, untuk UNION (digunakan untuk memilih informasi terkait dari dua tabel) data sewenang-wenang, menggunakan subselects, atau menambahkan pertanyaan tambahan.
Dalam beberapa kasus, dimungkinkan untuk membaca atau menulis ke file, atau untuk menjalankan perintah shell pada sistem operasi yang mendasarinya. SQL Server tertentu seperti Microsoft SQL Server mengandung disimpan dan diperpanjang prosedur (fungsi database server). Jika penyerang bisa mendapatkan akses ke prosedur, bisa mengeja bencana.
Sayangnya dampak dari SQL Injection hanya ditemukan saat pencurian ditemukan. Data sedang tanpa disadari dicuri melalui berbagai serangan hack sepanjang waktu. Ahli lebih jarang hacker tertangkap.
Contoh Attack SQLInjection
Berikut adalah contoh formulir dasar HTML dengan dua input, login dan password.
<form method="post" action="http://testasp.vulnweb.com/login.asp"> Berikut adalah contoh formulir dasar HTML dengan dua input, login dan password.
<input name="tfUName" type="text" id="tfUName">
<input name="tfUPass" type="password" id="tfUPass">
</ Form>
Cara termudah untuk login.asp untuk bekerja adalah dengan membangun sebuah query database yang terlihat seperti ini:
SELECT id
DARI login
WHERE username = '$ username'
DAN password = '$ password'
DARI login
WHERE username = '$ username'
DAN password = '$ password'
Jika variabel $ username dan $ password diminta langsung dari input pengguna, ini dengan mudah dapat dikompromikan. Misalkan kita memberikan "Joe" sebagai nama pengguna dan bahwa string berikut diberikan sebagai password: apa-apa 'ATAU' x '=' x
SELECT id
DARI login
WHERE username = 'Joe'
DAN password '=' apa OR 'x' = 'x'
DARI login
WHERE username = 'Joe'
DAN password '=' apa OR 'x' = 'x'
Sebagai masukan dari aplikasi web yang tidak benar dibersihkan, penggunaan tanda kutip tunggal telah mengubah WHERE SQL perintah ke klausul dua komponen.
The = 'x' 'x' jaminan bagian untuk benar terlepas dari apa bagian pertama berisi.
Hal ini akan memungkinkan penyerang untuk melewati form login tanpa benar-benar mengetahui username yang valid / kombinasi password!
Bagaimana saya mencegah serangan SQL Injection?
Firewall dan mekanisme deteksi intrusi serupa sedikit memberi pertahanan terhadap serangan web skala penuh.Karena website anda harus publik, mekanisme keamanan akan memungkinkan lalu lintas web publik untuk berkomunikasi dengan database server Anda melalui aplikasi web. Bukankah ini apa yang mereka telah dirancang untuk lakukan?
Firewall dan mekanisme deteksi intrusi serupa sedikit memberi pertahanan terhadap serangan web skala penuh.Karena website anda harus publik, mekanisme keamanan akan memungkinkan lalu lintas web publik untuk berkomunikasi dengan database server Anda melalui aplikasi web. Bukankah ini apa yang mereka telah dirancang untuk lakukan?
Patching server Anda, database, bahasa pemrograman dan sistem operasi adalah penting tapi akan sama sekali tidak cara terbaik untuk mencegah serangan SQL Injection.
Baca artikel lengkap di Bagaimana Periksa dan Mencegah Serangan SQL Injection .
Download Acunetix Web Vulnerability Scanner dan mencari tahu jika situs Anda rentan!