SQL Injection Cheat Sheet
Berikut ini beberapa contoh input yang bisa digunakan untuk melakukan SQL Injection. Gunakan Cheat Sheet ini untuk melindungin website buatan kamu, dan bukan untuk melakukan penyerangan!
Metode ini sudah dicontohkan pada contoh di atas. Input yang dimasukkan diakhiri dengan syntax comment sehingga query menjadi terpotong.
Input ini memotong query target dan mengubah makna dari query tersebut.
Liều dùng thuốc Aminopoly Injection
Liều tham khảo ở người lớn:
Lưu ý: Liều thuốc Aminopoly Injection trên chỉ mang tính chất tham khảo. Liều thuốc Aminopoly Injection cụ thể tùy thuộc vào thể trạng và mức độ diễn tiến của bệnh. Để có liều Aminopoly Injection phù hợp, người bệnh cần tham khảo ý kiến bác sĩ hoặc chuyên viên y tế.
Kenapa SQL Injection Bisa Terjadi
Penyerangan ini bisa berhasil biasanya karena dua hal utama yakni developer tidak melakukan validasi input, dan tidak ada pembatasan akses database.
Eksploitasi web adalah suatu tindakan untuk memanfaatkan celah keamanan pada sebuah situs web untuk mendapatkan akses yang tidak sah ke sistem tersebut, SQL injection adalah jenis kerentanan keamanan yang terjadi dalam aplikasi web berbasis database di mana penyerang melibatkan kode berbahaya ke dalam aplikasi untuk mendapatkan akses tidak sah ke informasi sensitif. Makalah ini bertujuan untuk memberikan wawasan yang komprehensif dan sistematis tentang metode yang ada untuk mendeteksi serangan injeksi SQL. Dalam penelitian ini, penulis mengambil aplikasi web sebagai objek dan mencoba mendemonstrasikan serangan aplikasi web umum yaitu SQL injection. Penggunaan query union memiliki peran penting dalam melakukan SQL injection pada kasus ini, karena jika dilihat dari database tersebut tidak memiliki field name username dan password. Inti serangan ini mencoba untuk menggabungkan hasil dari query asli dengan hasil dari query yang dicuri dari tabel "pengguna".
Artikel Bahasa Indonesia
Kita sudah tidak asing lagi dengan penggunaan aplikasi atau website untuk melakukan task atau mencari informasi tertentu.
Sebagai contoh, apabila kamu menggunakan sebuah website, maka kamu akan mengetikkan kata kunci ataupun URL ke address bar. Coba perhatikan alamat URL website ketika halaman tersebut mengembalikan data yang kamu cari. Apakah URL tersebut menunjukkan tampilan yang kurang lebih seperti gambar berikut ini:
Pada contoh gambar di atas, kita mengakses website www.example.com, lalu yang kita lakukan sesungguhnya memasukkan parameter agar website tersebut mencari data sesuai dengan parameter yang kita tentukan.
Di balik halaman yang kita cari, website tersebut akan menghasilkan parameter query sebagai berikut:
userid 12345 merupakan angka yang kita ketikkan ketika ingin mencari data. Apakah kamu menyadari bentuk penulisan di atas? Bentuk tersebut merupakan klausa pencarian data pada database dengan metode SELECT.
Jadi ketika kita ingin sebuah website mengeluarkan data yang kita inginkan, maka sesungguhnya yang terjadi adalah website tersebut membuatkan automatic query untuk menuliskan perintah SQL dan menambahkan angka parameter yang kita tuliskan untuk dicari pada database.
Coba dibayangkan apabila kita sebagai orang luar yang bukan merupakan pemilik website tersebut, dapat mencari data dengan mudah dengan hanya mengetikkan userid. Apalagi bentuk penulisan userid tersebut merupakan bentuk yang mudah untuk ditiru seperti 12345 ataupun merupakan angka dengan jumlah digit yang sedikit.
Apabila disalahgunakan, maka banyak orang tidak bertanggung jawab yang dapat mengakses data yang bersifat rahasia dan dapat menyalahgunakan data tersebut.
Untuk memahami lebih jauh, mari berkenalan dengan istilah SQL injection atau SQLi.
Kegunaan SQL Injection
Bagi penyerang, SQL Injection digunakan sebagai salah satu cara untuk mengakses database korban. Di dalam database ini biasanya berisi data-data yang penting. Jika penyerang berhasil masuk ke database dan memiliki akses yang cukup, penyerang dapat mengambil data-data ini.
Data-data ini bisa digunakan untuk di jual kembali di pasar gelap, melakukan blackmailing kepada seseorang, atau kejahatan keuangan seperti carding dan pinjaman online ilegal.
Selecting Wise Usernames and Passwords
When it comes to choosing your Joomla admin usernames and passwords, exercise prudence. Avoid utilizing "admin" as your username and opt for a complex password. Interestingly, this is among the most effective methods to bolster your Joomla security, and paradoxically, it's one of the simplest.Employing a strong password is imperative for robust Joomla security. Ensure that your login password possesses sufficient length (between 8 to 14 characters) and includes a combination of letters, numbers, and symbols. Remember that passwords are case-sensitive, so incorporating both uppercase and lowercase letters adds an extra layer of strength. Additionally, it's advisable to establish a routine of changing admin passwords at least once a month.
Limit Access to the Joomla Admin Backend
Prudent restriction of access to the Joomla admin backend is essential, given its sensitive nature. You can achieve this by implementing IP filtering, and the same can be applied to other critical Joomla directories following these steps:1: Begin by creating a .htaccess file if it's not already present in the directory you intend to safeguard.2: Insert the following code into the .htaccess file:Order Deny, AllowDeny from allAllow from xx.xx.xx.xx3: Replace "xx.xx.xx.xx" with the specific IP address from which you wish to permit access.Consider employing security extensions that offer IP filtering capabilities to restrict access to the Joomla admin backend, along with other features that enhance your Joomla website's security.
As there will forever be a level of risk, the ongoing nature of Joomla security necessitates regular evaluation of potential attack vectors. Website proprietors and administrators must consistently enhance their website security to minimize the likelihood of a breach.Ultimately, we trust that you discover this article pragmatic and beneficial. If you require assistance in fortifying your Joomla website, please feel free to share your inquiries in contact form, and we will gladly provide our assistance.
Bagaimana Cara Kerja SQL Injection?
Pada dasarnya, SQL injection ini bekerja dengan memasukkan perintah atau query SQL untuk mendapatkan data. Sebagai contoh, setiap murid dalam suatu sekolah hanya memiliki akses data sesuai dengan student ID milik masing-masing.
Ketika seorang murid memasukan data student ID-nya, maka web-server akan mengambil data dengan mengirimkan perintah SQL ke database untuk mengembalikan data sesuai dengan parameter yang diketik oleh murid tersebut.
Perhatikan contoh query berikut ini apabila murid tersebut mengetikkan sebuah parameter 12345 or 1=1:
Sistem akan menerjemahkan input dari murid tersebut menjadi query seperti di atas. Apa arti dari 1=1? Dalam pemrograman baik menggunakan SQL atau Python, kita sering melihat bentuk seperti 1=1 atau ini dapat diartikan sebagai kondisi TRUE (penjelasan singkat ini dapat dilihat pada artikel Python - IF condition).
Ketika seseorang mengetikkan perintah 1=1 pada SQL, hal ini berarti bahwa klausa SELECT tersebut akan mengembalikan semua data yang bersifat TRUE, karena nilai 1 atau TRUE ini pasti akan (=) bersifat 1 atau TRUE.
Kita mengetahui bahwa dalam klausa WHERE dengan 2 atau lebih kondisi yang memiliki operator OR, maka apabila salah satu klausa bersifat TRUE, maka query tersebut akan dijalankan.
Walaupun nilai 12345 mungkin tidak ada pada database, namun dengan teknik ini, maka seluruh nilai sudah pasti akan ditampilkan karena 1=1 sudah pasti bernilai TRUE.
{{COMPONENT_IDENTIFIER}}
Perhatikan contoh lain berikut ini. Apabila ada sebuah website ataupun aplikasi yang mengharuskan pengguna untuk memasukan sebuah username dan password, maka web-server secara tidak langsung akan menerjemahkan perintah tersebut seperti ini:
Pada contoh di atas, kita memiliki 2 buah input, yaitu username dan password. Seorang peretas dapat mendapatkan seluruh informasi dengan menggunakan cara yang sama, yaitu menggunakan 1=1 untuk mendapatkan seluruh informasi walaupun ada 2 input dan memiliki kondisi AND pada klausa WHERE-nya.
Perhatikan contoh query berikut apabila peretas memasukan 1=1 pada input parameternya:
Dengan memanipulasi sedikit query di atas, maka seorang peretas dapat mengambil data yang bersifat rahasia. Apabila kita perhatikan query di atas, nilai 1=1 sudah pasti bernilai TRUE, walaupun ada 2 input dengan klausa WHERE dan operator AND yang membutuhkan kedua input bernilai TRUE.
Pada input pertama yaitu username, nilainya sudah pasti TRUE karena walaupun nilai “” ini tidak bernilai tapi karena sifat operator OR di mana apabila salah satu input username bersifat TRUE (1=1), maka nilai tersebut sudah pasti TRUE.
Hal yang sama juga terjadi pada input password, walaupun pada input password nilai “” tidak bernilai, tapi karena ada TRUE (1=1) maka input kedua pun bernilai TRUE. Karena kedua input bersifat TRUE, maka query tersebut setara dengan:
Ketika 1=1 diketikkan pada kedua input, maka dengan pintarnya seorang peretas dapat mendapatkan seluruh data yang sifatnya privasi.
Stacking Query - Menjalankan Lebih Dari Satu Query
Metode ini memanfaatkan fitur untuk menjalankan lebih dari satu query dalam satu perintah. Input yang dimasukkan diakhiri dengan tanda ; yang menyatakan query pertama sudah selesai dan ada query selanjutnya.
Input ini jika berhasil akan menghapus tabel bernama users dan dapat merusak keseluruhan sistem.
Utilize Secure FTP Connections
Ensure that the connections used for accessing your Joomla website files are secure. If your hosting service supports it, opt for SFTP encryption or SSH. In case you use an FTP client, note that the default port for SFTP is typically 22.Some of the FTP clients store passwords in plain text or encode them on your computer, with some encoded passwords being reversible. We strongly recommend against saving FTP passwords within the client to mitigate the risk of hacking.