HACK | Oracle SQL Injection Detaylı Bilgi

JohnDoe

Kıdemli Üye
29 Eyl 2013
2,710
6
Teşkilat
Merhabalar,

Bu makalemizde Oracle veritabanı kullanan bir siteyi nasıl hackleyebileceğimizi öğreneceğiz.

Makaleye geçmeden önce bazı ipuçları verelim:

Oracle’da boşluk karakteri önemlidir. Bu yüzden boşluk karakteri yerine %20 (URL encode ettik) kullandık.

Eşittir işaretinin yerine de %3d kullandık. Bunları yapmamızın asıl sebebi, karşımıza çıkabilecek bir hatayı önceden bypass etmektir.

Örnek sitemiz;


Yukarıdaki linke tıkladığımızda sitedeki kayıtlı çalışanlar listeleniyor.

EQo2NB.png


Önce sql injection’ın ilk adımı olan kolon sayısını bulma işlemini yapıyoruz. Bu makalede daha önce kolon sayısını bulurken pek bilmediğimiz bir yöntemden bahsedeceğiz: Union Select yöntemi. Metodumuz şu şekilde işliyor: Aşağıdaki gibi bir komut yazıyoruz ve sayfanın hata vermemesini bekliyoruz. Eğer hata(resim2) verirse NULL sayısını 1 kez daha fazla yazıyoruz.

Komut;


Hata Resim;

jzZApD.png


Bir NULL daha yazıyoruz.

Komut;


Hata Resim;

jzZApD.png


Şimdi hangi kolonun string olduğunu bulmamız lazım. Yoksa veri çekemeyiz. Bunun için her defasında bir NULL yerine ’a’ karakterlerini yazıyoruz.

Komut;


Aldığımız Hata;

2vAPqd.png


2. NULL yerine ’a’ yazdığımızda aşağıdaki gibi bir ekran karşımıza çıktı:

Komut;


Karşımıza Çıkan Ekran;

BoYGNQ.png


String kolonu bulduk.

Oracle’da user_objects adında, tüm nesnelerin adının ve türünün tutulduğu bir tablo var. Şimdi bu tablonun elemanlarını öğrenelim.

Komut;


Z24npo.png


Gördüğünüz gibi indeksler, prosedürler, tablolar vs yansıdı. Burada işimize yarayacak tablo, USERS tablosu.

Oracle’da user_tab_columns adında, tüm sütunların adının tutulduğu da bir tablo vardır. Şimdi de bu tablodan USERS tablosunun sütunlarını öğrenelim.

Komut;

https://site.com/employees.asp?EmpNo=7521 UNION SELECT NULL,
column_name,NULL,NULL%20from%20user_tab_columns%20where%20table_name%20%
3d%20’USERS’--

onvypR.png


Gördüğünüz üzere USERS tablosunun 6 tane sütunu vardır. Bunlardan login ve password sütunlarında yer alan bilgileri çekelim.

Komut;


lBl4pg.png


Evet, kullanıcı adı ve şifreleri öğrendik. Artık veritabanına giriş yapabiliriz.

Not: String türünde sadece bir kolon olsaydı, kullanıcı adı ve şifreleri şöyle çekebilirdik.

https://site.com/employees.asp?EmpNo=7521 UNION SELECT NULL,
login||’:’||password,NULL,NULL%20from%20user_objects--

Kolay gelsin.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.