0

Alat Peretas Password Terbaik

Senin, 16 September 2024


Dalam era digital yang serba cepat ini, keamanan informasi dan privasi menjadi hal yang sangat penting. Namun, dengan meningkatnya penggunaan perangkat digital dan platform online, ancaman terhadap keamanan data, seperti peretasan kata sandi, semakin marak. Pada blog ini, saya akan mengupas beberapa alat peretas kata sandi yang sering digunakan di dunia maya. Tujuannya bukan untuk mendorong penggunaan alat ini secara tidak etis, tetapi untuk memberikan wawasan kepada pembaca tentang pentingnya memperkuat keamanan kata sandi dan mencegah ancaman peretasan.


Dengan mengetahui metode dan alat yang digunakan peretas, kita dapat lebih memahami kelemahan sistem keamanan kita dan mengambil tindakan pencegahan yang lebih efektif. Semoga tulisan ini dapat memberikan pemahaman yang lebih baik tentang pentingnya keamanan data serta bagaimana melindungi diri di dunia digital yang terus berkembang. 

Selamat membaca, dan selalu prioritaskan etika serta integritas dalam menggunakan teknologi.


1. Hashcat



       Hashcat adalah salah satu alat pemecah hash (hash-cracking tool) paling populer dan kuat yang digunakan untuk memecahkan kata sandi yang terenkripsi. Hashcat dirancang untuk menguraikan berbagai jenis hash, seperti MD5, SHA-1, SHA-256, dan banyak lainnya. Alat ini memanfaatkan kekuatan CPU dan GPU untuk meningkatkan kecepatan pemecahan hash secara signifikan. Karena performanya yang tinggi dan fleksibilitasnya, Hashcat sering digunakan oleh profesional keamanan siber untuk pengujian penetrasi (penetration testing) dan pengauditan keamanan kata sandi.


Fitur Utama Hashcat:

- Mendukung lebih dari 200 algoritma hash.

- Menggunakan pendekatan serangan brute force, kombinasi, dan aturan untuk memecahkan hash.

- Dapat dijalankan di berbagai sistem operasi, termasuk Windows, Linux, dan macOS.

- Memanfaatkan GPU untuk akselerasi, mempercepat proses pemecahan hash.


Situs Download Hashcat:

Hashcat bisa diunduh secara gratis di situs resminya:

[https://hashcat.net/hashcat/](https://hashcat.net/hashcat/)

Situs tersebut menyediakan versi terbaru dari perangkat lunak Hashcat, lengkap dengan dokumentasi dan panduan penggunaan untuk memulai.


2. Aircrack-ng


      

Aircrack-ng adalah rangkaian alat keamanan jaringan yang digunakan untuk mengaudit keamanan Wi-Fi. Alat ini paling dikenal untuk memecahkan kunci enkripsi jaringan nirkabel, seperti WEP, WPA, dan WPA2, dengan melakukan serangan brute force terhadap kata sandi jaringan. Aircrack-ng bekerja dengan menangkap paket data yang dikirim melalui jaringan Wi-Fi dan kemudian menganalisis paket tersebut untuk menemukan celah keamanan.


Selain memecahkan kata sandi, Aircrack-ng juga memiliki kemampuan untuk:

- Memonitor dan menangkap lalu lintas jaringan Wi-Fi.

- Melakukan injeksi paket ke dalam jaringan.

- Menemukan perangkat klien yang terhubung ke jaringan.

- Menguji performa jaringan nirkabel dan memverifikasi kekuatan enkripsinya.

Alat ini sering digunakan oleh profesional keamanan untuk mengaudit jaringan Wi-Fi atau oleh penggemar keamanan yang ingin memahami cara melindungi jaringan mereka.


Situs Download Aircrack-ng:

Aircrack-ng dapat diunduh secara gratis dari situs resminya:

https://www.aircrack-ng.org

Di situs tersebut, pengguna dapat menemukan versi terbaru Aircrack-ng serta dokumentasi lengkap untuk instalasi dan penggunaan alat ini di berbagai platform seperti Linux, Windows, dan macOS.


3. John The Ripper 



      
  John the Ripper adalah alat pemecah kata sandi yang sangat populer dan banyak digunakan untuk menguji kekuatan kata sandi dan melakukan audit keamanan. Alat ini dirancang untuk mendeteksi kata sandi yang lemah pada berbagai sistem operasi, termasuk UNIX, Windows, dan macOS. John the Ripper mendukung berbagai jenis hash, seperti MD5, SHA, dan banyak format kata sandi lainnya, sehingga bisa digunakan untuk memecahkan kata sandi yang dienkripsi dengan berbagai algoritma.

      John the Ripper menggunakan beberapa teknik pemecahan kata sandi, seperti serangan brute force, serangan kamus (dictionary attack), dan serangan berbasis aturan (rule-based attack). Karena sifatnya yang open-source dan kinerjanya yang kuat, John the Ripper sering digunakan oleh penguji penetrasi (penetration tester) dan administrator sistem untuk menemukan dan memperbaiki kelemahan dalam keamanan kata sandi.

Fitur Utama John the Ripper:
- Mendukung banyak format hash kata sandi.
- Dapat dikonfigurasi dan dioptimalkan untuk berbagai jenis serangan.
- Tersedia untuk berbagai sistem operasi, termasuk Linux, macOS, dan Windows.
- Memiliki komunitas yang aktif, dengan banyak plugin dan ekstensi.

Situs Download John the Ripper:
John the Ripper dapat diunduh secara gratis dari situs resminya:


Situs ini menyediakan versi komunitas (community edition) dan versi berbayar dengan fitur tambahan. Selain itu, terdapat dokumentasi lengkap mengenai cara instalasi dan penggunaan alat ini untuk berbagai keperluan keamanan.

4. Ophcrack


         

Ophcrack adalah alat pemecah kata sandi berbasis rainbow table yang digunakan untuk memecahkan kata sandi Windows. Alat ini sangat efektif dalam memecahkan kata sandi hash LM dan NTLM yang digunakan oleh sistem operasi Windows. Salah satu keunggulan utama Ophcrack adalah kecepatannya dalam memecahkan kata sandi menggunakan teknik rainbow table, yaitu sebuah metode pencarian kata sandi yang sudah dipetakan sebelumnya untuk mempercepat proses pemecahan.


Ophcrack sangat mudah digunakan dan memiliki antarmuka grafis (GUI) yang ramah pengguna, menjadikannya alat favorit bagi pengguna yang tidak memiliki latar belakang teknis mendalam. Selain itu, Ophcrack juga menyediakan versi bootable yang memungkinkan pengguna untuk memecahkan kata sandi tanpa harus masuk ke sistem operasi Windows.


Fitur Utama Ophcrack:

- Menggunakan rainbow table untuk mempercepat pemecahan kata sandi.

- Mendukung pemecahan kata sandi LM dan NTLM (Windows).

- Memiliki versi Live CD untuk memecahkan kata sandi tanpa harus mengakses sistem.

- Mudah digunakan, baik oleh pengguna teknis maupun non-teknis.


Situs Download Ophcrack:

Ophcrack dapat diunduh secara gratis dari situs resminya:

http://ophcrack.sourceforge.net/

Di situs ini, tersedia rainbow table yang bisa diunduh untuk mempercepat proses pemecahan kata sandi, serta dokumentasi lengkap dan berbagai pilihan unduhan, termasuk versi Live CD yang siap digunakan.


5. Thc-Hydra



THC-Hydra, atau lebih dikenal sebagai Hydra, adalah alat pemecah kata sandi yang sangat kuat dan digunakan untuk melakukan serangan brute force atau dictionary attack pada berbagai protokol jaringan dan layanan online. Hydra mampu memecahkan kata sandi pada layanan seperti SSH, FTP, HTTP, SMTP, MySQL, Telnet, dan banyak lagi. Hydra sering digunakan oleh penguji penetrasi (penetration tester) dan profesional keamanan siber untuk menguji kerentanan terhadap serangan otentikasi.


Hydra dikenal karena kemampuannya yang dapat dikonfigurasi secara fleksibel dan kemampuannya melakukan serangan pada banyak target secara paralel. Selain itu, Hydra juga mendukung banyak jenis serangan dan dapat diintegrasikan dengan alat lainnya untuk lebih meningkatkan efektivitas serangan.


Fitur Utama THC-Hydra:

- Mendukung berbagai protokol dan layanan jaringan.

- Dapat melakukan serangan pada beberapa target secara bersamaan (parallel attack).

- Dapat dikonfigurasi dengan berbagai opsi serangan, termasuk penggunaan kata sandi dari file kamus.

- Didukung di berbagai sistem operasi, termasuk Linux, macOS, dan Windows (melalui Cygwin).

- Alat yang open-source dengan komunitas yang aktif.


Situs Download THC-Hydra:

Hydra dapat diunduh secara gratis dari situs resminya:

https://github.com/vanhauser-thc/thc-hydra

Situs ini merupakan repositori GitHub resmi dari Hydra, yang menyediakan versi terbaru dari perangkat lunak ini, termasuk panduan instalasi, dokumentasi penggunaan, dan pembaruan yang rutin dari komunitas pengembangnya.


6. Medusa




Medusa adalah alat pemecah kata sandi yang cepat, fleksibel, dan sangat dapat dikonfigurasi untuk melakukan serangan brute force terhadap berbagai layanan jaringan. Mirip dengan THC-Hydra, Medusa digunakan oleh profesional keamanan siber untuk menguji kekuatan otentikasi pada layanan seperti SSH, FTP, HTTP, MySQL, Telnet, dan banyak lagi. Alat ini dirancang untuk bekerja secara paralel, memungkinkan serangan pada beberapa target atau layanan sekaligus, sehingga mempercepat proses pemecahan kata sandi.


Medusa dikenal karena kemampuannya dalam menangani serangan ke berbagai layanan secara simultan, serta mendukung berbagai protokol jaringan. Fleksibilitas Medusa dalam menjalankan serangan membuatnya menjadi pilihan favorit di kalangan penguji penetrasi dan administrator sistem yang ingin memastikan keamanan jaringan mereka.


Fitur Utama Medusa:

- Mendukung berbagai protokol jaringan, seperti SSH, FTP, Telnet, HTTP, dan lainnya.

- Dapat menyerang beberapa target secara bersamaan, memaksimalkan efisiensi serangan.

- Mendukung konfigurasi serangan yang fleksibel, termasuk serangan brute force dan serangan berbasis kamus (dictionary attack).

- Mudah diintegrasikan dengan alat lain untuk meningkatkan fungsionalitas.

- Open-source dan tersedia di berbagai platform, termasuk Linux dan macOS.


Situs Download Medusa:

Medusa dapat diunduh secara gratis dari situs resminya:


https://github.com/jmk-foofus/medusa


Situs ini adalah repositori GitHub resmi Medusa, yang menyediakan versi terbaru dari perangkat lunak ini, lengkap dengan dokumentasi untuk instalasi dan penggunaan, serta pembaruan dari komunitas pengembang.


7. Cain and Abel



Cain and Abel adalah alat pemecah kata sandi (password recovery tool) yang populer di kalangan profesional keamanan dan penguji penetrasi. Alat ini dirancang khusus untuk sistem operasi Windows dan memiliki berbagai fungsi yang dapat digunakan untuk memulihkan kata sandi, menganalisis protokol jaringan, dan menguji keamanan sistem. Cain and Abel mampu melakukan serangan brute force, kamus (dictionary attack), dan serangan cryptanalysis terhadap kata sandi yang disimpan dalam format hash. Selain itu, Cain and Abel dapat menangkap lalu lintas jaringan untuk menemukan kata sandi yang dikirim dalam bentuk teks biasa.


Beberapa fitur canggih lainnya termasuk kemampuan untuk memecahkan kata sandi Windows, dekripsi kata sandi yang disimpan di aplikasi, dan alat untuk merekam sesi jaringan, menganalisis cache ARP, dan melakukan serangan man-in-the-middle.


Fitur Utama Cain and Abel:

- Memulihkan kata sandi Windows yang disimpan.

- Menganalisis dan mengurai hash kata sandi dari berbagai format.

- Menangkap dan menganalisis lalu lintas jaringan.

- Mendukung berbagai teknik pemecahan kata sandi, seperti brute force dan kamus.

- Menggunakan metode cryptanalysis untuk memecahkan kata sandi yang lebih kompleks.

- Hanya tersedia untuk sistem operasi Windows.


Situs Download Cain and Abel:

Cain and Abel dapat diunduh dari beberapa situs pihak ketiga karena pengembangannya telah dihentikan, dan situs resminya tidak lagi aktif. Namun, Anda dapat menemukan versi yang masih beredar di komunitas online atau forum keamanan. Salah satu sumber yang cukup dapat diandalkan adalah:


https://cain-and-abel.en.lo4d.com/


Pastikan untuk memeriksa sumber yang terpercaya ketika mengunduh alat ini untuk menghindari versi yang telah dimodifikasi dengan perangkat lunak berbahaya.

8.Wfuzz



Wfuzz adalah alat open-source yang digunakan untuk melakukan web application fuzzing, yaitu teknik pengujian yang digunakan untuk menemukan kerentanan dalam aplikasi web. Alat ini dirancang untuk membantu penguji keamanan dalam mengidentifikasi celah keamanan dengan mencoba berbagai input ke dalam aplikasi web dan memantau bagaimana aplikasi merespons. Wfuzz sering digunakan untuk mencari kerentanan seperti SQL injection, Cross-site scripting (XSS), directory traversal, dan brute force untuk menemukan direktori tersembunyi atau kredensial login.


Wfuzz memiliki kemampuan untuk melakukan fuzzing terhadap berbagai bagian aplikasi web, termasuk URL, parameter GET/POST, header HTTP, cookies, dan banyak lagi. Selain itu, alat ini mendukung penggunaan kamus (wordlist) yang dapat dikustomisasi, menjadikannya sangat fleksibel untuk berbagai jenis pengujian.


Fitur Utama Wfuzz:

- Dapat digunakan untuk berbagai serangan fuzzing, seperti brute force, directory discovery, dan parameter fuzzing.

- Mendukung penggunaan wordlist yang dapat disesuaikan.

- Mampu mem-bypass perlindungan seperti proxy atau firewall.

- Mendukung pencarian berdasarkan pola tertentu dalam respons aplikasi web.

- Fitur threading untuk meningkatkan kecepatan pengujian.


Situs Download Wfuzz:

Wfuzz dapat diunduh secara gratis dari situs GitHub resminya:


https://github.com/xmendez/wfuzz


Di sini, Anda dapat menemukan kode sumber terbaru, panduan instalasi, serta dokumentasi penggunaan Wfuzz untuk pengujian keamanan aplikasi web.



ok guys Dalam dunia digital yang terus berkembang, ancaman terhadap keamanan data, khususnya kata sandi, menjadi semakin kompleks. Pembahasan tentang alat peretas kata sandi seperti Hashcat, John the Ripper, Aircrack-ng, dan lainnya dalam blog ini bertujuan untuk memberikan wawasan tentang pentingnya keamanan kata sandi. Penting untuk diingat bahwa meskipun alat-alat ini memiliki kekuatan besar dalam menguji dan memecahkan kata sandi, penggunaannya harus selalu didasarkan pada etika dan tanggung jawab.


Pengetahuan tentang alat-alat ini tidak hanya membantu kita memahami cara peretas bekerja, tetapi juga bagaimana kita bisa melindungi diri dengan langkah-langkah keamanan yang tepat. Selalu gunakan kata sandi yang kuat, aktifkan autentikasi dua faktor, dan lakukan audit keamanan secara berkala. Dengan memahami risiko dan alat yang digunakan, kita dapat membangun pertahanan yang lebih baik terhadap ancaman dunia maya.


Terima kasih telah membaca, dan semoga artikel ini memberi manfaat dalam meningkatkan kesadaran tentang pentingnya keamanan digital.

0

Apa itu SQL Injection Attactk : Cara Kerja Contoh Dan Pencegahannya

Senin, 05 Agustus 2024



Apa itu Serangan Injeksi SQL ( SQLi )?

Serangan SQL Injection (atau SQLi) mengubah kueri SQL, menyuntikkan kode berbahaya dengan mengeksploitasi kerentanan aplikasi. 

Serangan SQLi yang berhasil memungkinkan penyerang mengubah informasi basis data, mengakses data sensitif, menjalankan tugas admin pada basis data, dan memulihkan file dari sistem. Dalam beberapa kasus, penyerang dapat mengeluarkan perintah ke sistem operasi database yang mendasarinya.

Dampak parah dari serangan ini membuat pengembang harus mengadopsi praktik yang mencegah injeksi SQL, seperti kueri berparameter, prosedur tersimpan, dan validasi input yang ketat.

Ini adalah bagian dari serangkaian panduan ekstensif tentang keamanan data .

Apa Itu Kueri SQL?

SQL, yang merupakan singkatan dari Structured Query Language, adalah bahasa yang digunakan untuk berkomunikasi dan memanipulasi database. Ini adalah bahasa standar untuk sistem manajemen basis data relasional dan digunakan untuk melakukan tugas-tugas seperti memperbarui data pada basis data, atau mengambil data dari basis data.

Kueri SQL adalah perintah yang digunakan untuk berkomunikasi dengan database. Mereka memungkinkan tugas-tugas seperti mencari, memperbarui, atau mengambil data yang disimpan dalam database. Misalnya, aplikasi web eCommerce mungkin menggunakan kueri SQL untuk mengambil informasi tentang produk tertentu dari database produk.

Namun, jika aplikasi tidak dirancang dengan aman, aplikasi mungkin mengizinkan pengguna untuk memasukkan kueri SQL secara langsung. Dalam hal ini, pengguna jahat dapat memasukkan kueri SQL yang dibuat khusus yang dapat menyebabkan akses tidak sah, kebocoran data, atau bahkan penghapusan data. Ini dikenal sebagai serangan injeksi SQL.

Dampak Serangan Injeksi SQL yang Berhasil

Konsekuensi dari serangan injeksi SQL yang berhasil dapat mencakup:

  • Kredensial yang dicuri —penyerang dapat memperoleh kredensial melalui SQLi dan kemudian menyamar sebagai pengguna dan menggunakan hak istimewa mereka.
  • Akses tidak sah ke database —penyerang dapat memperoleh akses ke data sensitif di server database.
  • Perubahan data —penyerang dapat mengubah atau menambahkan data baru ke database yang diakses. 
  • Penghapusan data —penyerang dapat menghapus catatan database atau menghapus seluruh tabel. 

Pergerakan lateral —penyerang dapat mengakses server database dengan hak istimewa sistem operasi, dan menggunakan izin ini untuk mengakses sistem sensitif lainnya.

Bagaimana Cara Kerja Serangan Injeksi SQL?

Serangan SQL Injection melibatkan penyisipan atau “injeksi” query SQL melalui input data dari klien ke aplikasi. Serangan yang berhasil memungkinkan penyerang memanipulasi kueri SQL yang dibuat aplikasi ke database-nya. Biasanya melibatkan langkah-langkah berikut:

  1. Identifikasi masukan yang rentan: Penyerang pertama-tama mengidentifikasi masukan dalam aplikasi web yang rentan terhadap injeksi SQL. Masukan ini dapat berupa kolom teks dalam formulir, parameter URL, atau mekanisme masukan lainnya.
  2. Membuat kueri SQL berbahaya: Setelah masukan yang rentan teridentifikasi, penyerang membuat pernyataan SQL yang dimaksudkan untuk dimasukkan ke dalam kueri yang dijalankan oleh aplikasi. Pernyataan ini dirancang untuk mengubah kueri SQL asli untuk melakukan tindakan yang tidak diinginkan oleh pengembang aplikasi.
  3. Melewati langkah-langkah keamanan aplikasi: Penyerang sering kali harus melewati langkah-langkah keamanan seperti validasi input atau keluar dari karakter khusus. Mereka mencapai hal ini melalui teknik seperti penggabungan string atau memanfaatkan sintaksis SQL untuk mengomentari bagian dari kueri asli.
  4. Mengeksekusi kueri berbahaya: Saat aplikasi menjalankan kueri SQL, aplikasi tersebut menyertakan masukan berbahaya dari penyerang. Kueri yang dimodifikasi ini dapat melakukan tindakan seperti melihat data tanpa izin, menghapus data, atau bahkan mengubah skema database.
  5. Mengekstraksi atau memanipulasi data: Tergantung pada serangannya, hasilnya mungkin berupa ekstraksi informasi sensitif (seperti kredensial pengguna), mengubah data yang ada, menambahkan data baru, atau bahkan menghapus sebagian besar database.
  6. Memanfaatkan kerentanan server database: Injeksi SQL tingkat lanjut dapat mengeksploitasi kerentanan di server database, sehingga memperluas serangan di luar database hingga ke tingkat server. Hal ini dapat mencakup menjalankan perintah pada sistem operasi atau mengakses bagian lain dari sistem file server.

Proses ini memanfaatkan eksekusi dinamis SQL dalam aplikasi di mana input pengguna disertakan secara langsung dalam pernyataan SQL tanpa validasi atau pelolosan yang tepat. Ini mengeksploitasi cara query SQL dibuat, seringkali dengan cara yang tidak diantisipasi oleh pengembang.

Contoh Serangan Injeksi SQL di Kehidupan Nyata

Selama 20 tahun terakhir, banyak serangan injeksi SQL menargetkan situs web besar, platform bisnis, dan media sosial. Beberapa dari serangan ini menyebabkan pelanggaran data yang serius. Beberapa contoh penting tercantum di bawah ini.

Pelanggaran Diaktifkan oleh SQL Injection

  • Serangan GhostShell —peretas dari grup APT Tim GhostShell menargetkan 53 universitas menggunakan injeksi SQL, mencuri dan menerbitkan 36.000 catatan pribadi milik mahasiswa, dosen, dan staf.
  • Pemerintah Turki —kelompok APT lainnya, kolektif RedHack, menggunakan injeksi SQL untuk membobol situs web pemerintah Turki dan menghapus utang kepada lembaga pemerintah.
  • Pelanggaran 7-Eleven —tim penyerang menggunakan injeksi SQL untuk menembus sistem perusahaan di beberapa perusahaan, terutama jaringan ritel 7-Eleven, mencuri 130 juta nomor kartu kredit.
  • Pelanggaran HBGary —peretas yang terkait dengan kelompok aktivis Anonymous menggunakan SQL Injection untuk menghapus situs web perusahaan keamanan TI. Serangan itu merupakan tanggapan terhadap publikasi CEO HBGary bahwa dia mengetahui nama-nama anggota organisasi Anonymous.

Kerentanan Injeksi SQL yang Penting

  • Kerentanan Tesla —pada tahun 2014, peneliti keamanan mempublikasikan bahwa mereka dapat menembus situs web Tesla menggunakan injeksi SQL, mendapatkan hak administratif, dan mencuri data pengguna.
  • Kerentanan Cisco —pada tahun 2018, kerentanan injeksi SQL ditemukan di Cisco Prime License Manager. Kerentanan ini memungkinkan penyerang mendapatkan akses shell ke sistem tempat manajer lisensi dikerahkan. Cisco telah menambal kerentanannya.
  • Kerentanan Fortnite —Fortnite adalah game online dengan lebih dari 350 juta pengguna. Pada tahun 2019, ditemukan kerentanan injeksi SQL yang memungkinkan penyerang mengakses akun pengguna. Kerentanan telah ditambal.

Jenis Serangan Injeksi SQL

Ada beberapa jenis injeksi SQL:

  • Injeksi SQL berbasis serikat – Injeksi SQL berbasis serikat mewakili jenis injeksi SQL yang paling populer dan menggunakan pernyataan UNION. Pernyataan UNION mewakili kombinasi dua pernyataan pilihan untuk mengambil data dari database.
  • Injeksi SQL Berbasis Kesalahan – metode ini hanya dapat dijalankan pada Server MS-SQL. Dalam serangan ini, pengguna jahat menyebabkan aplikasi menampilkan kesalahan. Biasanya, Anda mengajukan pertanyaan ke database dan database mengembalikan pesan kesalahan yang juga berisi data yang mereka minta.
  • Blind SQL Injection – dalam serangan ini, tidak ada pesan kesalahan yang diterima dari database; Kami mengekstrak data dengan mengirimkan pertanyaan ke database. Injeksi SQL buta dapat dibagi menjadi Injeksi SQL berbasis boolean dan Injeksi SQL berbasis waktu. 

Serangan SQLi juga dapat diklasifikasikan berdasarkan metode yang mereka gunakan untuk memasukkan data:

  • Injeksi SQL berdasarkan masukan pengguna – aplikasi web menerima masukan melalui formulir, yang meneruskan masukan pengguna ke database untuk diproses. Jika aplikasi web menerima masukan ini tanpa membersihkannya, penyerang dapat memasukkan pernyataan SQL yang berbahaya.
  • Injeksi SQL berdasarkan cookie – pendekatan lain untuk injeksi SQL adalah memodifikasi cookie untuk “meracuni” kueri basis data. Aplikasi web sering kali memuat cookie dan menggunakan datanya sebagai bagian dari operasi database. Pengguna jahat, atau malware yang disebarkan pada perangkat pengguna, dapat memodifikasi cookie, untuk menyuntikkan SQL dengan cara yang tidak terduga.
  • Injeksi SQL berdasarkan header HTTP – variabel server seperti header HTTP juga dapat digunakan untuk injeksi SQL. Jika aplikasi web menerima masukan dari header HTTP, header palsu yang berisi SQL arbitrer dapat memasukkan kode ke dalam database.
  • Injeksi SQL orde kedua – ini mungkin merupakan serangan injeksi SQL yang paling kompleks, karena serangan ini mungkin tidak aktif dalam jangka waktu yang lama. Serangan injeksi SQL tingkat kedua mengirimkan data beracun, yang mungkin dianggap tidak berbahaya dalam satu konteks, namun berbahaya dalam konteks lain. Bahkan jika pengembang membersihkan semua masukan aplikasi, mereka masih rentan terhadap jenis serangan ini.

Contoh Kode Injeksi SQL

Mari kita lihat dua contoh umum serangan injeksi SQL. 

Contoh 1: Menggunakan SQLi untuk Mengautentikasi sebagai Administrator

Contoh ini menunjukkan bagaimana penyerang dapat menggunakan injeksi SQL untuk menghindari otentikasi aplikasi dan mendapatkan hak administrator. 

Pertimbangkan sistem otentikasi sederhana menggunakan tabel database dengan nama pengguna dan kata sandi. Permintaan POST pengguna akan menyediakan variabel userdan pass, dan ini dimasukkan ke dalam pernyataan SQL:

sql = "SELECT id FROM users WHERE username='" + user + "' AND password='" + pass + "'"

Masalahnya di sini adalah pernyataan SQL menggunakan penggabungan untuk menggabungkan data. Penyerang dapat memberikan string seperti ini sebagai ganti passvariabel:

password' OR 5=5

Kueri SQL yang dihasilkan akan dijalankan terhadap database:

SELECT id FROM users WHERE username='user' AND password='pass' OR 5=5'

Karena 5=5merupakan kondisi yang selalu bernilai benar, seluruh WHEREpernyataan akan benar, terlepas dari nama pengguna atau kata sandi yang diberikan. 

Pernyataan tersebut WHEREakan mengembalikan ID pertama dari tabel pengguna, yang biasanya merupakan administrator. Ini berarti penyerang dapat mengakses aplikasi tanpa otentikasi, dan juga memiliki hak administrator. 

Bentuk lebih lanjut dari serangan ini adalah penyerang menambahkan simbol komentar kode di akhir pernyataan SQL, yang memungkinkan mereka memanipulasi kueri SQL lebih lanjut. Berikut ini akan berfungsi di sebagian besar database termasuk MySQL, PostgreSQL, dan Oracle:

' OR '5'='5' /*

Pelajari lebih lanjut di panduan terperinci kami untuk pengujian injeksi sql .

Contoh 2: Menggunakan SQLi untuk Mengakses Data Sensitif

Dalam contoh ini, kode berikut memperoleh nama pengguna saat ini, dan mencari item yang cocok dengan nama item tertentu, dengan pemiliknya adalah pengguna saat ini.

...
string userName = ctx.getAuthenticatedUserName();
string query = "SELECT * FROM items WHERE owner = "'"
                + userName + "' AND itemname = '"
                + ItemName.Text + "'";
...

Kode ini memiliki kelemahan yang sama seperti pada contoh sebelumnya – penggunaan penggabungan. Setelah menggabungkan nama pengguna dan nama item, kode tersebut membuat kueri berikut:

SELECT * FROM items 
WHERE owner =
AND itemname = ;

Jika penyerang memberikan string berikut untuk itemname:

Widget' OR 5=5

Pernyataan SQL menjadi:

SELECT * FROM items
WHERE owner = 'John'
AND itemname = 'Widget' OR 5=5';

Yang sama dengan: SELECT * FROM items;

Ini berarti kueri akan mengembalikan data seluruh tabel, memberikan penyerang akses tidak sah ke data sensitif.

Contoh 3: Memasukkan Pernyataan Berbahaya ke dalam Bidang Formulir


Ini adalah serangan injeksi SQL sederhana berdasarkan masukan pengguna. Penyerang menggunakan formulir yang memerlukan nama depan dan nama belakang sebagai masukan. Penyerang memasukkan:

  • Nama depan:malicious'ex
  • Nama keluarga:Smith

Variabel nama depan penyerang berisi ekspresi jahat, yang kami nyatakan sebagai 'ex. Pernyataan SQL yang memproses input formulir terlihat seperti ini:

SELECT id, firstname, lastname FROM authors

Setelah penyerang memasukkan ekspresi jahat ke dalam nama depan, pernyataannya akan terlihat seperti ini:

SELECT id, firstname, lastname FROM authors WHERE firstname = 'malicious'ex' and lastname ='newman'

Basis data mengidentifikasi sintaks yang salah karena tanda kutip tunggal, dan mencoba menjalankan pernyataan berbahaya.

Lembar Cheat Pencegahan Injeksi SQL

Ini adalah versi ringkasan dari lembar contekan pencegahan injeksi OWASP SQL yang luar biasa .

Opsi Pertahanan 1: Pernyataan yang Disiapkan (dengan Kueri yang Diparameterisasi)

Pernyataan yang disiapkan mudah dipelajari dan digunakan, serta menghilangkan masalah injeksi SQL. Mereka memaksa Anda untuk mendefinisikan kode SQL, dan meneruskan setiap parameter ke kueri nanti, membuat perbedaan yang kuat antara kode dan data. 

Jika penyerang memberikan string berbahaya seperti pada contoh di atas, misalnya memberikan John' or 1=1nama pengguna, pernyataan yang disiapkan akan mengevaluasinya sebagai string literal. Ini akan mencari pengguna bernama John' or 1=1(dan gagal, karena tidak ada pengguna tersebut) alih-alih mengevaluasi pernyataan ini sebagai kode.

Pernyataan yang disiapkan tersedia dalam semua bahasa pemrograman. Berikut adalah contoh di Jawa. Agar aman, OWASP merekomendasikan untuk memvalidasi parameter input untuk berjaga-jaga.

// Separate definition of input variable
String custname = request.getParameter("customerName");
// Separate definition of SQL statement
String query = "SELECT account_balance FROM user_data WHERE user_name = ? ";
// PreparedStatement command securely combines inputs and SQL syntax
PreparedStatement pstmt = connection.prepareStatement( query );
pstmt.setString( 1, custname);
ResultSet results = pstmt.executeQuery( );

Opsi Pertahanan 2: Prosedur Tersimpan

Prosedur tersimpan mirip dengan pernyataan yang disiapkan, hanya kode SQL untuk prosedur tersimpan yang ditentukan dan disimpan dalam database, bukan dalam kode pengguna. Dalam kebanyakan kasus, prosedur tersimpan bisa seaman pernyataan yang telah disiapkan, sehingga Anda dapat memutuskan mana yang lebih sesuai dengan proses pengembangan Anda.

Ada dua kasus di mana prosedur tersimpan tidak aman:

  • Prosedur tersimpan mencakup pembuatan SQL dinamis – hal ini biasanya tidak dilakukan dalam prosedur tersimpan, namun dapat dilakukan, jadi Anda harus menghindarinya saat membuat prosedur tersimpan. Jika tidak, pastikan Anda memvalidasi semua input.
  • Hak istimewa pemilik basis data – dalam beberapa pengaturan basis data, administrator memberikan izin kepada pemilik basis data untuk mengaktifkan prosedur tersimpan agar dapat dijalankan. Artinya jika penyerang membobol server, mereka mempunyai hak penuh atas database. Hindari hal ini dengan membuat peran khusus yang mengizinkan prosedur penyimpanan hanya pada tingkat akses yang diperlukan.

Berikut adalah contoh prosedur tersimpan di Java (Java menyebutnya a CallableStatement). Kami berasumsi bahwa sp_getAccountBalancerprosedur tersimpan mengimplementasikan logika yang sama seperti pernyataan yang disiapkan pada opsi 1 di atas.

// Separate definition of user inputs
String custname = request.getParameter("customerName");
// Executing the stored procedure sp_getAccountBalancer
try {
  CallableStatement cs = connection.prepareCall("{call
sp_getAccountBalance(?)}");
  cs.setString(1, custname);
  ResultSet results = cs.executeQuery();
  // result set handling
} catch (SQLException se) {
  // logging and error handling
}

Opsi Pertahanan 3: Validasi Masukan Daftar yang Diizinkan

Ini adalah tindakan kuat lainnya yang dapat bertahan melawan injeksi SQL. Ide validasi daftar yang diizinkan adalah bahwa masukan pengguna divalidasi berdasarkan daftar tertutup dari nilai hukum yang diketahui.

Misalnya, jika input pengguna digunakan untuk memilih tabel database, Anda bisa menggunakan kode seperti ini untuk memastikan bahwa input tersebut hanya bisa cocok dengan salah satu dari beberapa nama tabel yang diketahui:

String tableName;
switch(PARAM):
  case "Value1": tableName = "fooTable";
                 break;
  case "Value2": tableName = "barTable";
                 break;
  ...
  default      : throw new InputValidationException("unexpected value 
                 Provided" + " for table name");

Cara aman lainnya untuk menangani masukan pengguna adalah dengan mengonversinya ke bentuk non-string. Misalnya, jika masukan pengguna menentukan apakah kueri harus diurutkan dalam urutan menaik atau menurun, masukan dapat dikonversi ke boolean. Dan kemudian nilai boolean ini digunakan untuk menentukan urutan pengurutan:

public String someMethod(boolean sortOrder) {
 String SQLquery = "some SQL ... order by Salary " + (sortOrder ? "ASC" :
"DESC");`
...

Opsi Pertahanan 4: Menghindari Semua Masukan yang Disediakan Pengguna

Melarikan diri berarti menambahkan karakter escape yang memerintahkan kode untuk mengabaikan karakter kontrol tertentu, mengevaluasinya sebagai teks dan bukan sebagai kode. 

Opsi ini adalah opsi yang paling tidak aman dari keempatnya, dan sebaiknya hanya digunakan sebagai upaya terakhir. Hal ini karena melarikan diri dari masukan pengguna hanya efektif jika kode lolos dari semua kemungkinan karakter kontrol, dan penyerang menemukan berbagai cara kreatif untuk menyuntikkannya. Oleh karena itu, OWASP tidak merekomendasikan metode ini dan menyarankan penggunaan opsi 1 atau 2 di atas.

Misalnya, di MySQL ada dua mode pelolosan – ANSI_QUOTES SQLmode dan MySQLmode:

  • dalam mode ANSI_QUOTES, untuk keluar dari karakter kontrol, enkode semua karakter ' (satu centang) dengan ” (dua centang)
  • Dalam mode MySQL, keluarkan karakter berikut:
    • \0 [angka nol, bukan huruf O]
    • \B
    • \T
    • \N
    • \R
    • \Z
    • \”
    • \%
    • \'
    • \\ [menghilangkan satu karakter garis miring]
    • \_
    • Ganti semua karakter non-alfanumerik lainnya dengan nilai ASCII
    • Ganti angka yang kurang dari 256 dengan \c dimana 'c' adalah angka aslinya

OWASP menyediakan API Keamanan Perusahaan (ESAPI) sumber terbuka dan gratis , yang dapat membantu Anda menerapkan pelolosan dalam kode database lama. Ini menyediakan codec untuk database populer, yang telah lolos untuk semua pola kontrol yang tidak aman. 

ESAPI saat ini mendukung Oracle dan MySQL, dan akan segera mendukung encoder untuk SQL Server dan PostgreSQL.