Abstract— In this project,the penetration test is performed on web pages to introduced the academic personals of a university.
This penetration testing is implemented with tools carried out under BackTrack operating system. At the first step on the target web site scanning is implemented by W3AF. Using SQL injection vulnerabilities obtained by from scanning the informations of the academic members from the personal information system are taken. This informations taken from the system are investigated for the possible person or persons authorized users. According to data obtained authorized access to a target site is provided.
Keywords—penetration testing,backtrack,w3af gui sqlmap,sql injection
I. GİRİŞ
nternet teknolojisi geliştiricileri, internet kullanıcılarının internet teknolojisini daha yararlı kullanmaları amacıyla çeşitli kolaylıklar içeren yazılımlar sunmaktadırlar. Bu yazılımlar karmaşık bir yapıya sahip olması sebebiyle, birtakım güvenlik zafiyetleri ortaya çıkabilmektedir. Güvenlik zafiyetlerini, geliştirici ve bir kısım kullanıcı farkedemese de bu zafiyeti farkeden bir üçüncü şahıs güvenlik zafiyetini kullanarak sisteme erişim sağlayabilmektedir. Sisteme erişimi sağlayan kişi art niyetli bir yapıya sahipse vahim durumlar ortaya çıkmaktadır. Bu tür vahim durum senaryolarının yaşanmaması amacıyla penetrasyon(sızma) testleri yapılmaktadır.
Penetrasyon Testi(Pentest); Belirlenen bilişim sistemlerine mümkün olabilecek her yolun denenerek sızılmasıdır.
Pentestde amaç güvenlik açığını bulmaktan öte bulunan açıklığı değerlendirip sistemlere yetkili erişimler elde etmektir.[1]
Penetrasyon testi yapıldıktan sonra bir sonuç raporu hazırlanıp ilgili kişiye bilgilendirme yapılır.
Bu penetrasyon testi incelemesinde pentest araçları kullanılarak hedef sisteme erişim sağlanmaktadır.
II. PENETRASYONTESTİ II.I Gerekli Araçlar
Backtrack 5 R3: Offensive Security tarafından geliştirilen Debian/Linux tabanlı bir işletim sistemidir. Penetrasyon Testi ve Adli Bilişim için kullanılması amaçlanmıştır.[2]
Web Application Attack and Audit Framework(W3AF):
Rapid7 firması tarafından ücretsiz dağıtılan bir web güvenlik yazılımıdır. W3AF Python programlama dili ile yazılmış hem Windows hem de Linux platformunda çalışan çok güçlü bir tarayıcıdır. Kendi içerisinde bulunan modülleri kullanarak hedef sistem üzerinde tam bir test gerçekleştirebilecek kabiliyete sahiptir. Ayrıca bulduğu güvenlik açıklarını exploit ederek hedef sistemlere sızmaya yarayan modülleri ise W3AF’i oldukça güçlü kılmaktadır.[3]
SQLMAP: SQL Enjeksiyon açıklarını bulmaya ve bu açıkları kullanıcısının menfaatleri doğrultusunda kullanmasını sağlayan penetrasyon testlerinde de kullanılan açık kaynak kodlu bir yazılımdır.
II.II. Backtrack Giriş
Backtrack işletim sisteminin arayüzüne giriş yapabilmek için,Resim 1’de görülen ekranda bt login: kısmına
“root”,Password kısmına ise “toor” yazılmaktadır.
Karşımıza gelen komut satırından da “startx” komutu verilerek Backtrack 5 R3 arayüzü çalıştırılmaktadır.
Resim 1 – Backtrack Giriş Paneli
II.III. Web Application Attack and Audit Framework(W3AF) ile Site Analizi
W3AF,penetrasyon testlerinde sıkça kullanılan bir araçtır.
Bu araç ile bir web sayfası üzerinde zararlı yazılım kodları içeren dosya olup olmadığını tespit edebilir,Çeşitli web uygulamaları üzerinde bulunan zafiyetleri ortaya
çıkarabilirsiniz. Birden fazla güvenlik istismarı tarayıcısını bir pakette bulundurur.
Backtrack 5 R3 versiyonunda W3AF
“Applications/Backtrack/Vulnerability Assessment/Web Application Assessment/Web Vulnerability Scanners/w3af gui” sekmesi altında bulunur.
Bu penetrasyon testi yazısında W3AF programının bir
Fırat Üniversitesi Personel Bilgi Sistemi Penetrasyon(Sızma) Testi
Yücel Yılmaz
Fırat Üniversitesi, Mekatronik Mühendisliği Lisans 1.Sınıf, Elazig/Turkey, yucel1337@gmail.com
İ
web sayfası üzerinde güvenlik zafiyeti taraması işlemi gerçekleştirilmiştir.
İlk olarak W3AF arayüz programında Resim 2’de görülen “Target” kısmına hedef web sayfası yazılır.
“Target” kutucuğunun altında bulunan “audit” eklentisi ise hedef site üzerinde taranacak güvenlik zafiyet çeşitlerini içerir.
Resim 2 – W3AF Arayüz Programı
“audit” eklentisi aktif hale getirilip hedef site üzerinde tarama işlemi başlatılır.
Tarama işlemi başlatıldıktan sonra gelişen olaylar “Log”
sekmesi altında yer almaktadır. Resim 3’de görüldüğü gibi
“uid” parametresinde bir SQL Enjeksiyon* açığı bulunduğu raporlanmaktadır.
Resim 3 – W3AF Log Çıktıları
*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.[4]
*SQL Enjeksiyon, 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 meta-karakter SQL Injection’ a neden olabilir.[4]
“Results” sekmesinde,hedef site üzerinde bulunan güvenlik
Enjeksiyon güvenlik açığının hangi parametrede bulunduğu detaylı şekilde verilmektedir.
Resim 4 – W3AF Hedef Site Analiz Sonuçları
II.IV. SQLMAP ile SQL Enjeksiyon Zafiyetinden Yararlanmak
SQLMAP,python dilinde yazılmış oldukça gelişmiş özelliklere sahip olan bir araçtır. Bünyesinde 5 çeşit SQL Enjeksiyon saldırı tipini barındırır. Birçok veritabanını tanır ve veritabanını indirme(dump) özelliğine de sahiptir.
SQLMAP,Backtrack 5 R3 versiyonunda
“Applications/Backtrack/Vulnerability Assessment/Web Application Assessment/Web Vulnerability Scanners/sqlmap”
sekmesi altında bulunmaktadır.Alternatif bir yol olarak backtrack konsolu çağrılıp “cd /pentest/database/sqlmap”
komutu girilerekte SQLMAP programına erişim sağlanabilir.
İlk önce taratılmak istenen site için “./sqlmap.py –u “hedef site” komutu girilir. Burada “./sqlmap.py” ile sqlmap.py dosyası çağırılır. “-u” parametresi ile hedef site
belirtilir.Hedef site olan perweb.firat.edu.tr için girilen komut örneği Resim 5’de gösterilmiştir.
Resim 5 – SQLMAP ile Hedef Site’nin Taranması
Enjeksiyon açığından yararlanılarak veritabanı türünü tespit edip Resim 6’da görüldüğü gibi konsola veritabanı veya veritabanlarını tablo halinde vermektedir.
Resim 6 – SQLMAP ile Veritabanı Çıktısı
Veritabanı ismi öğrenildikten sonra o veritabanına ait tablo isimlerini de öğrenmek gerekmektedir.
Tabloları elde etmek için “./sqlmap.py –u “hedef site” - - tables -D ilgili veritabanı” komutu kullanılmaktadır. “ - - tables” parametresi ile veritabanındaki tablo isimleri öğrenilir.
“–D” parametresi ise SQL Enjeksiyon için kullanılan veritabanını ifade eder.Komutun hedef site üzerinde uyarlanmış hali Resim 7’de gösterilmiştir.
Resim 7 – SQLMAP ile Veritabanındaki Tabloları Öğrenmek
Bu komut aktif hale getirildiğinde Resim 8’de ki çıktı elde edilir. İlgili veride 31 adet tablonun PerWebDB veritabanında barındığı belirtilmektedir.
Veritabanları içerisinde tablolar bulunur.Tabloların
içerisinde de kolonlar,kolonların içerisinde ise veriler bulunur.
Bu veriler bir web sayfasının işleyişi için son derece önemli bir rol oynamaktadır. Bu sebeple bu verileri kontrolü altında bulunduran sistem yetkilileri önemli gördükleri bu verileri belli periyotlarda yedeklerler.Resim 8’de ki çıktıda da birkaç tablonun yedeği “ydk_” kısaltmasıyla belirtilmiştir.
Hedef sistem üzerinde yetkili erişim sağlayabilmek amacıyla sistemde yetkili kullanıcıların bulunduğu tablodan
faydalanarak sistem yetkilisinin kullanıcı adı ve şifresine ulaşılıp hedef sisteme erişim sağlanacaktır.
Resim 8 – SQLMAP ile Veritabanı Tabloları
Tablolar arasında bulunan “dbo.Tsahip” tablosunun kolon isimleri öğrenilerek bu tablo altında yetkili kullanıcı adı ve şifresinin bulunup bulunmadığı incelenir.
İlgili tablonun kolon isimlerini öğrenmek için “./sqlmap.py –u “hedef site” - -columns –T tablo –D veritabani” komutu uygulanır. “- -columns” parametresiyle tablo içindeki kolon adları öğrenilir.”-T” parametresiyle de işlem yapılacak tablo belirtilir. Resim 9’da verilen komutun hedef site üzerindeki uyarlanmış hali gösterilmektedir.
Resim 9 – SQLMAP ile Tablodaki Kolonları Öğrenmek
Komut uygulandığında Resim 10’da görüldüğü şekilde bir çıktı verir. İlgili çıktıda PerWebDB veritabanında dbo.Tsahip isimli tabloda 8 adet kolon bulunduğunu rapor etmektedir.
Bu kolon isimleri “kulad,kullanici,sifre,yetki” gibi aranılan anahtar kelimeler içermektedir. Bu anahtar kelimeler bize sistemdeki yetkili kullanıcının dbo.Tsahip tablosunda kullanıcı adı ve şifresinin var olabileceğini işaret etmektedir.
Resim 10 – SQLMAP Tablo Kolonları
Varsayımın doğruluğunu kanıtlayabilmek için bu kolonlarda bulunan verileri indirmek gerekir. “./sqlmap.py –u “hedef site” - -dump –C kulad,kullanici,sifre –T dbo.Tsahip –D PerWebDB” komutu ile bu veriler bilgisayara indirilir.”-C”
parametresi verilerini çekmek istediğimiz kolonları belirtmek için kullanılır.Veriler “.csv(Comma-Separated
Variables,Virgülle Ayrılmış Veriler)” uzantısıyla kaydedilir.
Dosya “/pentest/database/sqlmap/output/hedef
site/dump/veritabanı/tablo.csv” dizinine kaydedilir.Dosyanın açılmış hali Resim 11’de gösterilmiştir(Sistem yetkilisi dışındaki yetkililerin kullanıcı adı ve şifreleri siyah çizgiyle kapatılmıştır.Sistem yetkilisinin şifresinin sadece bir kısmı siyah çizgiyle kapatılmıştır.)
Resim 11 – SQLMAP ile Verilerin Elde Edilmesi
Görüldüğü gibi birçok yetkili kişinin kullanıcı adı ve şifresi dosyada yer almaktadır. Bu yetkili kullanıcılar arasında
“fusistemynt” kullanıcı adlı hesap,sistemde en yetkili erişime sahiptir.Hesabı kullanarak sisteme erişim sağlanır.
III. SİSTEMEERİŞİM
Çeşitli aşamalar sonucunda elde edilen veriler ile sisteme giriş yapabilmek için kullanıcı giriş panelinin bulunması gerekir. Hedef site(perweb.firat.edu.tr) anasayfasında yer alan Resim 12’de görülen Kullanıcı Girişi kısmından sisteme erişim sağlanır.
Resim 12 – F.Ü Personel Bilgi Sistemi – Kullanıcı Girişi Giriş tuşuna bastıktan sonra karşımıza Resim 13’de görülen Yönetici Paneli gelmektedir.
Resim 13 – F.Ü Personel Bilgi Sistemi – Yönetici Paneli Bu panele erişen kişinin insiyatifine bağlı olarak meydana gelebilecek olaylar farklılık göstermektedir. Üniversite personellerinin akademik konumunu değiştirebilir,silebilir.Kişi Resim 14’de görülen modülden Personel Ekleme işlemi yapabilir.
Resim 14 – F.Ü Personel Bilgi Sistemi – Personel Ekleme Ya da bunun tam tersi olan mevcut olan bir personeli Resim 15’de görülen modülden Personel Silme işlemi yapabilir.
Resim 15 – F.Ü Personel Bilgi Sistemi – Personel Silme
IV. SONUÇLAR
Bu penetrasyon(sızma) testi ile bir üniversitenin kimliği olan personel bilgi sistemine sızılmıştır. İnternet teknolojisi üzerinde gelişmeler sağlandıkça kaydedilen olumlu sonuçların yanında olumsuz sonuçlarda doğacaktır.Bu olumsuz sonuçlar olarak zafiyetler gösterilebilir.Bu zafiyetlerin önüne geçebilmek ve zafiyetler sonucu ortaya çıkabilecek vahim durum senaryolarının önlenmesi amacıyla bu farkındalık projesi yapılmıştır.
TEŞEKKÜRLER
Mavituna Security şirketinden Ömer Kurt’a,bu projenin başından sonuna kadar yaptığı yardımlardan dolayı bir teşekkürü borç bilirim.
KAYNAKÇA
[1] Ö. Huzeyfe,http://blog.lifeoverip.net/2009/10/06/10-soruda- pentestpenetrasyon-testleri/
[2] http://en.wikipedia.org/wiki/BackTrack
[3] Ç. Eyüp,http://www.eyupcelik.com.tr/ceh/w3af-ile-web-sitelerinde- shell-tespiti
[4] M.Ferruh,http://ferruh.mavituna.com/sql-injection-a-giris-ve-sql- injection-nedir-oku/