Web sayfaları sızma testleri sırasında son derece faydalı
bilgiler sağlayabilir. Olası parolalar, kullanıcı adları, kurumsal projeler
hakkında bilgiler ve kuruluşun sahip olması muhtemel altalanadları ve dizinler
bunlardan yalnızca bazıları.
Bu nedenle, tıpkı bir siber saldırganın yapacağı gibi,
kuruluş internet sayfası dikkatlice incelenir. İnternet sayfasından kastettiğim
sadece sayfanın görülen kısmı değil, kaynak kodu da dahil her şeyidir.
Bu aşamada
genellikle aradıklarımız şunlar olur;
- Kuruluş sayfasından bağlantı verilen adresler: Altalanadı, dizin veya farklı alanadında yürütülen projeler gibi daha kolay hedef olabilecek sayfaların tespit edilmesini sağlayabilir.
- Sayfada geçen sektörel jargon: Altalanadı tespitinde olduğu kadar kullanıcı adı ve parola denemelerinde kullanılabilecek kelimeleri belirlemeye yardımcı olur.
- Sayfanın teknik yapısı: Kullanılan kütüphaneler veya Wordpress benzeri içerik yönetim sistemlerinde yapılan sitelerde yüklü olan eklentileri (plug-in) tespit edip bunlarda bulunabilecek zafiyetlerin de bizim için birer saldırı vektörü olarak değerlendirilmesi.
- Diğer: Geliştirme süreci hakkında veya sadece sayfaya tarayıcıda bakarak gözden kaçabilecek şeyleri görmemizi sağlayabilir.
Kaynak kodu üzerinde durmamın nedeni aslında basit;
tarayıcıda gördüğümüz haliyle internet sayfası aslında sayfanın HTML kodunun
tarayıcımız tarafından yorumlan halidir. Aynı internet sayfasına farklı
tarayıcılardan bağlanıldığında farklı şeyler görülmesinin temel nedeni de bu yorumlardır.
Aşağıda fotoğraf paylaşım sitesi Flickr’ı görebilirsiniz. Bu
sitenin Firefox tarayıcısı ile görüntülenmiş halidir.
Burada ise kaynak koduna gizlenmiş “burayı okuyorsanız,
eleman arıyoruz” yazısını görebilirsiniz.
Sonuçta burası bir yazılım şirketi ve
ihtiyaç duydukları çalışan profilinin bir miktar kaynak kodla ilgilenmesini
beklemeleri gayet doğal.
Sayfayı incelemek için yanınıza bir kağıt kalem alıp
gördüklerinizi not etmek bir seçenek olabilir. Ancak bu oldukça yavaş ve
verimsiz bir yöntem olacaktır. Onun yerine Python ile bu keşif çalışmalarını
otomatize etmek işi hızlandıracaktır.
Bunun için URLLIB ve BeautifulSoup kütüphanelerini
kullanabiliriz.
Urllib
Python ile HTTP bağlantısı kurup internet sayfasını talep
etmemizi sağlayacak, kolay kullanılan bir kütüphanedir.
Basit bir bağlantı isteği aşağıdaki gibi gönderilebilir;
Burada kullandığımız 3 satır var;
- import urllib: Urllib kütüphanesini kodumuza dahil ediyoruz.
- sayfa =urllib.urlopen("http://www.alperbasaran.com"): sayfa olarak www.alperbasaran.com adresini talep ediyoruz.
- print sayfa.code: Talebimize gönderilen yanıtı kontrol ediyoruz (200 OK sayfaya sorunsuz bir şekilde bağlanıldığını gösteriyor)
Bu noktada kodumuzun son satırı print sayfa.read() ile
değiştirip alınan cevabın görüntülenmesi sağlanabilir. Görüldüğü gibi sunucudan
alınan bilgi aslında sayfanın HTML kodudur. Evet, gördüğünüz bütün o şirintoş
animasyonlar aslında çirkin HTML kodlarından ibaret.
İkinci aşamada BeautifulSoup (güzel çorba) kütüphanesini
kullanarak hedef sayfada bulunan bağlantıları alacağız. Lütfen dikkat: Burada
verilen kod örnekte ele alınan sayfada işe yarayabilir, farklı bir sayfada
çalışmasını sağlamak için bazı ufak tefek değişiklikler yapılması gerekebilir. Ne
yapmaya çalıştığımın mantığını anlatabileceğimi umuyorum, böylece
özelleştirmeniz gerektiğinde nelerin değiştirilmesi gerektiği konusunda da bir fikriniz
olur.
Son halinde 3 kütüphaneden faydalanmış olacağız; urllib,
BeautifulSoup ve re.
Yukarıda gördüğümüz gibi Urllib internet sayfasına
ulaşmamızı, BeautifulSoup sayfanın içeriğini ayıklamamızı ve re regular expression
kullanarak ayıklama işlemini daha kolay yapmamızı sağlayacak.
Güzel çorba (gc) BeautifulSoup işlevlerini kullanmama imkan
verecek. Aslında bunun için kullandığım tek satır var “gc = BeautifulSoup(html)”
Sonrası yine oldukça basit, gc içerisinde bulduğumuz ve link
olabilecek (href HTML etiketiyle belirlenmiş) kısımları ayıklıyoruz ve ekranda
gösteriyoruz.
Kodun tamamı aşağıdaki gibidir. Kodu karmaşıklaştırmamak
için çalışınca verilen hatayı ortadan kaldırmak için gerekli argümanı eklemedim.
Sonuç; alperbasaran.com sayfasındaki bağlantıları
alabiliyoruz.
Herhangi bir uygulamayı test etmeniz gerektiğinde kaynak kodu görüntülemek için biraz zaman ayırmanın zararı olmayacaktır. Bu süreci otomatize edebilirseniz de zaman kazanırsınız.
No comments:
Post a Comment