May
12

Owasp ZAP (Zed Attack Proxy) ile güvenlik testleri

Yazılım güvenlik testleri dediğimizde yaşamış olduğumuz ülkede maalesef çokda önemsenmeyen veya projenin son fazında 1-2 günlük çalışma ile halledileceği düşünülen ama gerçekte bu iş için ciddi zaman ayrılması gereken bir konudur.

Çalışmış olduğum projede güvenlik testlerini yapmamız için gerekli araştırmalar yaptım. Geçmişte Hp’nin bir ürünü olan HP WebInspect Fortify kullanıldı. Bu programı kullanarak rahat bir şekilde otomatik güvenlik testlerinizi yapabiliyorsunuz. Programın her adımında ne yapmanız gerektiği, nasıl davranmanızı program size gösteriyor. Tabi bu programın bir maliyeti var ve Türkiye içinde de hatrı sayılır bütçe ayırmanız gerekiyor.

Gerek bütçe gerekse hp programı yerine alternatif olacak başka bir program araştırma gereksinimi bulundu. Araştırmalar sonucunda hem open source olması hem de kod geliştiren kitlenin yopun olması sebebiyle Owasp ZAP programı kullanmaya karar verdik. Owasp Zap’ın sayfasına gitmek için tıklayın.

Kurulumu son derece basit platform independent olması sebebiyle istediğiniz işletim sistemine kurabiliyorsunuz. Kurduktan sonra misal ben firefox ile çalıştım. Proxy ayarlarını manuel yapıp sunucu olarak localhost, port olarak da 8080 yazıyoruz. Bu Owasp ZAp programının otomatik olarak dinlediği porttur. İsterseniz Tools -> Options -> Local Proxy’den bunu değiştirebiliyorsunuz.

Programı çalıştırdığınızda sizi ilk olarak aşağıdaki ekran görüntüsü karşılamakta.

Direk atak yapmak istediğiniz linki yazarak sitenin açıklarını sizin için bulacaktır. Programın kullanışına daha fazla değinmeyeceğim. Malum Youtube olsun google amca olsun owasp zap yazdığınızda önünüze size yetecek kadar anlatım bulabileceksiniz. Ama programı önerir misiniz derseniz kesinlikle öneririm. User, session management olsun gerçekten çok başarılı bir uygulama olmuş. Ayriyeten programın add-on özelliği ile programın işlevselliğini artırabilirsiniz.

Bugün itibari ile üstünü çizdiğim aşağıdaki yazı geçerliliğini yitirdi. Viewstate bilinen bir konu ve kullanıcıların login olması konusunun düşünülmememsi imkansız. Bu konu üzerine gittim ve nihayetinde bu işin nasıl çözüleceği konusunu buldum. Zap ile gelen “Zest Script” ile bir önceki sayfada bulunan herhangi bir değişkeni parametre tanımlayarak post etme aşamasında ilgili değişkene atayabiliyorsunuz. Sağolsun Simon adım adım ne yapılması gerektiğini yazmaktadır. İlgili yazı için tıklayın.

Türkçeye çevirmeye şuan için üşendiğim için aşağıya gerekli adımların ingilizce halini kopyalıyorum.

Zest is essentially ZAPs macro language, but much more powerful.

Some pointers to get you started..

  • Perform the requests you want to make via your browser proxying them through ZAP
  • Locate and select them in the History tab, right click and “Add to Zest Script -> New Zest Script…”
  • Give it a title and click Save
  • Anti CSRF tokens _should_ be extracted and used automatically
  • For other form based tokens you need right click on the request in the script and select “Add Zest Assignment -> Assign variable to a form field…”
  • Then give it a suitable name and select the form / field you want
  • To use variable in a request double click the request to edit it, put the cursor where you want the value, right click and select “Zest paste variable -> <variable name>”
  • To fuzz a set of requests highlight them all, right click and select “Surround with -> Loop File” (assuming the fuzzing vectors are in a file) then select the file, give a loop variable a suitable name and use it as above

Programı öneririm dedim ama maalesef asp.net ve JSF olan projede çok sağlıklı çalıştığını söyleyemeyeceğim. Tabi uygulamada login olayı var ise. Çünkü viewstate’ler yüzünden kullanıcıyı login etmek için milyon takla atmanız gerekmekte oda pek sağlıklı çalıştığını söyleyemeyeceğim. Ama php, jsp vs. diğer dillerde ise projenizin bir problemle karşılaşacağınızı düşünmüyorum. En azından sorularınıza cevap bulabilirsiniz.

Simon Bennetts (@psiinon) dediğim kişi bu uygulamanın yapımcısı diyebiliriz. 🙂 Bu konuyu kendisine twitterdan sorduğumda kendisini JSF veya Asp.Net ile uygulama geliştirmediğini ve login ekranı ile ilgili maalesef yardımcı olamayacağını söyledi.

Umarım yazımın sizlere azda olsa bir yol göstereceğini düşünüyorum.

Yorum Yapın

 

Twitter'dan Takip Et! Twitter'dan Takip Et!

Etiketler

Son Yazılar

Son Yorumlar

Bağlantılar

Arşivler