Bentuk Serangan SQL Injection

UAS software Security
Serangan SQL Injection
  • Identifying injectable parameters : Penyerang ingin menyelidiki Aplikasi Web untuk menemukan mana parameter dan bidang-input pengguna rentan terhadap SQLIA.
  • Performing database finger-printingPenyerang ingin menemukan jenis dan versi database yang aplikasi Web menggunakan. Beberapa jenis database yang berbeda merespon secara berbeda terhadap query dan serangan, dan informasi ini dapat digunakan untuk "sidik jari" database. Mengetahui jenis dan versi database digunakan oleh aplikasi Web memungkinkan penyerang untuk kerajinan serangan databasespecific.
  • Determining database schema : Untuk benar mengekstrak data dari database, penyerang seringkali perlu mengetahui informasi skema database, seperti nama tabel, nama kolom, dan tipe data kolom. Serangan dengan maksud ini diciptakan untuk mengumpulkan atau menyimpulkan informasi seperti ini.
  • Extracting data Jenis-jenis serangan menggunakan teknik yang akan mengekstrak nilai data dari database. Tergantung pada jenis aplikasi Web, informasi ini bisa menjadi sensitif dan sangat diinginkan untuk penyerang. Serangan dengan maksud ini adalah Jenis yang paling umum dari SQLIA.
  • Adding or modifying data : Tujuan dari serangan ini adalah untuk menambah atau mengubah informasi dalam database.
  • Performing denial of service: Serangan ini dilakukan untuk menutup database dari aplikasi Web, sehingga menyangkal layanan kepada pengguna lain. Serangan yang melibatkan mengunci atau menjatuhkan tabel database juga termasuk dalam kategori ini.
  • Evading detection: Kategori ini mengacu pada teknik serangan tertentu yang digunakan untuk menghindari audit dan deteksi oleh mekanisme perlindungan sistem.
  • Bypassing authentication:  Tujuan dari serangan jenis ini adalah untuk memungkinkan penyerang untuk memotong database dan mekanisme otentikasi aplikasi. Melewati mekanisme seperti itu bisa memungkinkan penyerang untuk menganggap hak dan hak istimewa terkait dengan pengguna aplikasi lain
  • Executing remote commands: Jenis-jenis serangan mencoba untuk menjalankan perintah sewenang-wenang pada database. Perintah ini Canbe disimpan prosedur atau fungsi yang tersedia bagi pengguna database....
  • Performing privilege escalation: Serangan ini memanfaatkan kesalahan implementasi atau kekurangan logis dalam database untuk meningkatkan hak-hak istimewa dari penyerang. Berbeda dengan melewati serangan otentikasi, serangan ini fokus pada pemanfaatan hak database pengguna.
   2. Injection Mechanisms
  • Injection through user inputDalam kasus ini, penyerang menyuntikkan SQL perintah dengan menyediakan input pengguna sesuai dibuat. Sebuah aplikasi Web dapat membaca input pengguna dalam beberapa cara berdasarkan pada lingkungan di mana aplikasi ini digunakan. Dalam kebanyakan SQLIAs target Aplikasi web, input pengguna biasanya berasal dari pengiriman form yang dikirim ke aplikasi Web melalui HTTP GET atau POST permintaan . Aplikasi web umumnya mampu mengakses input pengguna yang terkandung dalam permintaan tersebut karena mereka akan mengakses variabel lain di lingkungan.
  • Injection through cookies:  Cookie adalah file yang berisi informasi  yang dihasilkan oleh aplikasi Web dan disimpan pada mesin klien. Ketika klien kembali ke aplikasi Web, cookie dapat digunakan untuk mengembalikan informasi klien. Karena klien memiliki kontrol atas penyimpanan cookie, klien jahat bisa mengutak-atik isi cookie. Jika aplikasi Web menggunakan isi cookie untuk membangun SQL query, penyerang bisa dengan mudah mengirimkan serangan oleh embedding dalam cookie
  • Injection through server variablesVariabel Server adalah kumpulan variabel yang berisi HTTP, header jaringan, dan variabel lingkungan. Aplikasi web menggunakan variabel server berbagai cara, seperti penebangan statistik penggunaan dan mengidentifikasi menelusuri tren. Jika variabel ini masuk ke database tanpa sanitasi, ini bisa membuat SQL injection kerentanan. Karena penyerang bisa membina nilai-nilai yang ditempatkan di HTTP dan header jaringan, mereka dapat memanfaatkan celah ini dengan menempatkan SQLIA langsung ke header. Ketika query untuk log server variabel dikeluarkan ke database, serangan di header palsu adalah salah satu pemicu.
  • Second-order injection: Dalam suntikan orde kedua, penyerang benih input berbahaya ke dalam sistem atau database untuk secara tidak langsung memicu SQLIA ketika masukan yang digunakan di lain waktu. Tujuanserangan semacam ini berbeda secara signifikan dari biasa (misalnya, firstorder) serangan injeksi. Suntikan orde kedua tidak mencoba untuk menyebabkan serangan terjadi ketika input berbahaya awalnya mencapai database. Sebaliknya, penyerang bergantung pada pengetahuan tentang manamasukan akan kemudian digunakan dan kerajinan serangan mereka sehingga terjadi selama penggunaan itu. Untuk memperjelas, kami menyajikan contoh klasik dari urutan kedua serangan injeksi (diambil dari [1]). Dalam contoh ini, seorang pengguna mendaftar pada sebuah situs web dengan menggunakan nama pengguna unggulan, seperti sebagai "admin" - ". Aplikasi ini benar lolos single mengutip pada input sebelum menyimpannya dalam database, mencegah nya efek berpotensi berbahaya. Pada titik ini, pengguna memodifikasi nya atau password-nya, sebuah operasi yang biasanya melibatkan (1) memeriksa bahwa pengguna mengetahui password saat ini dan (2) mengubah password jika cek tersebut berhasil.
    -          Frekuensi dasar berbasis Aplikasi Utama
    -          Frekuensi dasar berbasis Aplikasi Kedua
    -          Aplikasi pendukung Sekunder
    -          Aplikasi pengajuan mengalir

    Serangan tidak terjadi ketika pertama kali mencapai database, tapi ketika digunakan di kemudian hari.
    Input: admin' - ===> admin \ '-
    querystring =
    "Pengguna UPDATE SET pin =" + + newPin
    "MANA userName = '" + username + "' AND pin =" + oldPin;
    querystring =
    "Pengguna UPDATE SET pin = '0 '
    MANA userName = 'admin' -' DAN pin = 1 ";


    Type Serangan SQL Injection

    a.    SQL Injection Attack Classic
    -          Piggy-backed Queries
    Masukkan pertanyaan tambahan yang akan dieksekusi oleh database.

    querystring = "Info SELECT DARI MANA usertable" +
    "Login = '" + + Login "' AND pin =" + pin;
    Masukan pin sebagai "0; DROP webapp Database"
    querystring = "Info SELECT DARI MANA usertable
    login = 'nama' DAN pin = 0; DROP webapp Database "

    -          Tautologies
    Buat query yang selalu mengevaluasi untuk benar untuk entri dalam database.

    querystring = "Info SELECT DARI MANA usertable" +
    "Login = '" + + Login "' AND pin =" + pin;
    Masukan login sebagai "user 'atau 1 = 1 -"
    querystring = "Info SELECT DARI MANA usertable
    login = 'user' atau 1 = 1 - 'DAN pin = "

    -          Encodings Alternatif
    Encode serangan sedemikian rupa untuk menghindari masukan naif penyaringan.

    querystring = "Info SELECT DARI MANA usertable" +
    "Login = '" + + Login "' AND pin =" + pin;
    Masukan pin sebagai "0; declare @ char (20) pilih
    @ a = 0x73687574646f776e exec (@ a) "
    "SELECT Info DARI MANA usertable
    login = 'user' DAN pin = 0;
    menyatakan @ char (20) pilih @ a = 0x73687574646f776e exec (@ a) "

    -          Illegal / Logically Incorrect Queries
    Tujuan: -  mengumpulkan informasi tentang jenis dan struktur dari database back-end dari aplikasi Web. Penyebab sintaks, jenis konversi, atau kesalahan logis ke dalam database.
    - Jika penyerang menyuntikkan teks berikut ke bidang masukan pin:
    "Mengkonversi (int, (pilih atas 1 nama dari sysobjects mana xtype = 'u'))".
    Yang dihasilkan query:
    SELECT akun FROM pengguna WHERE login ='' DAN pass ='' DAN pin = convert (int, (pilih atas 1 nama dari sysobjects mana xtype = 'u'))

    -          UNION SQLIA
    Tujuan: untuk melewati Otentikasi, penggalian data. Mengembalikan sebuah dataset yang adalah gabungan dari hasil asli pertama query dan hasil query disuntikkan.

    - Seorang penyerang bisa menyuntikkan teks "'UNION SELECT CARDNO dari creditcards mana acctNo = 10032 -" ke dalam kolom login, yang menghasilkan query berikut:
    SELECT akun FROM pengguna WHERE login ='' UNION
    SELECT CARDNO dari creditcards mana acctNo = 10032 - DAN pass ='' DAN pin =

    -          Stored Procedures SQLIA
    Tujuan : Melakukan penolakan layanan, mengeksekusi perintah remote.
    Menyebabkan database untuk menutup.

    Menyuntikkan "'; SHUTDOWN, -" menjadi baik ladang userName atau password.
    Suntikan ini menyebabkan prosedur yang tersimpan untuk menghasilkan query berikut:
    SELECT akun FROM pengguna WHERE login = 'doe' DAN lulus = ''; SHUTDOWN, - DAN pin =


    b.   Gangguan dari SQL Injection Attack
    Mempunyai Tujuan yaitu : Mengidentifikasi parameter suntik, penggalian data, menentukan skema database. Query dimodifikasi akan dieksekusi berdasarkan jawaban untuk pertanyaan benar / salah.

    Mempunyai 2 Teknik yaitu :
    a.       Classic Blind Injection
    b.      Timing Attack

    -    Classic Blind
                    Blind SQL Injection digunakan ketika sebuah aplikasi web yang rentan terhadap SQL injection tetapi hasil injeksi tidak terlihat penyerang. Halaman dengan kerentanan mungkin tidak menjadi salah satu yang menampilkan data tetapi akan ditampilkan berbeda tergantung pada hasil dari pernyataan logis disuntikkan ke pernyataan SQL yang sah disebut untuk halaman tersebut. Jenis serangan dapat menjadi waktu-intensif karena pernyataan baru harus dibuat untuk setiap bit pulih. Ada beberapa alat yang dapat mengotomatisasi serangan ini sekali lokasi kerentanan dan informasi target telah ditetapkan.
    -          Conditional Response /  Kondisi Respon
    Salah satu jenis SQL injection memaksa database untuk mengevaluasi pernyataan logis pada layar aplikasi biasa. Sebagai contoh, sebuah situs web review buku menggunakan string query untuk menentukan resensi buku untuk menampilkan. Jadi URL http://books.example.com/showReview.php?ID=5 akan menyebabkan server untuk menjalankan query.

    “SELECT * FROM WHERE ID = bookreviews '5 ';”

    dari mana ia akan mengisi halaman review dengan data dari review dengan ID 5, disimpan dalam bookreviews tabel. Permintaan terjadi sepenuhnya pada server, pengguna tidak tahu nama-nama database, tabel, atau field, juga tidak pengguna tahu string query. Pengguna hanya melihat bahwa URL di atas mengembalikan resensi buku. Seorang hacker dapat memuat URL http://books.example.com/showReview.php?ID=5 DAN 1 = 1 dan http://books.example.com/showReview.php?ID=5 DAN 1 = 2, yang dapat mengakibatkan query

    SELECT * FROM WHERE ID = bookreviews '5 'DAN '1' = '1 ';
    SELECT * FROM WHERE ID = bookreviews '5 'DAN '1' = '2 ';

    masing-masing. Jika review beban asli dengan "1 = 1" URL dan halaman kosong atau kesalahan dikembalikan dari "1 = 2" URL, situs ini mungkin rentan terhadap serangan injeksi SQL. Hacker dapat melanjutkan dengan query string dirancang untuk mengungkapkan nomor versi MySQL yang berjalan pada server: http://books.example.com/showReview.php?ID=5 DAN substring (@ @ version, 1,1) = 4, yang akan menampilkan bedah buku pada server yang menjalankan MySQL 4 dan halaman kosong atau kesalahan sebaliknya. Hacker dapat terus menggunakan kode dalam string query untuk mengumpulkan informasi lebih lanjut dari server sampai jalan lain serangan ditemukan atau tujuan nya tercapai.

    -       Conditional Errors / Kondisi Kesalahan
    -       Out-Of-Band Channeling

    -          Timing SQLIA
    Jenis injeksi SQL buta bergantung pada database berhenti untuk jumlah waktu tertentu, kemudian kembali hasil, menunjukkan sukses mengeksekusi query SQL. Dengan menggunakan metode ini, penyerang menyebutkan setiap huruf dari potongan yang diinginkan data menggunakan logika berikut:
    Jika huruf pertama dari nama database pertama adalah 'A', tunggu selama 10 detik.
    Jika huruf pertama dari nama database pertama adalah 'B', tunggu selama 10 detik. dan lain-lain
    Microsoft SQL Server
    http://www.site.com/vulnerable.php?id=1 'waitfor delay '00: 00:10' -
    MySQL
    SELECT IF (ekspresi, true, false)
    Menggunakan beberapa waktu pengambilan operasi misalnya Benchmark (), akan menunda respon server jika ungkapan Benar.
    PATOKAN (5000000, encode ('MSG', 'oleh 5 detik'))
    - Akan menjalankan fungsi encode 5000000 kali.
    Tergantung pada kinerja database server dan beban, harus mengambil hanya waktu untuk menyelesaikan operasi ini. Yang penting adalah, dari sudut pandang penyerang, untuk menentukan nomor tinggi cukup Benchmark () pengulangan fungsi untuk mempengaruhi waktu respon database dengan cara yang terlihat.
    Contoh kombinasi dari kedua pertanyaan:
    1 UNION SELECT IF (SUBSTRING (user_password, 1,1) = CHAR (50), Benchmark (5000000, encode ('MSG', 'oleh 5 detik')), null) FROM pengguna WHERE user_id = 1;
    Jika respon database butuh waktu lama, kita dapat berharap bahwa pengguna pertama karakter password dengan user_id = 1 adalah karakter '2 '.
    (CHAR (50) == '2 ')
    Dengan menggunakan metode ini untuk sisa karakter, itu mungkin untuk menghitung seluruh password disimpan dalam database. Metode ini bekerja bahkan ketika penyerang menyuntikkan query SQL dan isi dari halaman rentan tidak berubah.
    Jelas, dalam contoh ini, nama-nama tabel dan jumlah kolom yang ditentukan. Namun, mungkin untuk menebak mereka atau memeriksa dengan metode trial and error.
    Database selain MySQL juga memiliki fungsi berbasis waktu yang memungkinkan mereka untuk digunakan untuk serangan berbasis waktu:
    WAIT MS SQL 'UNTUK DELAY '0: 0:10
    PostgreSQL - pg_sleep ()
    Melakukan serangan Blind_SQL_Injection manual sangat memakan waktu, tetapi ada banyak alat yang mengotomatisasi proses ini. Salah satunya adalah sqlmap (http://sqlmap.sourceforge.net/) sebagian dikembangkan dalam program hibah OWASP. Di sisi lain, alat-alat semacam ini sangat sensitif bahkan penyimpangan kecil dari aturan. Ini termasuk:
    pemindaian cluster website lain, di mana jam tidak idealnya disinkronkan,
    Layanan WWW dimana metode memperoleh argumen diubah, misalnya dari / index.php? ID = 10 sampai / ID, 10.

    DBMS Spesific SQLIA
    -          Data Base Fingerprint
    Penyerang ingin menemukan jenis dan versi database yang aplikasi Web adalah
    menggunakan. Beberapa jenis database yang berbeda merespon secara berbeda terhadap
    query dan serangan, dan informasi ini dapat digunakan untuk "sidik jari" database. Mengetahui jenis dan versi database digunakan oleh aplikasi Web memungkinkan penyerang untuk kerajinan databasespecific serangan.

    -          Data Base Mapping
    Untuk benar mengekstrak data dari database, penyerang seringkali perlu mengetahui informasi skema database, seperti nama tabel, nama kolom, dan data kolom jenis. Serangan dengan maksud ini diciptakan untuk mengumpulkan atau menyimpulkan ini jenis informasi.


    Serangan SQL yang Diperparah
    -          Fast-Fluxing SQLIA
    Contoh kasus :
    Meletakkannya, dan memasukkannya seperti merupakan contoh yang baik dari perang taktis, yaitu menggabungkan taktik yang berbeda demi sehingga sulit untuk melacak dampak dari kampanye injeksi SQL tertentu. Perhatikan contoh berikut domain dikaburkan, secara alami berada di-fluks cepat dalam waktu injeksi SQL yang beberapa script kiddies Cina mengambil keuntungan dari:

    % 6b% 6b% 36% 2e% 75% 73 - kk6.us

    % 73% 61% 79% 38% 2E% 75% 73 - s.see9.us

    % 66% 75% 63% 6B% 75% 75% 2E% 75% 73 - fuckuu.us

    % 61% 2E% 6B% 61% 34% 37% 2E% 75% 73 - a.ka47.us

    % 61% 31% 38% 38% 2E% 77% 73 - a188.ws

    % 33% 2E% 74% 72% 6F% 6A% 61% 6E% 38% 2E% 63% 6F% 6D - 3.trojan8.com

    % 6D% 31% 31% 2E% 33% 33% 32% 32% 2E% 6F% 72% 67 - m11.3322.org

    Seperti biasa, obfuscations ini hanya puncak gunung es mengingat jumlah tak terhitung obfuscations teknik URL lain yang spammer dan phisher yang digunakan untuk mengambil keuntungan dari skala besar. Untuk saat ini, salah satu alasan utama kita tidak melihat suntikan SQL besar menggunakan obfuscations tersebut terutama karena fitur belum diimplementasikan dalam populer SQL injector untuk peniru script kiddies untuk mengambil keuntungan dari. Namun, dengan potensi untuk menghindari pendekatan deteksi umum, itu hanya masalah kemauan pribadi bagi seseorang untuk menambahkan lapisan tambahan ini untuk memastikan survivability kampanye.

    Orang-orang di balik obfuscations ini alami multitasking di beberapa bidang tanah yang berbeda. Ambil contoh 3.trojan8.com (58.18.33.248) juga menanggapi w2.xnibi.com yang juga disuntikkan pada beberapa domain, w2.xnibi.com/index.gif harus tepat. . File palsu gif dalam semangat daftar direktori palsu untuk memperoleh lalu lintas dalam rangka untuk melayani malware, sebenarnya mencoba untuk mengeksploitasi kerentanan RealPlayer - JS / RealPlr.LB mengeksploitasi!. Semakin Anda pergi, semakin buruk mendapat.