Exploit Hakkında Herşey !!!

RaıdMax

Yeni üye
19 Eki 2009
50
0
Genel Bakış

Bir Exploit genellikle Açığa Gösteriş olarak yazılır ve Internet'de yayınlanır. Bu yapılan uzman dilinde "Proof of Concept" olarak adlandırılır. Bunun sayesinde, Software Üreticisi hızlı bir şekilde açığı bilmeli ve gerekeni yapmalı. Exploitin niteliği teorik olarak exploit olarak adlandırılıyor. Ekseriya exploitler devreye giriyor,mesela bir bilgisayar program kodu ile Data birbirinden ayırmazsa. Böylece mesela bir Buffer Overflow Saldırganın kodu yanlış hafızaya yazılır ve programın uygulamasında manipule edilir. Bir başka yöntem ise Format String saldırılarıdır, filtre edilmemiş User komutu format fonksiyonu printf() olarak verilir.

Exploit Çeşitleri


  • Yerel bilgisayarda çalıştırılan exploitler:
Kullandığın bilgisayarda bir herhangi .exe veya .gif vs. dosyalar çalıştırıldığında devreye girer ve yerel bilgisayarda yüklü olan açığa sahip programlar(software) içinde Shellcode'u çalıştırır ve kötü amaçlı kodu enjekte eder. Bunun sayesinde saldırgan bilgisayar üzerinde yüksek haklara sahip olur.

  • Karşı bilgisayardan çalıştırılan exploitler:
İnternet'ten veya bir yerel ağdan üzerinden çalıştırılan exploitlerdir. Bilgisayarda bulunan güvenlik açıklarını kullanarak, saldıraya açık(vulnerable) sisteme erişim sağlanır.
  • Hizmeti engellemek için yapılan saldırılarda kullanılan exploitler:
İngilizce de DoS(Denial of Service Attack) adıyla geçen exploit türüdür. Hedefi sunucu veya bilgisayarı durdurmak veya yavaşlatmak için yapılan saldırılardır.
  • Komut çalıştırılarak yapılan exploitler:
Program kodu ile hedef sistemde uygulanır. Böyle bir exploit'in doğru şekilde çalıştırılabilmesi için programcı veya saldırgan, saldırılacak olan programı iyi bilmesi gerek. Bu bilgileri açık-kaynaklı bir program ile test ederek edinir. Tehlikeli bir exploit türüdür. Bu exploit sayesinde tüm sistem ele geçirilebiliyor.
  • SQL enjekte edilerek yapılan exploitler:
Bu exploit, SQL kodunu kullanan herhangi bir site veya programda gerçekleştirilebilir. Bu exploit sayesinde kişi veritabanındaki bütün verileri alabilir, düzenleyebilir en kötüsü (yedek alınmamış ise) silebilir. İnternet'teki çoğu site SQL ile desteklenen veritabanları ile yönetilmektedir. Popüler ve tanınan çoğu site buna karşı önlemler almıştır.
  • Sıfır-günlük(daha yeni çıkmış manasında) exploitler:
Bu tür exploitler, program veya script'in çıktığı gün çıkarlar. Hacker ve benzeri kişiler, program/script'in yeni sürümü çıktığı anda onun içinde açık ararlar ve bulduklarında gün içerisinde internete yayarlar.
 
Son düzenleme:

RaıdMax

Yeni üye
19 Eki 2009
50
0
SQL Nedir?

SQL (Structured Query Language) veritabanlarında data çekme, silme ve değiştirme gibi işlemler için kullanılan basit yapılı bir dildir. Bugün hemen hemen tüm web uygulamalarının altyapısında veritabanı desteği vardır ve bu web uygulamaları veritabanı ile SQL aracılığıyla anlaşırlar.
Bir siteye mesaj bıraktığınızda bu mesaj veritabanına kaydedilir. O mesaj onaylandığında veritabanındaki bir alan güncellenmiş olur. Yönetici veritabanındaki kaydı silerek o mesajın siteden silinmesini sağlar.
Örnek bir kayıt silme SQL cümlesi şu şekilde olabilir;
DELETE FROM members WHERE id=17

Yukarıdaki kod veritabanı tarafından çalıştırıldığında members tablosunda id alanı 17 olan kayıt silinecektir.
Bu makale SQL dilinin basit detaylarını ele almayacaktır. Eğer SQL konusunda zayıf iseniz makaleyi anlamanız güç olacaktır. Makaleye devam etmeden önce SQL in temel komutlarını öğrenmenizi ve veritabanı mantığınız anlamanızı tavsiye ederim.
 

RaıdMax

Yeni üye
19 Eki 2009
50
0


SQL Injection nedir?

Web uygulamalarında bir çok işlem için kullanıcıdan alınan veri ile dinamik SQL cümlecikleri oluşturulur. Mesela “SELECT * FROM Products” örnek SQL cümleciği basit şekilde veritabanından web uygulamasına tüm ürünleri döndürecektir. Bu SQL cümlecikleri oluşturulurken araya sıkıştırılan herhangi bir ****-karakter SQL Injection’ a neden olabilir
 

RaıdMax

Yeni üye
19 Eki 2009
50
0
****-Karakter Nedir?
****-karakter bir program için özel anlamı olan karakterlere verilen isimdir. Örnek olarak C temelli C#, Javascript, PHP gibi dillerde (\) backslash karakteri bir ****-karakterdir. Compiler (derleyici) ya da Interpreter (yorumlayıcı) bu karakteri görünce ondan sonraki karakteri ona göre işler.
SQL’ için kritik ****karakter (‘) tek tırnak’ tır. Çünkü iki tek tırnağın arası string olarak algılanır. Diğer bir önemli ****-karakter ise (;) noktalı virgüldür, satırın bittiğini ve yeni satır başladığını bildirir.
Genel bir web uygulamasında olası bir üye girişi işlemi şu şekildedir;
  • Formdan gelen kullanıcı adı ve şifre bilgisi ile ilgili SQL cümleciği oluşturulur (SELECT * FROM members WHERE user=’admin’ AND password=’sifre’ gibi)
  • SQL cümleciği kayıt döndürüyorsa böyle bir kullanıcının var olduğu anlamına gelir ve session(oturum) açılır ve ilgili kullanıcı üye girişi yapmış olur.
  • Eğer veritabanından kayıt dönmediyse "kullanıcı bulunamadı" veya "şifre yanlış" gibi bir hata ile ziyaretçi tekrar üye girişi formuna gönderilir.

Örnek bir üye girişi kodu

ASP ile yazılmış örnek bir üye girişi kodu;
<%
1. FUsername = Request.Form("username")
2. FPassword = Request.Form("password")
3.
4. Set RsLogin = SQLConn.Execute("SELECT * FROM Members WHERE username = '" & FUsername & "' AND Password = '" & FPassword & "'")
5.
6. If RsLogin.EOF AND RsLogin.BOF Then
7. Response.Redirect "/error.asp"
8.
9. Else
10. Session("login") = RsLogin("user_id")
11. Response.Redirect "../"
12.
13.
End If
%>

Kod gayet basit. 1. ve 2. satırda “username ve “passwordform değişkenlerinin değerlerini alıyor. 4. satırda SQL cümleciğinin içerisine yerleştirip kullanıcı kontrolü yapıyor.
Bu işlemden sonra 6. satırda sonucun boş olup olmadığına bakıyor. Eğer boş ise yani kullanıcı veritabanında bulunmadıysa 7. satırda görüldüğü gibi kullanıcıyı hata sayfasına gönderiyor.
Eğer bulunduysa 10 ve 11. satırdaki işlemleri yapıyor. Yani kullanıcıya id’ si ile birlikte bir session açıyor. Bu sayede kullanıcı sisteme giriş yapmış oluyor.
Bu klasik bir login prosedürü. Tabii ki daha farklı ya da karışık olabilir.
Kullanıcı adı ve şifreye bir injection denemesi yapıp neler olacağını inceleyelim. Eğer kullanıcı adı ve şifre yerine “' OR ''='” ve “' OR ''='” girersek başarılı bir şekilde üye giriş yapmış oluyoruz ama nasıl ve niye?
Şimdi çalışan örnek kodu tekrar hatırlayalım 1 ve 2. satır form değerini alıyordu 4. satırda bu gelen değerleri SQL’ in içerisine yerleştirip veritabanında sorgu yaptırtıyordu.
Form değerlerini yerlerine yerleştirelim ve az önceki çalışan SQL’ e bakalım;
SELECT * FROM Members WHERE username = '' OR ''='' AND Password = '' OR ''=''
Farkettiğiniz üzere bu SQL sorgusu her zaman doğru dönecek ve “Members” tablosundaki tüm üyeleri getirecektir. Bu SQL cümleciğini tercüme edersek şu şekilde olacaktır. Members tablosundan username boş olanları ve password ü boş olanları getir ya da boş eşittir boş!
Birinci ve ikinci mantıksal kontrolün kayıt döndürüp döndürmesi önemli değil çünkü üçüncü kontrol her zaman doğru olarak döneceğinden (boş her zamana boşa eşit değil mi?) bu SQL cümleciği her zaman tüm kayıtları döndürecektir. Yani kayıt boş mu dolu mu diye kontrol ettiğimizde kayıt dolu olarak gözükecektir. Farkettiyseniz OR kullandık dolayıyla mantıksal sorguların herhangi bir doğru (true) olarak dönerse tüm kayıtlar dönmüş oluyor.
Dolayısıyla bu SQL Injection' ı yaptığımızda dönen kayıtlardaki ilk kullanıcı olarak giriş yapılmış olacaktır.
Gördüğünüz gibi SQL Injection; SQL cümleciklerinin arasına dışarıdan girdi yaparak SQL’ i istediğiniz şekilde manipüle etmenize izin veriyor.
 
Ü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.